| #
51905533 |
| 26-Jun-2018 |
Teresa Johnson <[email protected]> |
[ThinLTO] Add string saver onto index for value names
Summary: Adds a string saver to the ModuleSummaryIndex so it can store value names in the case of adding a ValueInfo for a GUID when we don't ha
[ThinLTO] Add string saver onto index for value names
Summary: Adds a string saver to the ModuleSummaryIndex so it can store value names in the case of adding a ValueInfo for a GUID when we don't have the name stored in a Module string table. This is motivated by the upcoming summary parser patch, where we will read value names from the summary entry and want to store them, even when a Module is not available.
Currently this allows us to store the name in the legacy bitcode case, and I have added a test to show that.
Reviewers: pcc, dexonsmith
Subscribers: mehdi_amini, inglorion, eraman, steven_wu, llvm-commits
Differential Revision: https://reviews.llvm.org/D47842
llvm-svn: 335570
show more ...
|
| #
9766fd64 |
| 26-Jun-2018 |
Teresa Johnson <[email protected]> |
[ThinLTO] Add per-module indexes to combined index consistently
Summary: Without this change we only add module paths to the combined index when there is a module hash or at least one global value.
[ThinLTO] Add per-module indexes to combined index consistently
Summary: Without this change we only add module paths to the combined index when there is a module hash or at least one global value. Make this more consistent by adding the module to the index whenever there is a summary section, and it is a per-module summary (had a MODULE_CODE_SOURCE_FILENAME record).
Since we will no longer add module paths lazily, add a new interface to get the module info from the index that asserts it is already added.
Fixes PR37899.
Reviewers: Vlad, pcc
Subscribers: mehdi_amini, inglorion, steven_wu, llvm-commits
Differential Revision: https://reviews.llvm.org/D48511
llvm-svn: 335567
show more ...
|
|
Revision tags: llvmorg-6.0.1, llvmorg-6.0.1-rc3 |
|
| #
4ffc3e78 |
| 06-Jun-2018 |
Teresa Johnson <[email protected]> |
[ThinLTO] Rename index IsAnalysis flag to HaveGVs (NFC)
With the upcoming patch to add summary parsing support, IsAnalysis would be true in contexts where we are not performing module summary analys
[ThinLTO] Rename index IsAnalysis flag to HaveGVs (NFC)
With the upcoming patch to add summary parsing support, IsAnalysis would be true in contexts where we are not performing module summary analysis. Rename to the more specific and approprate HaveGVs, which is essentially what this flag is indicating.
llvm-svn: 334140
show more ...
|
|
Revision tags: llvmorg-6.0.1-rc2 |
|
| #
5f8f34e4 |
| 01-May-2018 |
Adrian Prantl <[email protected]> |
Remove \brief commands from doxygen comments.
We've been running doxygen with the autobrief option for a couple of years now. This makes the \brief markers into our comments redundant. Since they ar
Remove \brief commands from doxygen comments.
We've been running doxygen with the autobrief option for a couple of years now. This makes the \brief markers into our comments redundant. Since they are a visual distraction and we don't want to encourage more \brief markers in new code either, this patch removes them all.
Patch produced by
for i in $(git grep -l '\\brief'); do perl -pi -e 's/\\brief //g' $i & done
Differential Revision: https://reviews.llvm.org/D46290
llvm-svn: 331272
show more ...
|
| #
432a3883 |
| 30-Apr-2018 |
Nico Weber <[email protected]> |
IWYU for llvm-config.h in llvm, additions.
See r331124 for how I made a list of files missing the include. I then ran this Python script:
for f in open('filelist.txt'): f = f.strip()
IWYU for llvm-config.h in llvm, additions.
See r331124 for how I made a list of files missing the include. I then ran this Python script:
for f in open('filelist.txt'): f = f.strip() fl = open(f).readlines()
found = False for i in xrange(len(fl)): p = '#include "llvm/' if not fl[i].startswith(p): continue if fl[i][len(p):] > 'Config': fl.insert(i, '#include "llvm/Config/llvm-config.h"\n') found = True break if not found: print 'not found', f else: open(f, 'w').write(''.join(fl))
and then looked through everything with `svn diff | diffstat -l | xargs -n 1000 gvim -p` and tried to fix include ordering and whatnot.
No intended behavior change.
llvm-svn: 331184
show more ...
|
|
Revision tags: llvmorg-6.0.1-rc1 |
|
| #
1c3a0783 |
| 17-Apr-2018 |
Gerolf Hoflehner <[email protected]> |
[IR] Upgrade comment token in objc retain release marker for asm call
Older compiler issued '#' instead of ';'
llvm-svn: 330173
|
| #
f41aa4fd |
| 05-Apr-2018 |
Gerolf Hoflehner <[email protected]> |
[IR] Upgrade comment token in objc retain release marker
Older compiler issued '#' instead of ';'
llvm-svn: 329248
|
| #
d17f61ea |
| 03-Apr-2018 |
Vlad Tsyrklevich <[email protected]> |
Add the ShadowCallStack attribute
Summary: Introduce the ShadowCallStack function attribute. It's added to functions compiled with -fsanitize=shadow-call-stack in order to mark functions to be instr
Add the ShadowCallStack attribute
Summary: Introduce the ShadowCallStack function attribute. It's added to functions compiled with -fsanitize=shadow-call-stack in order to mark functions to be instrumented by a ShadowCallStack pass to be submitted in a separate change.
Reviewers: pcc, kcc, kubamracek
Reviewed By: pcc, kcc
Subscribers: cryptoad, mehdi_amini, javed.absar, llvm-commits, kcc
Differential Revision: https://reviews.llvm.org/D44800
llvm-svn: 329108
show more ...
|
|
Revision tags: llvmorg-5.0.2, llvmorg-5.0.2-rc2 |
|
| #
236cdaf8 |
| 22-Mar-2018 |
Matt Morehouse <[email protected]> |
[SimplifyCFG] Create attribute for fuzzing-specific optimizations.
Summary: When building with libFuzzer, converting control flow to selects or obscuring the original operands of CMPs reduces the ef
[SimplifyCFG] Create attribute for fuzzing-specific optimizations.
Summary: When building with libFuzzer, converting control flow to selects or obscuring the original operands of CMPs reduces the effectiveness of libFuzzer's heuristics.
This patch provides an attribute to disable or modify certain optimizations for optimal fuzzing signal.
Provides a less aggressive alternative to https://reviews.llvm.org/D44057.
Reviewers: vitalybuka, davide, arsenm, hfinkel
Reviewed By: vitalybuka
Subscribers: junbuml, mehdi_amini, wdng, javed.absar, hiraditya, llvm-commits, kcc
Differential Revision: https://reviews.llvm.org/D44232
llvm-svn: 328214
show more ...
|
| #
fdd72fd5 |
| 17-Mar-2018 |
Oren Ben Simhon <[email protected]> |
[X86] Added support for nocf_check attribute for indirect Branch Tracking
X86 Supports Indirect Branch Tracking (IBT) as part of Control-Flow Enforcement Technology (CET). IBT instruments ENDBR inst
[X86] Added support for nocf_check attribute for indirect Branch Tracking
X86 Supports Indirect Branch Tracking (IBT) as part of Control-Flow Enforcement Technology (CET). IBT instruments ENDBR instructions used to specify valid targets of indirect call / jmp. The `nocf_check` attribute has two roles in the context of X86 IBT technology: 1. Appertains to a function - do not add ENDBR instruction at the beginning of the function. 2. Appertains to a function pointer - do not track the target function of this pointer by adding nocf_check prefix to the indirect-call instruction.
This patch implements `nocf_check` context for Indirect Branch Tracking. It also auto generates `nocf_check` prefixes before indirect branchs to jump tables that are guarded by range checks.
Differential Revision: https://reviews.llvm.org/D41879
llvm-svn: 327767
show more ...
|
|
Revision tags: llvmorg-5.0.2-rc1, llvmorg-6.0.0, llvmorg-6.0.0-rc3 |
|
| #
545d34a2 |
| 19-Feb-2018 |
Steven Wu <[email protected]> |
bitcode support change for fast flags compatibility
Summary: The discussion and as per need, each vendor needs a way to keep the old fast flags and the new fast flags in the auto upgrade path of the
bitcode support change for fast flags compatibility
Summary: The discussion and as per need, each vendor needs a way to keep the old fast flags and the new fast flags in the auto upgrade path of the IR upgrader. This revision addresses that issue.
Patched by Michael Berg
Reviewers: qcolombet, hans, steven_wu
Reviewed By: qcolombet, steven_wu
Subscribers: dexonsmith, vsk, mehdi_amini, andrewrk, MatzeB, wristow, spatel
Differential Revision: https://reviews.llvm.org/D43253
llvm-svn: 325525
show more ...
|
| #
769134da |
| 16-Feb-2018 |
Vitaly Buka <[email protected]> |
[ThinLTO] Allow indexing to request backend to ignore the module
Summary: Gold plugin does not add pass to ThinLTO modules without useful symbols. In this case ThinLTO can't create corresponding ind
[ThinLTO] Allow indexing to request backend to ignore the module
Summary: Gold plugin does not add pass to ThinLTO modules without useful symbols. In this case ThinLTO can't create corresponding index file and some features, like CFI, cannot be processes by backed correctly without index. Given that we don't need the backed output we can request it to avoid processing the module. This is implemented by this patch using new "SkipModuleByDistributedBackend" flag.
Reviewers: pcc, tejohnson
Subscribers: mehdi_amini, inglorion, eraman, cfe-commits
Differential Revision: https://reviews.llvm.org/D42995
llvm-svn: 325411
show more ...
|
| #
44396faa |
| 14-Feb-2018 |
Vitaly Buka <[email protected]> |
[ThinLTO/CFI] Include TYPE_ID summaries into GLOBALVAL_SUMMARY_BLOCK
Summary: TypeID summaries are used by CFI and need to be serialized by ThinLTO indexing for later use by LTO Backend.
Reviewers:
[ThinLTO/CFI] Include TYPE_ID summaries into GLOBALVAL_SUMMARY_BLOCK
Summary: TypeID summaries are used by CFI and need to be serialized by ThinLTO indexing for later use by LTO Backend.
Reviewers: tejohnson, pcc
Subscribers: mehdi_amini, inglorion, eraman, hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D42611
llvm-svn: 325182
show more ...
|
|
Revision tags: llvmorg-6.0.0-rc2 |
|
| #
f3681015 |
| 07-Feb-2018 |
Teresa Johnson <[email protected]> |
[ThinLTO] Serialize WithGlobalValueDeadStripping index flag for distributed backends
Summary: A recent fix to drop dead symbols (r323633) did not work for ThinLTO distributed backends because we los
[ThinLTO] Serialize WithGlobalValueDeadStripping index flag for distributed backends
Summary: A recent fix to drop dead symbols (r323633) did not work for ThinLTO distributed backends because we lose the WithGlobalValueDeadStripping set on the index during the thin link. This patch adds a new flags record to the bitcode format for the index, and serializes this flag for the combined index (it would always be 0 for the per-module index generated by the compile step, so no need to serialize the new flags record there until/unless we add another flag that applies to the per-module indexes).
Generally this flag should always be set for the distributed backends, which are necessarily performed after the thin link. However, if we were to simply set this flag on the index applied to the distributed backends (invoked via clang), we would lose the ability to disable dead stripping via -compute-dead=false for debugging purposes.
Reviewers: grimar, pcc
Subscribers: mehdi_amini, inglorion, eraman, llvm-commits
Differential Revision: https://reviews.llvm.org/D42799
llvm-svn: 324444
show more ...
|
| #
c73cec84 |
| 25-Jan-2018 |
Easwaran Raman <[email protected]> |
Re-land "[ThinLTO] Add call edges' relative block frequency to per-module summary."
It was reverted after buildbot regressions.
Original commit message:
This allows relative block frequency of cal
Re-land "[ThinLTO] Add call edges' relative block frequency to per-module summary."
It was reverted after buildbot regressions.
Original commit message:
This allows relative block frequency of call edges to be passed to the thinlink stage where it will be used to compute synthetic entry counts of functions.
llvm-svn: 323460
show more ...
|
| #
bf38deef |
| 24-Jan-2018 |
Easwaran Raman <[email protected]> |
Revert "[ThinLTO] Add call edges' relative block frequency to per-module summary."
Causes buildbot regressions.
llvm-svn: 323358
|
| #
5f7aff9a |
| 24-Jan-2018 |
Easwaran Raman <[email protected]> |
[ThinLTO] Add call edges' relative block frequency to per-module summary.
Summary: This allows relative block frequency of call edges to be passed to the thinlink stage where it will be used to comp
[ThinLTO] Add call edges' relative block frequency to per-module summary.
Summary: This allows relative block frequency of call edges to be passed to the thinlink stage where it will be used to compute synthetic entry counts of functions.
Reviewers: tejohnson, pcc
Subscribers: mehdi_amini, llvm-commits, inglorion
Differential Revision: https://reviews.llvm.org/D42212
llvm-svn: 323349
show more ...
|
| #
28d8a49f |
| 22-Jan-2018 |
Eugene Leviant <[email protected]> |
[ThinLTO] Re-commit of dot dumper after test fix
llvm-svn: 323116
|
| #
72b9bdb7 |
| 21-Jan-2018 |
Eugene Leviant <[email protected]> |
Temporarily revert r323062 to investigate buildbot failures
llvm-svn: 323065
|
| #
453c976a |
| 21-Jan-2018 |
Eugene Leviant <[email protected]> |
[ThinLTO] Implement summary visualizer
Differential revision: https://reviews.llvm.org/D41297
llvm-svn: 323062
|
|
Revision tags: llvmorg-6.0.0-rc1 |
|
| #
3b9843f0 |
| 12-Jan-2018 |
Rafael Espindola <[email protected]> |
Allow dso_local on ifunc.
It was never fully disallowed. We were rejecting it in the asm parser, but not in the verifier.
Currently TargetMachine::shouldAssumeDSOLocal returns true for hidden ifunc
Allow dso_local on ifunc.
It was never fully disallowed. We were rejecting it in the asm parser, but not in the verifier.
Currently TargetMachine::shouldAssumeDSOLocal returns true for hidden ifuncs. I considered changing it and moving the check from the asm parser to the verifier.
The reason for deciding to allow it instead is that all linkers handle a direct reference just fine. They use the plt address as the address of the function. In fact doing that means that clang doesn't have the same bug as gcc: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83782.
This patch then removes the check from the asm parser and updates the bitcode reader and writer.
llvm-svn: 322378
show more ...
|
| #
81bbf742 |
| 16-Dec-2017 |
Teresa Johnson <[email protected]> |
[ThinLTO] Enable importing of aliases as copy of aliasee
Summary: This implements a missing feature to allow importing of aliases, which was previously disabled because alias cannot be available_ext
[ThinLTO] Enable importing of aliases as copy of aliasee
Summary: This implements a missing feature to allow importing of aliases, which was previously disabled because alias cannot be available_externally. We instead import an alias as a copy of its aliasee.
Some additional work was required in the IndexBitcodeWriter for the distributed build case, to ensure that the aliasee has a value id in the distributed index file (i.e. even when it is not being imported directly).
This is a performance win in codes that have many aliases, e.g. C++ applications that have many constructor and destructor aliases.
Reviewers: pcc
Subscribers: mehdi_amini, inglorion, eraman, llvm-commits
Differential Revision: https://reviews.llvm.org/D40747
llvm-svn: 320895
show more ...
|
| #
c667c1f4 |
| 09-Dec-2017 |
Evgeniy Stepanov <[email protected]> |
Hardware-assisted AddressSanitizer (llvm part).
Summary: This is LLVM instrumentation for the new HWASan tool. It is basically a stripped down copy of ASan at this point, w/o stack or global support
Hardware-assisted AddressSanitizer (llvm part).
Summary: This is LLVM instrumentation for the new HWASan tool. It is basically a stripped down copy of ASan at this point, w/o stack or global support. Instrumenation adds a global constructor + runtime callbacks for every load and store.
HWASan comes with its own IR attribute.
A brief design document can be found in clang/docs/HardwareAssistedAddressSanitizerDesign.rst (submitted earlier).
Reviewers: kcc, pcc, alekseyshl
Subscribers: srhines, mehdi_amini, mgorny, javed.absar, eraman, llvm-commits, hiraditya
Differential Revision: https://reviews.llvm.org/D40932
llvm-svn: 320217
show more ...
|
|
Revision tags: llvmorg-5.0.1, llvmorg-5.0.1-rc3, llvmorg-5.0.1-rc2 |
|
| #
99966076 |
| 14-Nov-2017 |
Sam Clegg <[email protected]> |
[WebAssembly] Explicily disable comdat support for wasm output
For now at least. We clearly need some kind of comdat or linkonce_odr support for wasm but currently COMDAT is not supported.
Disable
[WebAssembly] Explicily disable comdat support for wasm output
For now at least. We clearly need some kind of comdat or linkonce_odr support for wasm but currently COMDAT is not supported.
Disable COMDAT support in the same way we do the Mach-O. This also causes clang not to generated COMDATs.
Differential Revision: https://reviews.llvm.org/D39873
llvm-svn: 318123
show more ...
|
| #
629c4115 |
| 06-Nov-2017 |
Sanjay Patel <[email protected]> |
[IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag
As discussed on llvm-dev: http://lists.llvm.org/pipermail/llvm-dev/2016-November/107104.html and again more r
[IR] redefine 'UnsafeAlgebra' / 'reassoc' fast-math-flags and add 'trans' fast-math-flag
As discussed on llvm-dev: http://lists.llvm.org/pipermail/llvm-dev/2016-November/107104.html and again more recently: http://lists.llvm.org/pipermail/llvm-dev/2017-October/118118.html
...this is a step in cleaning up our fast-math-flags implementation in IR to better match the capabilities of both clang's user-visible flags and the backend's flags for SDNode.
As proposed in the above threads, we're replacing the 'UnsafeAlgebra' bit (which had the 'umbrella' meaning that all flags are set) with a new bit that only applies to algebraic reassociation - 'AllowReassoc'.
We're also adding a bit to allow approximations for library functions called 'ApproxFunc' (this was initially proposed as 'libm' or similar).
...and we're out of bits. 7 bits ought to be enough for anyone, right? :) FWIW, I did look at getting this out of SubclassOptionalData via SubclassData (spacious 16-bits), but that's apparently already used for other purposes. Also, I don't think we can just add a field to FPMathOperator because Operator is not intended to be instantiated. We'll defer movement of FMF to another day.
We keep the 'fast' keyword. I thought about removing that, but seeing IR like this: %f.fast = fadd reassoc nnan ninf nsz arcp contract afn float %op1, %op2 ...made me think we want to keep the shortcut synonym.
Finally, this change is binary incompatible with existing IR as seen in the compatibility tests. This statement: "Newer releases can ignore features from older releases, but they cannot miscompile them. For example, if nsw is ever replaced with something else, dropping it would be a valid way to upgrade the IR." ( http://llvm.org/docs/DeveloperPolicy.html#ir-backwards-compatibility ) ...provides the flexibility we want to make this change without requiring a new IR version. Ie, we're not loosening the FP strictness of existing IR. At worst, we will fail to optimize some previously 'fast' code because it's no longer recognized as 'fast'. This should get fixed as we audit/squash all of the uses of 'isFast()'.
Note: an inter-dependent clang commit to use the new API name should closely follow commit.
Differential Revision: https://reviews.llvm.org/D39304
llvm-svn: 317488
show more ...
|