Commit Graph

32 Commits

Author SHA1 Message Date
Matt Arsenault f63663acce Update for lifetime intrinsic signature change
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@299877 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-10 20:18:45 +00:00
Wei Mi 0ead18bb1b Update clang unittests for rL281586.
The change in rL281586 is in llvm component and tests updated here are
in clang component, so I have to commit them consecutively.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281587 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-15 06:31:30 +00:00
Nico Weber 479a96e872 Rebase tests after LLVM r247707.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247712 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-15 18:49:51 +00:00
Philip Reames bfeebd81de Adjust clang side tests effected by 239795 before reapplying said change
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239848 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-16 20:24:06 +00:00
David Majnemer 0da939d4e8 Revert "Revert r234581, it might have caused a few miscompiles in Chromium."
This reverts commit r234700.  It turns out that the lifetime markers
were not the cause of Chromium failing but a bug which was uncovered by
optimizations exposed by the markers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@235553 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-22 21:38:15 +00:00
Nico Weber bc83d9f70f Revert r234581, it might have caused a few miscompiles in Chromium.
If the revert helps, I'll get a repro this Monday.  Else I'll put the change
back in.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@234700 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-11 23:51:38 +00:00
Arnaud A. de Grandmaison 914d1bd47f Remove threshold for inserting lifetime markers for named temporaries
Now that TailRecursionElimination has been fixed with r222354, the
threshold on size for lifetime marker insertion can be removed. This
only affects named temporary though, as the patch for unnamed temporaries
is still in progress.

My previous commit (r222993) was not handling debuginfo correctly, but
this could only be seen with some asan tests. Basically, lifetime markers
are just instrumentation for the compiler's usage and should not affect
debug information; however, the cleanup infrastructure was assuming it
contained only destructors, i.e. actual code to be executed, and was
setting the breakpoint for the end of the function to the closing '}', and
not the return statement, in order to show some destructors have been
called when leaving the function. This is wrong when the cleanups are only
lifetime markers, and this is now fixed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@234581 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-10 10:13:52 +00:00
David Blaikie 1d7abba8db Update Clang tests to handle explicitly typed load changes in LLVM.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230795 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-27 21:19:58 +00:00
Arnaud A. de Grandmaison c18cd679d0 Revert "Remove threshold for lifetime marker insertion of named temporaries"
Revert r222993 while I investigate some MemorySanitizer failures.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@222995 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-01 09:30:16 +00:00
Arnaud A. de Grandmaison b8432d9890 Remove threshold for lifetime marker insertion of named temporaries
Now that TailRecursionElimination has been fixed with r222354, the
threshold on size for lifetime marker insertion can be removed. This
only affects named temporary though, as the patch for unnamed temporaries
is still in progress.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@222993 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-01 09:13:54 +00:00
Arnaud A. de Grandmaison 93de272e38 Revert "Remove threshold on object size for inserting lifetime begin / end"
Revert this patch while I investigate some sanitizer failures off-line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219307 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-08 14:04:26 +00:00
Arnaud A. de Grandmaison eee131df08 Remove threshold on object size for inserting lifetime begin / end
Boostrapping LLVM+Clang+LLDB without threshold on object size for
lifetime markers insertion has shown there was no significant change
in compile time, so let the stack slot colorizer do its optimization
for all slots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219303 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-08 12:49:16 +00:00
Stephen Lin 93ab6bf534 CHECK-LABEL-ify some code gen tests to improve diagnostic experience when tests fail.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188447 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-15 06:47:53 +00:00
John McCall 73c56bb0c8 In ObjC++ on legacy runtimes, push an EH cleanup as well as
a normal cleanup when entering a @try or @synchronized to
ensure that we clean that up if an exception is triggered.

Apparently GCC did this, so it's hard to argue that we shouldn't
do at least as much.

