| #
5179eb78 |
| 28-Jun-2016 |
Richard Smith <[email protected]> |
P0136R1, DR1573, DR1645, DR1715, DR1736, DR1903, DR1941, DR1959, DR1991:
Replace inheriting constructors implementation with new approach, voted into C++ last year as a DR against C++11.
Instead of
P0136R1, DR1573, DR1645, DR1715, DR1736, DR1903, DR1941, DR1959, DR1991:
Replace inheriting constructors implementation with new approach, voted into C++ last year as a DR against C++11.
Instead of synthesizing a set of derived class constructors for each inherited base class constructor, we make the constructors of the base class visible to constructor lookup in the derived class, using the normal rules for using-declarations.
For constructors, UsingShadowDecl now has a ConstructorUsingShadowDecl derived class that tracks the requisite additional information. We create shadow constructors (not found by name lookup) in the derived class to model the actual initialization, and have a new expression node, CXXInheritedCtorInitExpr, to model the initialization of a base class from such a constructor. (This initialization is special because it performs real perfect forwarding of arguments.)
In cases where argument forwarding is not possible (for inalloca calls, variadic calls, and calls with callee parameter cleanup), the shadow inheriting constructor is not emitted and instead we directly emit the initialization code into the caller of the inherited constructor.
Note that this new model is not perfectly compatible with the old model in some corner cases. In particular: * if B inherits a private constructor from A, and C uses that constructor to construct a B, then we previously required that A befriends B and B befriends C, but the new rules require A to befriend C directly, and * if a derived class has its own constructors (and so its implicit default constructor is suppressed), it may still inherit a default constructor from a base class
llvm-svn: 274049
show more ...
|
| #
62f19e70 |
| 25-Jun-2016 |
Richard Smith <[email protected]> |
Implement C++17 P0386R2, inline variables. (The 'inline' specifier gives a variable weak discardable linkage and partially-ordered initialization, and is implied for constexpr static data members.)
Implement C++17 P0386R2, inline variables. (The 'inline' specifier gives a variable weak discardable linkage and partially-ordered initialization, and is implied for constexpr static data members.)
llvm-svn: 273754
show more ...
|
| #
8dd14da0 |
| 24-Jun-2016 |
Peter Collingbourne <[email protected]> |
CodeGen: Update Clang to use the new type metadata.
Differential Revision: http://reviews.llvm.org/D21054
llvm-svn: 273730
|
| #
c9d336e5 |
| 23-Jun-2016 |
Rafael Espindola <[email protected]> |
Restructure the propagation of -fPIC/-fPIE.
The PIC and PIE levels are not independent. In fact, if PIE is defined it is always the same as PIC.
This is clear in the driver where ParsePICArgs retur
Restructure the propagation of -fPIC/-fPIE.
The PIC and PIE levels are not independent. In fact, if PIE is defined it is always the same as PIC.
This is clear in the driver where ParsePICArgs returns a PIC level and a IsPIE boolean. Unfortunately that is currently lost and we pass two redundant levels down the pipeline.
This patch keeps a bool and a PIC level all the way down to codegen.
llvm-svn: 273566
show more ...
|
| #
351acd71 |
| 20-Jun-2016 |
Easwaran Raman <[email protected]> |
Remove MaxFunctionCount module flag annotation.
Differential revision: http://reviews.llvm.org/D19184
llvm-svn: 273198
|
| #
bcf909d7 |
| 14-Jun-2016 |
Peter Collingbourne <[email protected]> |
Update clang for D20348
Differential Revision: http://reviews.llvm.org/D20339
llvm-svn: 272710
|
|
Revision tags: llvmorg-3.8.1, llvmorg-3.8.1-rc1 |
|
| #
49766342 |
| 01-Jun-2016 |
Saleem Abdulrasool <[email protected]> |
CodeGen: tweak CFString emission for COFF targets
The `isa' member was previously not given the correct DLL Storage. Ensure that we give the `isa' constant `__CFConstantStringClassReference' the co
CodeGen: tweak CFString emission for COFF targets
The `isa' member was previously not given the correct DLL Storage. Ensure that we give the `isa' constant `__CFConstantStringClassReference' the correct DLL storage. Default to dllimport unless an explicit specification gives it a dllexport storage.
llvm-svn: 271361
show more ...
|
| #
6dd78e49 |
| 30-May-2016 |
Saleem Abdulrasool <[email protected]> |
CodeGen: address post-commit review comments
David Majnemer pointed out that isOSBinFormatMachO is more compact. NFC.
llvm-svn: 271221
|
| #
f7444e64 |
| 30-May-2016 |
Saleem Abdulrasool <[email protected]> |
CodeGen: tweak CFConstantStrings for COFF and ELF
Adjust the constant CFString emission to emit into more appropriate sections on ELF and COFF targets. It would previously try to use MachO section
CodeGen: tweak CFConstantStrings for COFF and ELF
Adjust the constant CFString emission to emit into more appropriate sections on ELF and COFF targets. It would previously try to use MachO section names irrespective of the file format.
llvm-svn: 271211
show more ...
|
| #
2c323a0e |
| 19-May-2016 |
Artem Belevich <[email protected]> |
Check for nullptr argument.
Addresses static analysis report in PR15492.
Differential Revision: http://reviews.llvm.org/D20141
llvm-svn: 270086
|
| #
fa2d5955 |
| 19-May-2016 |
Vedant Kumar <[email protected]> |
Reapply^3 "[ProfileData] (clang) Use Error in InstrProf and Coverage, NFC"
Sync up with "(llvm) Use Error in InstrProf and Coverage".
llvm-svn: 270021
|
| #
da9513fc |
| 16-May-2016 |
Vedant Kumar <[email protected]> |
Revert "Reapply^2 "[ProfileData] (clang) Use Error in InstrProf and Coverage, NFC""
This reverts commit r269695. The llvm commit does not pass the MSVC bot.
llvm-svn: 269701
|
| #
3354e2c5 |
| 16-May-2016 |
Vedant Kumar <[email protected]> |
Reapply^2 "[ProfileData] (clang) Use Error in InstrProf and Coverage, NFC"
Sync up with "(llvm) Use Error in InstrProf and Coverage".
Differential Revision: http://reviews.llvm.org/D19902
llvm-svn
Reapply^2 "[ProfileData] (clang) Use Error in InstrProf and Coverage, NFC"
Sync up with "(llvm) Use Error in InstrProf and Coverage".
Differential Revision: http://reviews.llvm.org/D19902
llvm-svn: 269695
show more ...
|
| #
1b766d09 |
| 14-May-2016 |
Chandler Carruth <[email protected]> |
Revert "Reapply "[ProfileData] (clang) Use Error in InstrProf and Coverage, NFC""
This reverts commit r269492 as the corresponding LLVM commit was reverted due to lots of warnings. See the review th
Revert "Reapply "[ProfileData] (clang) Use Error in InstrProf and Coverage, NFC""
This reverts commit r269492 as the corresponding LLVM commit was reverted due to lots of warnings. See the review thread for the original LLVM commit (r269491) for details.
llvm-svn: 269549
show more ...
|
| #
0b7b7ae8 |
| 13-May-2016 |
Vedant Kumar <[email protected]> |
Reapply "[ProfileData] (clang) Use Error in InstrProf and Coverage, NFC"
Sync up with "(llvm) Use Error in InstrProf and Coverage".
Differential Revision: http://reviews.llvm.org/D19902
llvm-svn:
Reapply "[ProfileData] (clang) Use Error in InstrProf and Coverage, NFC"
Sync up with "(llvm) Use Error in InstrProf and Coverage".
Differential Revision: http://reviews.llvm.org/D19902
llvm-svn: 269492
show more ...
|
| #
2d87639c |
| 13-May-2016 |
Vedant Kumar <[email protected]> |
Revert "[ProfileData] (clang) Use Error in InstrProf and Coverage, NFC"
This reverts commit r269463. It fails two llvm-profdata tests.
llvm-svn: 269468
|
| #
31af1fd1 |
| 13-May-2016 |
Vedant Kumar <[email protected]> |
[ProfileData] (clang) Use Error in InstrProf and Coverage, NFC
Sync up with "(llvm) Use Error in InstrProf and Coverage".
llvm-svn: 269463
|
| #
70e70e6e |
| 28-Apr-2016 |
Sriraman Tallam <[email protected]> |
Differential Revision: http://reviews.llvm.org/D19687
Set module flag PIELevel. Simplify code that sets PICLevel flag.
llvm-svn: 267948
|
| #
3afb2668 |
| 28-Apr-2016 |
Peter Collingbourne <[email protected]> |
Re-apply r267784, r267824 and r267830.
I have updated the compiler-rt tests.
llvm-svn: 267903
|
| #
5556a5cf |
| 28-Apr-2016 |
Benjamin Kramer <[email protected]> |
Revert r267784, r267824 and r267830.
It makes compiler-rt tests fail if the gold plugin is enabled.
Revert "Rework interface for bitset-using features to use a notion of LTO visibility." Revert "Dr
Revert r267784, r267824 and r267830.
It makes compiler-rt tests fail if the gold plugin is enabled.
Revert "Rework interface for bitset-using features to use a notion of LTO visibility." Revert "Driver: only produce CFI -fvisibility= error when compiling." Revert "clang/test/CodeGenCXX/cfi-blacklist.cpp: Exclude ms targets. They would be non-cfi."
llvm-svn: 267871
show more ...
|
| #
a8b2f7c0 |
| 27-Apr-2016 |
Peter Collingbourne <[email protected]> |
Rework interface for bitset-using features to use a notion of LTO visibility.
Bitsets, and the compiler features they rely on (vtable opt, CFI), only have visibility within the LTO'd part of the lin
Rework interface for bitset-using features to use a notion of LTO visibility.
Bitsets, and the compiler features they rely on (vtable opt, CFI), only have visibility within the LTO'd part of the linkage unit. Therefore, only enable these features for classes with hidden LTO visibility. This notion is based on object file visibility or (on Windows) dllimport/dllexport attributes.
We provide the [[clang::lto_visibility_public]] attribute to override the compiler's LTO visibility inference in cases where the class is defined in the non-LTO'd part of the linkage unit, or where the ABI supports calling classes derived from abstract base classes with hidden visibility in other linkage units (e.g. COM on Windows).
If the cross-DSO CFI mode is enabled, bitset checks are emitted even for classes with public LTO visibility, as that mode uses a separate mechanism to cause bitsets to be exported.
This mechanism replaces the whole-program-vtables blacklist, so remove the -fwhole-program-vtables-blacklist flag.
Because __declspec(uuid()) now implies [[clang::lto_visibility_public]], the support for the special attr:uuid blacklist entry is removed.
Differential Revision: http://reviews.llvm.org/D18635
llvm-svn: 267784
show more ...
|
| #
9305fd1f |
| 13-Apr-2016 |
Reid Kleckner <[email protected]> |
[CodeGen] Avoid ctor/dtor boilerplate with some C++11
Non-owning pointers that cache LLVM types and constants can use 'nullptr' default member initializers so that we don't need to mention them in t
[CodeGen] Avoid ctor/dtor boilerplate with some C++11
Non-owning pointers that cache LLVM types and constants can use 'nullptr' default member initializers so that we don't need to mention them in the constructor initializer list.
Owning pointers should use std::unique_ptr so that we don't need to manually delete them in the destructor. They also don't need to be mentioned in the constructor at that point.
NFC
llvm-svn: 266263
show more ...
|
| #
85eda12d |
| 11-Apr-2016 |
Dmitry Polukhin <[email protected]> |
[GCC] Attribute ifunc support in clang
This patch add support for GCC attribute((ifunc("resolver"))) for targets that use ELF as object file format. In general ifunc is a special kind of function al
[GCC] Attribute ifunc support in clang
This patch add support for GCC attribute((ifunc("resolver"))) for targets that use ELF as object file format. In general ifunc is a special kind of function alias with type @gnu_indirect_function. LLVM patch http://reviews.llvm.org/D15525
Differential Revision: http://reviews.llvm.org/D15524
llvm-svn: 265917
show more ...
|
| #
10a4972a |
| 08-Apr-2016 |
Saleem Abdulrasool <[email protected]> |
revert SVN r265702, r265640
Revert the two changes to thread CodeGenOptions into the TargetInfo allocation and to fix the layering violation by moving CodeGenOptions into Basic. Code Generation is a
revert SVN r265702, r265640
Revert the two changes to thread CodeGenOptions into the TargetInfo allocation and to fix the layering violation by moving CodeGenOptions into Basic. Code Generation is arguably not particularly "basic". This addresses Richard's post-commit review comments. This change purely does the mechanical revert and will be followed up with an alternate approach to thread the desired information into TargetInfo.
llvm-svn: 265806
show more ...
|
| #
f60a0d74 |
| 08-Apr-2016 |
Sanjoy Das <[email protected]> |
Adapt to LLVM API change
Replace mayBeOverridden with isInterposable
llvm-svn: 265767
|