285cfd8953d4ca4da613a47a0d691f7234068f8c |
|
19-Sep-2011 |
Bill Wendling <isanbard@gmail.com> |
Throw the switch to convert clang to the new exception handling model! This model uses the 'landingpad' instruction, which is pinned to the top of the landing pad. (A landing pad is defined as the destination of the unwind branch of an invoke instruction.) All of the information needed to generate the correct exception handling metadata during code generation is encoded into the landingpad instruction. The new 'resume' instruction takes the place of the llvm.eh.resume intrinsic call. It's lowered in much the same way as the intrinsic is. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140049 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
777d6e56ad9b1fed9866daf3ee6486d85c5b7d32 |
|
11-Aug-2011 |
John McCall <rjmccall@apple.com> |
Simplify EH control flow by observing that EH scopes form a simple hierarchy of delegation, and that EH selector values are meaningful function-wide (good thing, too, or inlining wouldn't work). 2,3d 1a hierarchy of delegation and that EH selector values have the same meaning everywhere in the function instead of being meaningful only in the context of a specific selector. This removes the need for routing edges through EH cleanups, since a cleanup simply always branches to its enclosing scope. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137293 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
82cd2e5c15aa909ec9613c4228ab69e07f1c6f7a |
|
06-Aug-2011 |
John McCall <rjmccall@apple.com> |
Be sure to destroy the normal entry block of a cleanup that we aren't actually going to make a normal cleanup for. Sometimes we optimistically create branches to such blocks for fixups, and then we resolve the fixup to somewhere within the cleanup's scope, and then the cleanup is actually not reachable for some reason. The process of resolving the fixup leaves us with switches whose default edge leads to the cleanup; we can replace that with unreachable, then (in many cases) turn the switch into an unconditional branch. Fixes PR10467. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137011 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
2673c68aa58e277ebc755b71d81aca618cdedbf9 |
|
11-Jul-2011 |
John McCall <rjmccall@apple.com> |
Fix a lot of problems with the partial destruction of arrays: - an off-by-one error in emission of irregular array limits for InitListExprs - use an EH partial-destruction cleanup within the normal array-destruction cleanup - get the branch destinations right for the empty check Also some refactoring which unfortunately obscures these changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134890 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
9cbe4f0ba01ec304e1e3d071c071f7bca33631c0 |
|
09-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
clang side to match the LLVM IR type system rewrite patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134831 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
bdc4d80956c83a486e58d3df6bb524a1f66ff574 |
|
09-Jul-2011 |
John McCall <rjmccall@apple.com> |
A number of array-related IR-gen cleanups. - Emit default-initialization of arrays that were partially initialized with initializer lists with a loop, rather than emitting the default initializer N times; - support destroying VLAs of non-trivial type, although this is not yet exposed to users; and - support the partial destruction of arrays initialized with initializer lists when an initializer throws an exception. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134784 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
93c332a8ba2c193c435b293966d343dab15f555b |
|
28-May-2011 |
John McCall <rjmccall@apple.com> |
Convert Clang over to resuming from landing pads with llvm.eh.resume. It's quite likely that this will explode, but I need to know how. :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132269 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
addd80d1c80d1e9f249988452103c93a564945f0 |
|
27-May-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Back out r132209; it's breaking nightly tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132219 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
0903421e36c174a82597f83bd296f3cd5b5f169b |
|
27-May-2011 |
John McCall <rjmccall@apple.com> |
Implement a new, much improved version of the cleanup hack. We just need to be careful to emit landing pads that are always prepared to handle a cleanup path. This is correct mostly because of the fix to the LLVM inliner, r132200. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132209 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
abea951c34876a5374d0e3678c7989b225c5c895 |
|
28-Feb-2011 |
Anders Carlsson <andersca@mac.com> |
Add -fcxx-exceptions to all tests that use C++ exceptions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126599 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
0d70d71ccbc4f7f59cadb759f61b7172a149676c |
|
13-Feb-2011 |
John McCall <rjmccall@apple.com> |
Look through array types when deciding whether a field requires non-trivial destruction in the destructor-aliases logic. Fixes PR 9197. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125447 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
0691a5c83246604a89654e0dfc25870e742035b4 |
|
25-Jan-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Move unnamed_addr after the function arguments on Sabre's request. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124210 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
c5f657fe308f22243f674fc1dfbe24915944d8bf |
|
11-Jan-2011 |
Rafael Espindola <rafael.espindola@gmail.com> |
Add unnamed_addr to constructors and destructors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123197 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
50da2cadcc6da86abff6772de65280ace2cabc94 |
|
21-Jul-2010 |
John McCall <rjmccall@apple.com> |
Implement proper base/member destructor EH chaining. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108989 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
182ab5112650d3228291c4dadd64a9f77f5aeb51 |
|
21-Jul-2010 |
John McCall <rjmccall@apple.com> |
Convert the EH cleanups for base and member destructors in a constructor into lazy cleanups. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108978 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
9c0c1f333ab8f5a3da055b99ee94778689face17 |
|
08-Jul-2010 |
John McCall <rjmccall@apple.com> |
Mark calls to 'throw()' functions as nounwind, and mark the functions nounwind as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107858 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
66d80a9c99ef781f0fd56dfcd060e30d4d673c93 |
|
06-Jul-2010 |
John McCall <rjmccall@apple.com> |
When destroying a cleanup, kill any references to instructions in the entry block before deleting it. Fixes PR7575. This really just a short-term fix before implementing lazy cleanups. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107676 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
f1549f66a8216a78112286e3978cea2c29d6334c |
|
06-Jul-2010 |
John McCall <rjmccall@apple.com> |
Validated by nightly-test runs on x86 and x86-64 darwin, including after self-host. Hopefully these results hold up on different platforms. I tried to keep the GNU ObjC runtime happy, but it's hard for me to test. Reimplement how clang generates IR for exceptions. Instead of creating new invoke destinations which sequentially chain to the previous destination, push a more semantic representation of *why* we need the cleanup/catch/filter behavior, then collect that information into a single landing pad upon request. Also reorganizes how normal cleanups (i.e. cleanups triggered by non-exceptional control flow) are generated, since it's actually fairly closely tied in with the former. Remove the need to track which cleanup scope a block is associated with. Document a lot of previously poorly-understood (by me, at least) behavior. The new framework implements the Horrible Hack (tm), which requires every landing pad to have a catch-all so that inlining will work. Clang no longer requires the Horrible Hack just to make exceptions flow correctly within a function, however. The HH is an unfortunate requirement of LLVM's EH IR. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107631 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
d92ec474faeb6133e0d41f0de4526b22778476f2 |
|
01-Jul-2010 |
Douglas Gregor <dgregor@apple.com> |
Reinstate fix for PR7526, which was failing because, now that we aren't dropping all exception specifications on destructors, the exception specifications on implicitly-declared destructors were detected as being wrong (which they were). Introduce logic to provide a proper exception-specification for implicitly-declared destructors. This also fixes PR6972. Note that the other implicitly-declared special member functions also need to get exception-specifications. I'll deal with that in a subsequent commit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107385 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
4b662a5684d41ea4ff6b52711929e00fefb00db1 |
|
01-Jul-2010 |
Douglas Gregor <dgregor@apple.com> |
Revert r107374, which broke bootstrap. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107378 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
2fef752aebece6786e5f3d54984272ef85564af8 |
|
01-Jul-2010 |
Douglas Gregor <dgregor@apple.com> |
When building the type of a destructor, make sure to keep the exception specification. Fixes PR7526. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107374 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
e03d99247412702660c9c8b8b9b98a1def8a2195 |
|
27-May-2010 |
John McCall <rjmccall@apple.com> |
Give this test a triple. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104798 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
c76702cc80c1ef8a94d82b62ddcb4ed4f67d5b8c |
|
27-May-2010 |
John McCall <rjmccall@apple.com> |
When deciding whether a deferred declaration has already been emitted, aliases count as definitions regardless of whether their target has been emitted yet. Fixes PR 7142. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104796 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
9a70846c5ffd5ff5cce60de49cd7b312146bf502 |
|
03-Mar-2010 |
John McCall <rjmccall@apple.com> |
Don't emit derived-to-base destructor aliases if we don't have a definition for the base destructor, because aliases to declarations aren't legal. Fixes PR 6471. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97637 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
c0bf462cf35fe050bddbd8bff967298e4a67e79d |
|
23-Feb-2010 |
John McCall <rjmccall@apple.com> |
Perform two more constructor/destructor code-size optimizations: 1) emit base destructors as aliases to their unique base class destructors under some careful conditions. This is enabled for the same targets that can support complete-to-base aliases, i.e. not darwin. 2) Emit non-variadic complete constructors for classes with no virtual bases as calls to the base constructor. This is enabled on all targets and in theory can trigger in situations that the alias optimization can't (mostly involving virtual bases, mostly not yet supported). These are bundled together because I didn't think it worthwhile to split them, not because they really need to be. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96842 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
9fc6a7774643a810c8501dae2323e863fefb623e |
|
19-Feb-2010 |
John McCall <rjmccall@apple.com> |
More refactoring around constructor/destructor code generation. Fix some bugs with function-try-blocks and simplify normal try-block code generation. This implementation excludes a deleting destructor's call to operator delete() from the function-try-block, which I believe is correct but which I can't find straightforward support for at a moment's glance. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96670 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
a5728872c7702ddd09537c95bc3cbd20e1f2fb09 |
|
15-Dec-2009 |
Daniel Dunbar <daniel@zuster.org> |
Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. - This is designed to make it obvious that %clang_cc1 is a "test variable" which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it can be useful to redefine what gets run as 'clang -cc1' (for example, to set a default target). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91446 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
9f853df0d3c25c646907a7b7ef22398370def00f |
|
17-Nov-2009 |
Anders Carlsson <andersca@mac.com> |
Unify the way destructor epilogues are generated for synthesized and regular destructors. Also fix PR5529. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89034 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
4513272f444c59705123ccb6207414ce62c9a568 |
|
01-Oct-2009 |
Douglas Gregor <dgregor@apple.com> |
CodeGen may see out-of-line declarations of the various special member functions when they are explicitly declared, e.g., via a function template specialization or explicit template instantiation declaration. Don't try to synthesize bodies for the special member functions in this case; rather, check whether we have an implicit declaration and, if so, synthesize the appropriate function body. Fixes PR5084. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83212 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|
174754cda4596f3bb2539df61ab2ab7a17aad6bf |
|
01-Sep-2009 |
Anders Carlsson <andersca@mac.com> |
We can generate constructors/destructors with base classes and non-trivial fields just fine now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80701 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGenCXX/destructors.cpp
|