| #
9b36a9c8 |
| 23-Oct-2018 |
Richard Trieu <[email protected]> |
[CodeGen] Attach InlineHint to more functions
For instantiated functions, search the template pattern to see if it marked inline to determine if InlineHint attribute should be added to the function.
[CodeGen] Attach InlineHint to more functions
For instantiated functions, search the template pattern to see if it marked inline to determine if InlineHint attribute should be added to the function.
llvm-svn: 344987
show more ...
|
| #
7ef210d0 |
| 22-Oct-2018 |
Erich Keane <[email protected]> |
Give Multiversion-inline functions linkonce linkage
Since multiversion variant functions can be inline, in C they become available-externally linkage. This ends up causing the variants to not be em
Give Multiversion-inline functions linkonce linkage
Since multiversion variant functions can be inline, in C they become available-externally linkage. This ends up causing the variants to not be emitted, and not available to the linker.
The solution is to make sure that multiversion functions are always emitted by marking them linkonce.
Change-Id: I897aa37c7cbba0c1eb2c57ee881d5000a2113b75 llvm-svn: 344957
show more ...
|
| #
8aa53700 |
| 17-Oct-2018 |
Takuto Ikuta <[email protected]> |
NFC: Remove trailing space from CodeGenModule.cpp
llvm-svn: 344668
|
| #
8654ae52 |
| 10-Oct-2018 |
Richard Smith <[email protected]> |
Add a flag to remap manglings when reading profile data information.
This can be used to preserve profiling information across codebase changes that have widespread impact on mangled names, but acro
Add a flag to remap manglings when reading profile data information.
This can be used to preserve profiling information across codebase changes that have widespread impact on mangled names, but across which most profiling data should still be usable. For example, when switching from libstdc++ to libc++, or from the old libstdc++ ABI to the new ABI, or even from a 32-bit to a 64-bit build.
The user can provide a remapping file specifying parts of mangled names that should be treated as equivalent (eg, std::__1 should be treated as equivalent to std::__cxx11), and profile data will be treated as applying to a particular function if its name is equivalent to the name of a function in the profile data under the provided equivalences. See the documentation change for a description of how this is configured.
Remapping is supported for both sample-based profiling and instruction profiling. We do not support remapping indirect branch target information, but all other profile data should be remapped appropriately.
Support is only added for the new pass manager. If someone wants to also add support for this for the old pass manager, doing so should be straightforward.
llvm-svn: 344199
show more ...
|
| #
8bddfdd5 |
| 10-Oct-2018 |
Ed Maste <[email protected]> |
clang: Allow ifunc resolvers to accept arguments
When ifunc support was added to Clang (r265917) it did not allow resolvers to take function arguments. This was based on GCC's documentation, which
clang: Allow ifunc resolvers to accept arguments
When ifunc support was added to Clang (r265917) it did not allow resolvers to take function arguments. This was based on GCC's documentation, which states resolvers return a pointer and take no arguments.
However, GCC actually allows resolvers to take arguments, and glibc (on non-x86 platforms) and FreeBSD (on x86 and arm64) pass some CPU identification information as arguments to ifunc resolvers. I believe GCC's documentation is simply incorrect / out-of-date.
FreeBSD already removed the prohibition in their in-tree Clang copy.
Differential Revision: https://reviews.llvm.org/D52703
llvm-svn: 344100
show more ...
|
| #
1d38c13f |
| 30-Sep-2018 |
Fangrui Song <[email protected]> |
Use the container form llvm::sort(C, ...)
There are a few leftovers of rC343147 that are not (\w+)\.begin but in the form of ([-[:alnum:]>.]+)\.begin or spanning two lines. Change them to use the co
Use the container form llvm::sort(C, ...)
There are a few leftovers of rC343147 that are not (\w+)\.begin but in the form of ([-[:alnum:]>.]+)\.begin or spanning two lines. Change them to use the container form in this commit. The 12 occurrences have been inspected manually for safety.
llvm-svn: 343425
show more ...
|
| #
55fab260 |
| 26-Sep-2018 |
Fangrui Song <[email protected]> |
llvm::sort(C.begin(), C.end(), ...) -> llvm::sort(C, ...)
Summary: The convenience wrapper in STLExtras is available since rL342102.
Reviewers: rsmith, #clang, dblaikie
Reviewed By: rsmith, #clang
llvm::sort(C.begin(), C.end(), ...) -> llvm::sort(C, ...)
Summary: The convenience wrapper in STLExtras is available since rL342102.
Reviewers: rsmith, #clang, dblaikie
Reviewed By: rsmith, #clang
Subscribers: mgrang, arphaman, kadircet, cfe-commits
Differential Revision: https://reviews.llvm.org/D52576
llvm-svn: 343147
show more ...
|
| #
1408f91a |
| 26-Sep-2018 |
Kelvin Li <[email protected]> |
[OPENMP] Add support for OMP5 requires directive + unified_address clause
Add support for OMP5.0 requires directive and unified_address clause. Patches to follow will include support for additional
[OPENMP] Add support for OMP5 requires directive + unified_address clause
Add support for OMP5.0 requires directive and unified_address clause. Patches to follow will include support for additional clauses.
Differential Revision: https://reviews.llvm.org/D52359
llvm-svn: 343063
show more ...
|
| #
34e24d5b |
| 25-Sep-2018 |
Kristina Brooks <[email protected]> |
Reland "[Clang][CodeGen][ObjC]: Fix CoreFoundation on ELF with `-fconstant-cfstrings`"
Relanding rL342883 with more fragmented tests to test ELF-specific section emission separately from broad-scope
Reland "[Clang][CodeGen][ObjC]: Fix CoreFoundation on ELF with `-fconstant-cfstrings`"
Relanding rL342883 with more fragmented tests to test ELF-specific section emission separately from broad-scope CFString tests. Now this tests the following separately
1). CoreFoundation builds and linkage for ELF while building it. 2). CFString ELF section emission outside CF in assembly output. 3). Broad scope `cfstring3.c` tests which cover all object formats at bitcode level and assembly level (including ELF).
This fixes non-bridged CoreFoundation builds on ELF targets that use -fconstant-cfstrings. The original changes from differential for a similar patch to PE/COFF (https://reviews.llvm.org/D44491) did not check for an edge case where the global could be a constant which surfaced as an issue when building for ELF because of different linkage semantics.
This patch addresses several issues with crashes related to CF builds on ELF as well as improves data layout by ensuring string literals that back the actual CFConstStrings end up in .rodata in line with Mach-O.
Change itself tested with CoreFoundation on Linux x86_64 but should be valid for BSD-like systems as well that use ELF as the native object format.
Differential Revision: https://reviews.llvm.org/D52344
llvm-svn: 343038
show more ...
|
| #
a6398cdc |
| 24-Sep-2018 |
Kristina Brooks <[email protected]> |
Revert "rL342883: [Clang][CodeGen][ObjC]: Fix CoreFoundation on ELF with `-fconstant-cfstrings`."
Seems to be causing buildbot failures, need to look into it.
llvm-svn: 342893
|
| #
7c142a52 |
| 24-Sep-2018 |
Kristina Brooks <[email protected]> |
[Clang][CodeGen][ObjC]: Fix CoreFoundation on ELF with `-fconstant-cfstrings`.
[Clang][CodeGen][ObjC]: Fix non-bridged CoreFoundation builds on ELF targets that use `-fconstant-cfstrings`. The origi
[Clang][CodeGen][ObjC]: Fix CoreFoundation on ELF with `-fconstant-cfstrings`.
[Clang][CodeGen][ObjC]: Fix non-bridged CoreFoundation builds on ELF targets that use `-fconstant-cfstrings`. The original changes from differential for a similar patch to PE/COFF (https://reviews.llvm.org/D44491) did not check for an edge case where the global could be a constant which surfaced as an issue when building for ELF because of different linkage semantics.
This patch addresses several issues with crashes related to CF builds on ELF as well as improves data layout by ensuring string literals that back the actual CFConstStrings end up in .rodata in line with Mach-O.
Change itself tested with CoreFoundation on Linux x86_64 but should be valid for BSD-like systems as well that use ELF as the native object format.
Differential Revision: https://reviews.llvm.org/D52344
llvm-svn: 342883
show more ...
|
| #
62279730 |
| 21-Sep-2018 |
Caroline Tice <[email protected]> |
Add necessary support for storing code-model to module IR.
Currently the code-model does not get saved in the module IR, so if a code model is specified when compiling with LTO, it gets lost and is
Add necessary support for storing code-model to module IR.
Currently the code-model does not get saved in the module IR, so if a code model is specified when compiling with LTO, it gets lost and is not propagated properly to LTO. This patch does what is necessary in the front end to pass the code-model to the module, so that the back end can store it in the Module .
Differential Revision: https://reviews.llvm.org/D52323
llvm-svn: 342758
show more ...
|
| #
05cf4434 |
| 14-Sep-2018 |
Dean Michael Berris <[email protected]> |
[XRay][clang] Emit "never-instrument" attribute
Summary: Before this change, we only emit the XRay attributes in LLVM IR when the -fxray-instrument flag is provided. This may cause issues with thinl
[XRay][clang] Emit "never-instrument" attribute
Summary: Before this change, we only emit the XRay attributes in LLVM IR when the -fxray-instrument flag is provided. This may cause issues with thinlto when the final binary is being built/linked with -fxray-instrument, and the constitutent LLVM IR gets re-lowered with xray instrumentation.
With this change, we can honour the "never-instrument "attributes provided in the source code and preserve those in the IR. This way, even in thinlto builds, we retain the attributes which say whether functions should never be XRay instrumented.
This change addresses llvm.org/PR38922.
Reviewers: mboerger, eizan
Subscribers: mehdi_amini, dexonsmith, cfe-commits, llvm-commits
Differential Revision: https://reviews.llvm.org/D52015
llvm-svn: 342200
show more ...
|
|
Revision tags: llvmorg-7.0.0 |
|
| #
f353ae18 |
| 13-Sep-2018 |
Erich Keane <[email protected]> |
[NFC]Refactor MultiVersion Resolver Emission to combine types
Previously, both types (plus the future target-clones) of multiversioning had a separate ResolverOption structure and emission function.
[NFC]Refactor MultiVersion Resolver Emission to combine types
Previously, both types (plus the future target-clones) of multiversioning had a separate ResolverOption structure and emission function. This patch combines the two, at the expense of a slightly more expensive sorting function.
llvm-svn: 342152
show more ...
|
| #
be0c5b6d |
| 12-Sep-2018 |
David Green <[email protected]> |
[CodeGen] Align rtti and vtable data
Previously the alignment on the newly created rtti/typeinfo data was largely not set, meaning that DataLayout::getPreferredAlignment was free to overalign it to
[CodeGen] Align rtti and vtable data
Previously the alignment on the newly created rtti/typeinfo data was largely not set, meaning that DataLayout::getPreferredAlignment was free to overalign it to 16 bytes. This causes unnecessary code bloat.
Differential Revision: https://reviews.llvm.org/D51416
llvm-svn: 342053
show more ...
|
|
Revision tags: llvmorg-7.0.0-rc3 |
|
| #
7a368968 |
| 06-Sep-2018 |
Reid Kleckner <[email protected]> |
Re-land r334417 "[MS] Use mangled names and comdats for string merging with ASan"
The issue with -fprofile-generate was fixed and the dependent CL relanded in r340232.
llvm-svn: 341572
|
| #
bd8ff9bd |
| 30-Aug-2018 |
Alexey Bataev <[email protected]> |
[OPENMP] Fix PR38710: static functions are not emitted as implicitly 'declare target'.
All the functions, referenced in implicit|explicit target regions must be emitted during code emission for the
[OPENMP] Fix PR38710: static functions are not emitted as implicitly 'declare target'.
All the functions, referenced in implicit|explicit target regions must be emitted during code emission for the device.
llvm-svn: 341093
show more ...
|
| #
5ff7a8e6 |
| 29-Aug-2018 |
Martin Storsjo <[email protected]> |
[MinGW] Don't mark external variables as DSO local
Since MinGW supports automatically importing external variables from DLLs even without the DLLImport attribute, we shouldn't mark them as DSO local
[MinGW] Don't mark external variables as DSO local
Since MinGW supports automatically importing external variables from DLLs even without the DLLImport attribute, we shouldn't mark them as DSO local unless we actually know them to be local for sure.
Keep marking thread local variables as DSO local.
Differential Revision: https://reviews.llvm.org/D51382
llvm-svn: 340941
show more ...
|
| #
6593df24 |
| 22-Aug-2018 |
Elizabeth Andrews <[email protected]> |
Currently clang does not emit unused static constants. GCC emits these constants by default when there is no optimization.
GCC's option -fno-keep-static-consts can be used to not emit unused static
Currently clang does not emit unused static constants. GCC emits these constants by default when there is no optimization.
GCC's option -fno-keep-static-consts can be used to not emit unused static constants.
In Clang, since default behavior does not keep unused static constants, -fkeep-static-consts can be used to emit these if required. This could be useful for producing identification strings like SVN identifiers inside the object file even though the string isn't used by the program.
Differential Revision: https://reviews.llvm.org/D40925
llvm-svn: 340439
show more ...
|
|
Revision tags: llvmorg-7.0.0-rc2 |
|
| #
7f792cab |
| 20-Aug-2018 |
Alexey Bataev <[email protected]> |
[OPENMP] Fix crash on the emission of the weak function declaration.
If the function is actually a weak reference, it should not be marked as deferred definition as this is only a declaration. Patch
[OPENMP] Fix crash on the emission of the weak function declaration.
If the function is actually a weak reference, it should not be marked as deferred definition as this is only a declaration. Patch adds checks for the definitions if they must be emitted. Otherwise, only declaration is emitted.
llvm-svn: 340191
show more ...
|
| #
d01b7497 |
| 15-Aug-2018 |
Alexey Bataev <[email protected]> |
[OPENMP] FIx processing of declare target variables.
The compiler may produce unexpected error messages/crashes when declare target variables were used. Patch fixes problems with the declarations ma
[OPENMP] FIx processing of declare target variables.
The compiler may produce unexpected error messages/crashes when declare target variables were used. Patch fixes problems with the declarations marked as declare target to or link.
llvm-svn: 339805
show more ...
|
| #
a912e3e6 |
| 10-Aug-2018 |
Hans Wennborg <[email protected]> |
clang-cl: Support /guard:cf,nochecks
This extension emits the guard cf table without inserting the instrumentation. Currently that's what clang-cl does with /guard:cf anyway, but this allows a user
clang-cl: Support /guard:cf,nochecks
This extension emits the guard cf table without inserting the instrumentation. Currently that's what clang-cl does with /guard:cf anyway, but this allows a user to request that explicitly.
Differential Revision: https://reviews.llvm.org/D50513
llvm-svn: 339420
show more ...
|
| #
f2ceec48 |
| 09-Aug-2018 |
Stephen Kelly <[email protected]> |
Port getLocStart -> getBeginLoc
Reviewers: teemperor!
Subscribers: jholewinski, whisperity, jfb, cfe-commits
Differential Revision: https://reviews.llvm.org/D50350
llvm-svn: 339385
|
| #
bf8fe71b |
| 07-Aug-2018 |
Alexey Bataev <[email protected]> |
[OPENMP] Mark variables captured in declare target region as implicitly declare target.
According to OpenMP 5.0, variables captured in lambdas in declare target regions must be considered as implici
[OPENMP] Mark variables captured in declare target region as implicitly declare target.
According to OpenMP 5.0, variables captured in lambdas in declare target regions must be considered as implicitly declare target.
llvm-svn: 339152
show more ...
|
|
Revision tags: llvmorg-7.0.0-rc1 |
|
| #
6907ce2f |
| 30-Jul-2018 |
Fangrui Song <[email protected]> |
Remove trailing space
sed -Ei 's/[[:space:]]+$//' include/**/*.{def,h,td} lib/**/*.{cpp,h}
llvm-svn: 338291
|