| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 108276
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
mostly in avoiding unnecessary work at compile time but also in producing more
sensible block orderings.
Move the destructor cleanups for local variables over to use lazy cleanups.
Eventually all cleanups will do this; for now we have some awkward code
duplication.
Tell IR generation just to never produce landing pads in -fno-exceptions.
This is a much more comprehensive solution to a problem which previously was
half-solved by checks in most cleanup-generation spots.
llvm-svn: 108270
|
|
|
|
|
|
| |
rethrow. Fixes rdar://problem/7696603
llvm-svn: 107757
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 107631
|
|
|
|
|
|
| |
CXXRecordDecl::getDestructor(); no functionality change.
llvm-svn: 107394
|
|
|
|
|
|
|
|
| |
have CGF create and make accessible standard int32,int64 and
intptr types. This fixes a ton of 80 column violations
introduced by LLVMContextification and cleans up stuff a lot.
llvm-svn: 106977
|
|
|
|
| |
llvm-svn: 104999
|
|
|
|
| |
llvm-svn: 103972
|
|
|
|
|
|
|
|
| |
link failures when C/ObjC code uses __attribute__((cleanup())) (previously this was inserting references to two libstc++ symbols; the personality function and the __terminate() function).
This is still probably wrong for Objective-C++ and adds a couple of lines in CGException that should probably be in the CGObjCRuntime subclass. The personality function is now only looked up in one place in CGException though, so this should be easier to fix in the future.
llvm-svn: 103938
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
__cxa_guard_abort along the exceptional edge into (in effect) a nested
"try" that rethrows after aborting. Fixes PR7144 and the remaining
Boost.ProgramOptions failures, along with the regressions that r103880
caused.
The crucial difference between this and r103880 is that we now follow
LLVM's little dance with the llvm.eh.exception and llvm.eh.selector
calls, then use _Unwind_Resume_or_Rethrow to rethrow.
llvm-svn: 103892
|
|
|
|
|
|
| |
because it's causing strange linker errors. Unfixes PR7144.
llvm-svn: 103890
|
|
|
|
|
|
|
|
| |
__cxa_guard_abort along the exceptional edge into (in effect) a nested
"try" that rethrows after aborting. Fixes PR7144 and the remaining
Boost.ProgramOptions failures.
llvm-svn: 103880
|
|
|
|
|
|
| |
when used by the exceptions routines. Fixes PR 6974.
llvm-svn: 102684
|
|
|
|
|
|
| |
might not have been an insertion block set at start. Fixes PR6975.
llvm-svn: 102677
|
|
|
|
|
|
|
|
|
| |
in a throw expression. Use EmitAnyExprToMem to emit the throw expression,
which magically elides the final copy-constructor call (which raises a new
strict-compliance bug, but baby steps). Give __cxa_throw a destructor pointer
if the exception type has a non-trivial destructor.
llvm-svn: 102039
|
|
|
|
|
|
|
| |
just to save the current insertion state! This change significantly
simplifies the IR CFG in exceptions code.
llvm-svn: 101996
|
|
|
|
| |
llvm-svn: 98833
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 96670
|
|
|
|
|
|
|
| |
calls to the UnwindResumeOrRethrow function for C++/Obj-C exception handling,
for Darwin ARM.
llvm-svn: 95787
|
|
|
|
| |
llvm-svn: 95525
|
|
|
|
|
|
| |
disabled.
llvm-svn: 95509
|
|
|
|
|
|
|
|
|
|
|
|
| |
follows (as conservatively as possible) gcc's current behavior: attributes
written on return types that don't apply there are applied to the function
instead, etc. Only parse CC attributes as type attributes, not as decl attributes;
don't accepet noreturn as a decl attribute on ValueDecls, either (it still
needs to apply to other decls, like blocks). Consistently consume CC/noreturn
information throughout codegen; enforce this by removing their default values
in CodeGenTypes::getFunctionInfo().
llvm-svn: 95436
|
|
|
|
| |
llvm-svn: 92386
|
|
|
|
| |
llvm-svn: 92385
|
|
|
|
| |
llvm-svn: 92138
|
|
|
|
| |
llvm-svn: 92122
|
|
|
|
|
|
|
|
| |
that this is true when mangling, then fix up the various places in
Sema and/or CodeGen that need to remove qualifiers. Addresses a
linking issue when building LLVM with Clang.
llvm-svn: 92064
|
|
|
|
|
|
| |
takes a CXXRecordDecl since we were just creating a QualType from it anyway.
llvm-svn: 91590
|
|
|
|
| |
llvm-svn: 91588
|
|
|
|
|
|
| |
With this change, we can now compile and link TableGen.
llvm-svn: 91520
|
|
|
|
| |
llvm-svn: 91234
|
|
|
|
|
|
| |
no extra safety anyway.
llvm-svn: 91207
|
|
|
|
|
|
|
|
| |
sure to stash away the exception pointer somewhere.
This fixes an "Instruction does not dominate all uses!" verification error when compiling TableGen.
llvm-svn: 91084
|
|
|
|
| |
llvm-svn: 91078
|
|
|
|
|
|
| |
during throw to deallocate the exception object. WIP.
llvm-svn: 91035
|
|
|
|
| |
llvm-svn: 91001
|
|
|
|
| |
llvm-svn: 90998
|
|
|
|
| |
llvm-svn: 90997
|
|
|
|
| |
llvm-svn: 90994
|
|
|
|
| |
llvm-svn: 90991
|
|
|
|
| |
llvm-svn: 90940
|
|
|
|
| |
llvm-svn: 90884
|
|
|
|
| |
llvm-svn: 90882
|
|
|
|
| |
llvm-svn: 90821
|
|
|
|
| |
llvm-svn: 90817
|
|
|
|
| |
llvm-svn: 90796
|
|
|
|
| |
llvm-svn: 90622
|
|
|
|
| |
llvm-svn: 90576
|
|
|
|
|
|
| |
the end of all the catches.
llvm-svn: 90574
|
|
|
|
| |
llvm-svn: 90538
|