Revision tags: llvmorg-7.0.0, llvmorg-7.0.0-rc3 |
|
#
664aa868 |
| 04-Sep-2018 |
Chandler Carruth <chandlerc@gmail.com> |
[x86/SLH] Add a real Clang flag and LLVM IR attribute for Speculative Load Hardening.
Wires up the existing pass to work with a proper IR attribute rather than just a hidden/internal flag. The inter
[x86/SLH] Add a real Clang flag and LLVM IR attribute for Speculative Load Hardening.
Wires up the existing pass to work with a proper IR attribute rather than just a hidden/internal flag. The internal flag continues to work for now, but I'll likely remove it soon.
Most of the churn here is adding the IR attribute. I talked about this Kristof Beyls and he seemed at least initially OK with this direction. The idea of using a full attribute here is that we *do* expect at least some forms of this for other architectures. There isn't anything *inherently* x86-specific about this technique, just that we only have an implementation for x86 at the moment.
While we could potentially expose this as a Clang-level attribute as well, that seems like a good question to defer for the moment as it isn't 100% clear whether that or some other programmer interface (or both?) would be best. We'll defer the programmer interface side of this for now, but at least get to the point where the feature can be enabled without relying on implementation details.
This also allows us to do something that was really hard before: we can enable *just* the indirect call retpolines when using SLH. For x86, we don't have any other way to mitigate indirect calls. Other architectures may take a different approach of course, and none of this is surfaced to user-level flags.
Differential Revision: https://reviews.llvm.org/D51157
llvm-svn: 341363
show more ...
|
#
9ae926b9 |
| 26-Aug-2018 |
Chandler Carruth <chandlerc@gmail.com> |
[IR] Replace `isa<TerminatorInst>` with `isTerminator()`.
This is a bit awkward in a handful of places where we didn't even have an instruction and now we have to see if we can build one. But on the
[IR] Replace `isa<TerminatorInst>` with `isTerminator()`.
This is a bit awkward in a handful of places where we didn't even have an instruction and now we have to see if we can build one. But on the whole, this seems like a win and at worst a reasonable cost for removing `TerminatorInst`.
All of this is part of the removal of `TerminatorInst` from the `Instruction` type hierarchy.
llvm-svn: 340701
show more ...
|
#
6bcf2ba2 |
| 23-Aug-2018 |
Alexander Richardson <arichardson.kde@gmail.com> |
Allow creating llvm::Function in non-zero address spaces
Most users won't have to worry about this as all of the 'getOrInsertFunction' functions on Module will default to the program address space.
Allow creating llvm::Function in non-zero address spaces
Most users won't have to worry about this as all of the 'getOrInsertFunction' functions on Module will default to the program address space.
An overload has been added to Function::Create to abstract away the details for most callers.
This is based on https://reviews.llvm.org/D37054 but without the changes to make passing a Module to Function::Create() mandatory. I have also added some more tests and fixed the LLParser to accept call instructions for types in the program address space.
Reviewed By: bjope
Differential Revision: https://reviews.llvm.org/D47541
llvm-svn: 340519
show more ...
|
Revision tags: llvmorg-7.0.0-rc2, llvmorg-7.0.0-rc1 |
|
#
e1f7c5f8 |
| 09-Jul-2018 |
Steven Wu <stevenwu@apple.com> |
[BitcodeReader] Infer the correct runtime preemption for GlobalValue
Summary: To allow bitcode built by old compiler to pass the current verifer, BitcodeReader needs to auto infer the correct runtim
[BitcodeReader] Infer the correct runtime preemption for GlobalValue
Summary: To allow bitcode built by old compiler to pass the current verifer, BitcodeReader needs to auto infer the correct runtime preemption from linkage and visibility for GlobalValues.
Since llvm-6.0 bitcode already contains the new field but can be incorrect in some cases, the attribute needs to be recomputed all the time in BitcodeReader. This will make all the GVs has dso_local marked correctly if read from bitcode, and it should still allow the verifier to catch mistakes in optimization passes.
This should fix PR38009.
Reviewers: sfertile, vsk
Reviewed By: vsk
Subscribers: dexonsmith, llvm-commits
Differential Revision: https://reviews.llvm.org/D49039
llvm-svn: 336560
show more ...
|
#
51905533 |
| 26-Jun-2018 |
Teresa Johnson <tejohnson@google.com> |
[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 <tejohnson@google.com> |
[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 <tejohnson@google.com> |
[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 <aprantl@apple.com> |
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 <nicolasweber@gmx.de> |
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 <ghoflehner@apple.com> |
[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 <ghoflehner@apple.com> |
[IR] Upgrade comment token in objc retain release marker
Older compiler issued '#' instead of ';'
llvm-svn: 329248
|
#
d17f61ea |
| 03-Apr-2018 |
Vlad Tsyrklevich <vlad@tsyrklevich.net> |
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 <mascasa@google.com> |
[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 <oren.ben.simhon@intel.com> |
[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 <stevenwu@apple.com> |
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 <vitalybuka@google.com> |
[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 <vitalybuka@google.com> |
[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 <tejohnson@google.com> |
[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 <eraman@google.com> |
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 <eraman@google.com> |
Revert "[ThinLTO] Add call edges' relative block frequency to per-module summary."
Causes buildbot regressions.
llvm-svn: 323358
|
#
5f7aff9a |
| 24-Jan-2018 |
Easwaran Raman <eraman@google.com> |
[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 <eleviant@accesssoftek.com> |
[ThinLTO] Re-commit of dot dumper after test fix
llvm-svn: 323116
|
#
72b9bdb7 |
| 21-Jan-2018 |
Eugene Leviant <eleviant@accesssoftek.com> |
Temporarily revert r323062 to investigate buildbot failures
llvm-svn: 323065
|
#
453c976a |
| 21-Jan-2018 |
Eugene Leviant <eleviant@accesssoftek.com> |
[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 <rafael.espindola@gmail.com> |
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 ...
|