rdar://12364847

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178599 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-03 00:56:07 +00:00
Chandler Carruth 0fabc18984 Re-enable this test to reflect re-enabling the new SROA pass.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164987 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-02 04:24:16 +00:00
Nick Lewycky a4376dc59f Turn off this test, as the new and old SROA cause it produce different output.
Left in a note that we need to turn it back on once the SROA fallout is cleared
up.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164733 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-26 22:48:46 +00:00
Chandler Carruth c07a9cb049 Update the Clang tests which run with a full optimization pipeline for
the new SROA pass. This is a benign change: the order of PHI nodes
changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164481 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-24 01:10:25 +00:00
John McCall 260611a325 Restructure how the driver communicates information about the
target Objective-C runtime down to the frontend:  break this
down into a single target runtime kind and version, and compute
all the relevant information from that.  This makes it
relatively painless to add support for new runtimes to the
compiler.  Make the new -cc1 flag, -fobjc-runtime=blah-x.y.z,
available at the driver level as a better and more general
alternative to -fgnu-runtime and -fnext-runtime.  This new
concept of an Objective-C runtime also encompasses what we
were previously separating out as the "Objective-C ABI", so
fragile vs. non-fragile runtimes are now really modelled as
different kinds of runtime, paving the way for better overall
differentiation.

As a sort of special case, continue to accept the -cc1 flag
-fobjc-runtime-has-weak, as a sop to PLCompatibilityWeak.

I won't go so far as to say "no functionality change", even
ignoring the new driver flag, but subtle changes in driver
semantics are almost certainly not intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158793 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20 06:18:46 +00:00
Nick Lewycky 155fa39bb5 The optimizers figured out how to make this store 6.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144597 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-15 00:19:16 +00:00
John McCall d1e40d5389 Make -fobjc-nonfragile-abi the -cc1 default, since it's the
increasingly prevailing case to the point that new features
like ARC don't even support the fragile ABI anymore.

This required a little bit of reshuffling with exceptions
because a check was assuming that ObjCNonFragileABI was
only being set in ObjC mode, and that's actually a bit
obnoxious to do.

Most, though, it involved a perl script to translate a ton
of test cases.

Mostly no functionality change for driver users, although
there are corner cases with disabling language-specific
exceptions that we should handle more correctly now.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140957 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-02 01:16:38 +00:00
Anders Carlsson e9b801f763 Make clang -cc1 disable Objective-C exceptions by default, and add a -fobjc-exceptions flag to turn them on.
Update all tests accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126177 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-22 01:52:06 +00:00
Chris Lattner 45d246f9f6 update this test now that reassociate isn't stripping nsw's pointlessly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125705 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-17 02:02:42 +00:00
Dan Gohman 148f32a537 Update this test following recent optimizer changes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124715 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-02 02:21:10 +00:00
John McCall a8af408fe4 Not really any point to testing control flow in this test without
ret duplication.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124476 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 06:05:16 +00:00
Eric Christopher e55e643f96 Update exceptions.m for r124462.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124474 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 05:13:18 +00:00
John McCall 9e2213ddd5 In the fragile ObjC ABI, save the caught exception to the side if there are
both @catches and a @finally, because the second call to @objc_exception_try_enter
will clobber the exception slot.  Fixes rdar://problem/8440970.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115575 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-04 23:42:51 +00:00
John McCall 043488129f Make this test a little less dependent on exact optimizer results.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110770 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-11 02:06:44 +00:00
John McCall d96a8e771c Fix a bug in @finally emission in both the fragile and non-fragile EH schemes
where we weren't accounting for the possibility that a @finally block might
have internal cleanups and therefore might write to the cleanup destination slot.

Fixes <rdar://problem/8293901>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110760 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-11 00:16:14 +00:00
John McCall 0b25172994 Some more correctness fixes and code-size optimizations for fragile-ABI
ObjC exceptions:
  - don't enter a try for the catch blocks unless there's a finally
  - put the setjmp buffer in the locals set for liveness reasons
  - dump the sync object into an alloca in the locals set for liveness reasons
Some of this can go away if the backend starts to properly calculate liveness
in the presence of setjmp (which would also be a *much* stabler solution).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110188 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-04 05:59:32 +00:00
John McCall 87bb5822bf Fix fragile-ABI ObjC exceptions in the presence of optimization with
the magic of inline assembly.  Essentially we use read and write hazards
on the set of local variables to force flushing locals to memory
immediately before any protected calls and to inhibit optimizing locals
across the setjmp->catch edge.  Fixes rdar://problem/8160285



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@109960 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-31 23:20:56 +00:00
John McCall f1549f66a8 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
2010-07-06 01:34:17 +00:00
Daniel Dunbar b76db237b8 NeXT/EH: When generating the rethrow code for a finally block, make sure to
chain outwards when inside a nested exception scope.
 - A real test for this is going into LLVM test-suite.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102204 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-23 19:12:32 +00:00