| #
443250f0 |
| 17-Mar-2015 |
David Majnemer <[email protected]> |
WIP
llvm-svn: 232537
|
| #
ad803d4b |
| 15-Mar-2015 |
David Majnemer <[email protected]> |
MS ABI: Don't use qualified pointee types for 'catch' EH TypeDescriptors
Qualifiers are located next to the TypeDescriptor in order to properly ensure that a pointer type can only be caught by a mor
MS ABI: Don't use qualified pointee types for 'catch' EH TypeDescriptors
Qualifiers are located next to the TypeDescriptor in order to properly ensure that a pointer type can only be caught by a more qualified catch handler. This means that a catch handler of type 'const int *' requires an RTTI object for 'int *'. We got this correct for 'throw' but not for 'catch'.
N.B. We don't currently have the means to store the qualifiers because LLVM's EH strategy is tailored to the Itanium scheme. The Itanium ABI stores qualifiers inside the type descriptor in such a way that the manner of qualification is stored in addition to the pointee type's descriptor. Perhaps the best way of modeling this for the MS ABI is using an aggregate type to bundle the qualifiers with the descriptor? This is tricky because we want to make it clear to the optimization passes which catch handlers invalidate other handlers.
My current thoughts on a design for this is along the lines of: { { TypeDescriptor* TD, i32 QualifierFlags }, i32 MiscFlags }
The idea is that the inner most aggregate is all that is needed to communicate that one catch handler might supercede another. The 'MiscFlags' field would be used to hold the bitpattern for the notion that the 'catch' handler does not need to invoke a copy-constructor because we are catching by reference.
llvm-svn: 232318
show more ...
|
| #
dfd511e9 |
| 13-Mar-2015 |
Joerg Sonnenberger <[email protected]> |
Simplify.
llvm-svn: 232130
|
| #
3eff5f46 |
| 25-Feb-2015 |
Alexey Bataev <[email protected]> |
[OPENMP] Rename methods of OpenMPRuntime class. NFC.
llvm-svn: 230470
|
|
Revision tags: llvmorg-3.6.0 |
|
| #
f63bcaa2 |
| 19-Feb-2015 |
David Majnemer <[email protected]> |
CodeGen: Weak reference temporaries belong in a COMDAT
llvm-svn: 229902
|
| #
c9a9c7a6 |
| 19-Feb-2015 |
David Majnemer <[email protected]> |
CodeGen: static constexpr data members should have a linkonce_odr init
Classes can be defined in multiple translation units. This means that the static constexpr data members should have identical
CodeGen: static constexpr data members should have a linkonce_odr init
Classes can be defined in multiple translation units. This means that the static constexpr data members should have identical initializers in all translation units. Implement this by giving the reference temporary linkonce_odr linkage.
llvm-svn: 229900
show more ...
|
|
Revision tags: llvmorg-3.6.0-rc4 |
|
| #
26a1216a |
| 18-Feb-2015 |
Zoran Jovanovic <[email protected]> |
Change representation of member function pointers for MIPS targets Differential Revision: http://reviews.llvm.org/D7148
llvm-svn: 229680
|
| #
e990a3f6 |
| 18-Feb-2015 |
Larisse Voufo <[email protected]> |
Rename flags and options to match current naming: from -fdef-sized-delete to -fdefine-sized-deallocation, and from DefaultSizedDelete to DefineSizedDeallocation.
llvm-svn: 229597
|
| #
d29a4a38 |
| 16-Feb-2015 |
Justin Bogner <[email protected]> |
InstrProf: Update for LLVM API change
Update for the API change in r229433
llvm-svn: 229434
|
| #
fbe56a05 |
| 15-Feb-2015 |
Larisse Voufo <[email protected]> |
Fix a typo in r229291 causing buildbot failure.
llvm-svn: 229295
|
| #
0c691d02 |
| 15-Feb-2015 |
Larisse Voufo <[email protected]> |
More on fixing sized deallocation implementation logic: Fix PR21754.
llvm-svn: 229291
|
| #
5526f4f0 |
| 14-Feb-2015 |
Larisse Voufo <[email protected]> |
Revise the implementation logic of sized deallocation: Do not automatically generate weak definitions of the sized operator delete (in terms of unsized operator delete). Instead, provide the funciton
Revise the implementation logic of sized deallocation: Do not automatically generate weak definitions of the sized operator delete (in terms of unsized operator delete). Instead, provide the funcitonality via a new compiler flag, -fdef-sized-delete. The current implementation causes link-time ODR violations when the delete symbols are exported into the dynamic table.
llvm-svn: 229241
show more ...
|
|
Revision tags: llvmorg-3.6.0-rc3 |
|
| #
e1a0b2e2 |
| 03-Feb-2015 |
David Majnemer <[email protected]> |
MS ABI: Records with fields with required aligmnet shouldn't be common
llvm-svn: 227954
|
| #
f37f3d35 |
| 02-Feb-2015 |
Justin Holewinski <[email protected]> |
When generating llvm.used, we may need an addrspacecast instead of a bitcast.
Summary: This is especially important for targets that use multiple address spaces, and commonly place global variables
When generating llvm.used, we may need an addrspacecast instead of a bitcast.
Summary: This is especially important for targets that use multiple address spaces, and commonly place global variables in address spaces other than zero.
Fixes PR22383
Test Plan: New test case added: llvm-used.cu
Reviewers: jingyue
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7345
llvm-svn: 227861
show more ...
|
|
Revision tags: llvmorg-3.6.0-rc2 |
|
| #
e5df59ff |
| 22-Jan-2015 |
Rafael Espindola <[email protected]> |
Emit DeferredDeclsToEmit in a DFS order.
Currently we emit DeferredDeclsToEmit in reverse order. This patch changes that.
The advantages of the change are that
* The output order is a bit closer t
Emit DeferredDeclsToEmit in a DFS order.
Currently we emit DeferredDeclsToEmit in reverse order. This patch changes that.
The advantages of the change are that
* The output order is a bit closer to the source order. The change to test/CodeGenCXX/pod-member-memcpys.cpp is a good example.
* If we decide to deffer more, it will not cause as large changes in the estcases as it would without this patch.
llvm-svn: 226751
show more ...
|
| #
6d1178ca |
| 21-Jan-2015 |
Rafael Espindola <[email protected]> |
clang-format function. NFC.
llvm-svn: 226662
|
| #
740d59ec |
| 21-Jan-2015 |
David Majnemer <[email protected]> |
CodeGen: Compiler generated __declspec(uuid) objects should be COMDAT'd
llvm-svn: 226628
|
| #
d9b26d56 |
| 16-Jan-2015 |
Rafael Espindola <[email protected]> |
Add comdat to string literal variables on COFF.
llvm-svn: 226317
|
| #
cb92c19f |
| 15-Jan-2015 |
Rafael Espindola <[email protected]> |
Use a trivial comdat for C++ tables.
This produces comdats for vtables, typeinfo, typeinfo names, and vtts.
When combined with llvm not producing implicit comdats, not doing this would cause code b
Use a trivial comdat for C++ tables.
This produces comdats for vtables, typeinfo, typeinfo names, and vtts.
When combined with llvm not producing implicit comdats, not doing this would cause code bloat on ELF and link errors on COFF.
llvm-svn: 226227
show more ...
|
| #
dbee8a7a |
| 15-Jan-2015 |
Rafael Espindola <[email protected]> |
Use a trivial comdat for inline ctor/dtor when not using C5/D5.
When combined with llvm not producing implicit comdats, not doing this would cause code bloat on ELF and link errors on COFF.
llvm-sv
Use a trivial comdat for inline ctor/dtor when not using C5/D5.
When combined with llvm not producing implicit comdats, not doing this would cause code bloat on ELF and link errors on COFF.
llvm-svn: 226211
show more ...
|
|
Revision tags: llvmorg-3.6.0-rc1 |
|
| #
0d9593dd |
| 14-Jan-2015 |
Chandler Carruth <[email protected]> |
[cleanup] Re-sort *all* #include lines with llvm/utils/sort_includes.py
Sorry for the noise, I managed to miss a bunch of recent regressions of include orderings here. This should actually sort all
[cleanup] Re-sort *all* #include lines with llvm/utils/sort_includes.py
Sorry for the noise, I managed to miss a bunch of recent regressions of include orderings here. This should actually sort all the includes for Clang. Again, no functionality changed, this is just a mechanical cleanup that I try to run periodically to keep the #include lines as regular as possible across the project.
llvm-svn: 225979
show more ...
|
| #
0d4fb985 |
| 12-Jan-2015 |
Rafael Espindola <[email protected]> |
[patch][pr19848] Produce explicit comdats in clang.
The llvm IR until recently had no support for comdats. This was a problem when targeting C++ on ELF/COFF as just using weak linkage would cause qu
[patch][pr19848] Produce explicit comdats in clang.
The llvm IR until recently had no support for comdats. This was a problem when targeting C++ on ELF/COFF as just using weak linkage would cause quite a bit of dead bits to remain on the executable (unless -ffunction-sections, -fdata-sections and --gc-sections were used).
To fix the problem, llvm's codegen will just assume that any weak or linkonce that is not in an explicit comdat should be output in one with the same name as the global.
This unfortunately breaks cases like pr19848 where a weak symbol is not xpected to be part of any comdat.
Now that we have explicit comdats in the IR, we can finally get both cases right.
This first patch just makes clang give explicit comdats to GlobalValues where t is allowed to.
A followup patch to llvm will then stop implicitly producing comdats.
llvm-svn: 225705
show more ...
|
| #
43a0f99b |
| 10-Jan-2015 |
Hans Wennborg <[email protected]> |
Don't emit implicit template instantiations eagerly (PR21718)
Their linkage can change if they are later explicitly instantiated. We would previously emit such functions eagerly (as opposed to lazil
Don't emit implicit template instantiations eagerly (PR21718)
Their linkage can change if they are later explicitly instantiated. We would previously emit such functions eagerly (as opposed to lazily on first use) if they have a 'dllexport' or 'used' attribute, and fail an assert when hitting the explicit instantiation.
This is achieved by replacing the old CodeGenModule::MayDeferGeneration() method with two new ones: MustBeEmitted() and MayBeEmittedEagerly().
Differential Revision: http://reviews.llvm.org/D6674
llvm-svn: 225570
show more ...
|
|
Revision tags: llvmorg-3.5.1, llvmorg-3.5.1-rc2 |
|
| #
0317bc9e |
| 16-Dec-2014 |
David Blaikie <[email protected]> |
PR21909: Don't try (and crash) to generate debug info for explicit instantiations of explicit specializations.
llvm-svn: 224394
|
| #
30e41fb4 |
| 15-Dec-2014 |
Paul Robinson <[email protected]> |
Warn when attribute 'optnone' conflicts with attributes on a different declaration of the same function.
llvm-svn: 224256
|