#
be9843ce |
| 29-Apr-2015 |
Reid Kleckner <reid@kleckner.net> |
Revert r236128, LLVM isn't falling back in the right way
llvm-svn: 236167
|
#
0bb12a89 |
| 29-Apr-2015 |
Reid Kleckner <reid@kleckner.net> |
Re-land r236052, the linker errors were fixed by LLVM r236123
Basic __finally blocks don't cause linker errors anymore (although they are miscompiled).
llvm-svn: 236128
|
#
ea721b64 |
| 29-Apr-2015 |
Nico Weber <nicolasweber@gmx.de> |
Revert r236052, it caused linker errors when building 32-bit applications.
llvm-svn: 236082
|
#
ddd40964 |
| 28-Apr-2015 |
Reid Kleckner <reid@kleckner.net> |
[SEH] Add 32-bit lowering code for __try
This is just the clang-side of 32-bit SEH. LLVM still needs work, and it will determinstically fail to compile until it's feature complete.
On x86, all outl
[SEH] Add 32-bit lowering code for __try
This is just the clang-side of 32-bit SEH. LLVM still needs work, and it will determinstically fail to compile until it's feature complete.
On x86, all outlined handlers have no parameters, but they do implicitly take the EBP value passed in and use it to address locals of the parent frame. We model this with llvm.frameaddress(1).
This works (mostly), but __finally block inlining can break it. For now, we apply the 'noinline' attribute. If we really want to inline __finally blocks on 32-bit x86, we should teach the inliner how to untangle frameescape and framerecover.
Promote the error diagnostic from codegen to sema. It now rejects SEH on non-Windows platforms. LLVM doesn't implement SEH on non-x86 Windows platforms, but there's nothing preventing it.
llvm-svn: 236052
show more ...
|
#
66242d6c |
| 23-Apr-2015 |
Justin Bogner <mail@justinbogner.com> |
InstrProf: Stop using RegionCounter outside of CodeGenPGO (NFC)
The RegionCounter type does a lot of legwork, but most of it is only meaningful within the implementation of CodeGenPGO. The uses else
InstrProf: Stop using RegionCounter outside of CodeGenPGO (NFC)
The RegionCounter type does a lot of legwork, but most of it is only meaningful within the implementation of CodeGenPGO. The uses elsewhere in CodeGen generally just want to increment or read counters, so do that directly.
llvm-svn: 235664
show more ...
|
#
dc012fa2 |
| 22-Apr-2015 |
David Majnemer <david.majnemer@gmail.com> |
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 whi
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.
llvm-svn: 235553
show more ...
|
#
ebaf28d1 |
| 14-Apr-2015 |
Reid Kleckner <reid@kleckner.net> |
Reland r234613 (and follow-ups 234614, 234616, 234618)
The frameescape intrinsic cannot be inlined, so I fixed the inliner in r234937. This should address PR23216.
llvm-svn: 234942
|
#
ad108337 |
| 13-Apr-2015 |
Nico Weber <nicolasweber@gmx.de> |
Revert r234613 (and follow-ups 234614, 234616, 234618), it caused PR23216.
llvm-svn: 234789
|
#
f2a39a7b |
| 13-Apr-2015 |
Nico Weber <nicolasweber@gmx.de> |
Revert r234786, it contained a bunch of stuff I did not mean to commit.
llvm-svn: 234787
|
#
b31abb05 |
| 13-Apr-2015 |
Nico Weber <nicolasweber@gmx.de> |
Revert r234613 (and follow-ups 234614, 234616, 234618), it caused PR23216.
llvm-svn: 234786
|
#
1c565c31 |
| 11-Apr-2015 |
Nico Weber <nicolasweber@gmx.de> |
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.
llvm-svn: 234700
|
#
11859afd |
| 10-Apr-2015 |
Reid Kleckner <reid@kleckner.net> |
[SEH] Re-land r234532, but use internal linkage for all SEH helpers
Even though these symbols are in a comdat group, the Microsoft linker really wants them to have internal linkage.
I'm planning to
[SEH] Re-land r234532, but use internal linkage for all SEH helpers
Even though these symbols are in a comdat group, the Microsoft linker really wants them to have internal linkage.
I'm planning to tweak the mangling in a follow-up change. This is a straight revert with a 1-line fix.
llvm-svn: 234613
show more ...
|
#
047a686d |
| 10-Apr-2015 |
Arnaud A. de Grandmaison <arnaud.degrandmaison@arm.com> |
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 remove
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.
llvm-svn: 234581
show more ...
|
#
bd51a6a9 |
| 10-Apr-2015 |
Nico Weber <nicolasweber@gmx.de> |
Revert r234532 for a bit, it very likely caused http://crbug.com/475768
llvm-svn: 234563
|
#
0dbecf2b |
| 09-Apr-2015 |
Reid Kleckner <reid@kleckner.net> |
[SEH] Outline finally blocks using the new variable capture support
WinEHPrepare was going to have to pattern match the control flow merge and split that the old lowering used, and that wasn't reall
[SEH] Outline finally blocks using the new variable capture support
WinEHPrepare was going to have to pattern match the control flow merge and split that the old lowering used, and that wasn't really feasible.
Now we can teach WinEHPrepare to pattern match this, which is much simpler: %fp = call i8* @llvm.frameaddress(i32 0) call void @func(iN [01], i8* %fp)
This prototype happens to match the prototype used by the Win64 SEH personality function, so this is really simple.
llvm-svn: 234532
show more ...
|
#
359b1057 |
| 09-Apr-2015 |
Sanjay Patel <spatel@rotateright.com> |
Process the -freciprocal-math optimization flag (PR20912)
The driver currently accepts but ignores the -freciprocal-math flag. This patch passes the flag through and enables 'arcp' fast-math-flag ge
Process the -freciprocal-math optimization flag (PR20912)
The driver currently accepts but ignores the -freciprocal-math flag. This patch passes the flag through and enables 'arcp' fast-math-flag generation in IR.
Note that this change does not actually enable the optimization for any target. The reassociation optimization that this flag specifies was implemented by http://reviews.llvm.org/D6334 : http://llvm.org/viewvc/llvm-project?view=revision&revision=222510
Because the optimization is done in the backend rather than IR, the backend must be modified to understand instruction-level fast-math-flags or a new function-level attribute must be created.
Also note that -freciprocal-math is independent of any target-specific usage of reciprocal estimate hardware instructions. That requires its own flag ('-mrecip').
https://llvm.org/bugs/show_bug.cgi?id=20912
llvm-svn: 234493
show more ...
|
#
31a1bb0c |
| 08-Apr-2015 |
Reid Kleckner <reid@kleckner.net> |
Reland "[SEH] Implement filter capturing in CodeGen"
The test should be fixed. It was failing in NDEBUG builds due to a missing '*' character in a regex. In asserts builds, the pattern matched a sin
Reland "[SEH] Implement filter capturing in CodeGen"
The test should be fixed. It was failing in NDEBUG builds due to a missing '*' character in a regex. In asserts builds, the pattern matched a single digit value, which became a double digit value in NDEBUG builds. Go figure.
This reverts commit r234261.
llvm-svn: 234447
show more ...
|
#
303c3ac9 |
| 07-Apr-2015 |
Daniel Jasper <djasper@google.com> |
Revert "[SEH] Implement filter capturing in CodeGen"
Test fails: http://lab.llvm.org:8080/green/job/clang-stage2-configure-Rlto_check/3182/
llvm-svn: 234306
|
#
0ada50f1 |
| 06-Apr-2015 |
Reid Kleckner <reid@kleckner.net> |
[SEH] Implement filter capturing in CodeGen
While capturing filters aren't very common, we'd like to outline __finally blocks in the frontend to simplify -O0 EH preparation and reduce code size. Fin
[SEH] Implement filter capturing in CodeGen
While capturing filters aren't very common, we'd like to outline __finally blocks in the frontend to simplify -O0 EH preparation and reduce code size. Finally blocks are usually have captures, and this is the first step towards that.
Currently we don't support capturing 'this' or VLAs.
Reviewers: majnemer
Differential Revision: http://reviews.llvm.org/D8825
llvm-svn: 234261
show more ...
|
#
1ed728c4 |
| 05-Apr-2015 |
David Blaikie <dblaikie@gmail.com> |
[opaque pointer type] More GEP API migrations
Looks like the VTable code in particular will need some work to pass around the pointee type explicitly.
llvm-svn: 234128
|
#
fb901c7a |
| 04-Apr-2015 |
David Blaikie <dblaikie@gmail.com> |
[opaque pointer type] more GEP API migrations
llvm-svn: 234097
|
#
7ffc3fbb |
| 20-Mar-2015 |
Reid Kleckner <reid@kleckner.net> |
C++14: Disable sized deallocation by default due to ABI breakage
There are no widely deployed standard libraries providing sized deallocation functions, so we have to punt and ask the user if they w
C++14: Disable sized deallocation by default due to ABI breakage
There are no widely deployed standard libraries providing sized deallocation functions, so we have to punt and ask the user if they want us to use sized deallocation. In the future, when such libraries are deployed, we can teach the driver to detect them and enable this feature.
N3536 claimed that a weak thunk from sized to unsized deallocation could be emitted to avoid breaking backwards compatibility with standard libraries not providing sized deallocation. However, this approach and other variations don't work in practice.
With the weak function approach, the thunk has to have default visibility in order to ensure that it is overridden by other DSOs providing sized deallocation. Weak, default visibility symbols are particularly expensive on MachO, so John McCall was considering disabling this feature by default on Darwin. It also changes behavior ELF linking behavior, causing certain otherwise unreferenced object files from an archive to be pulled into the link.
Our second approach was to use an extern_weak function declaration and do an inline conditional branch at the deletion call site. This doesn't work because extern_weak only works on MachO if you have some archive providing the default value of the extern_weak symbol. Arranging to provide such an archive has the same challenges as providing the symbol in the standard library. Not to mention that extern_weak doesn't really work on COFF.
Reviewers: rsmith, rjmccall
Differential Revision: http://reviews.llvm.org/D8467
llvm-svn: 232788
show more ...
|
#
f3d3db65 |
| 19-Mar-2015 |
Artem Belevich <tra@google.com> |
Remove .CUDAIsDevice flags from CodeGenOpts as it's already available in LangOpts.
Differential Revision: http://reviews.llvm.org/D8385
llvm-svn: 232749
|
Revision tags: llvmorg-3.5.2, llvmorg-3.5.2-rc1 |
|
#
3eff5f46 |
| 25-Feb-2015 |
Alexey Bataev <a.bataev@hotmail.com> |
[OPENMP] Rename methods of OpenMPRuntime class. NFC.
llvm-svn: 230470
|
Revision tags: llvmorg-3.6.0 |
|
#
4343922d |
| 19-Feb-2015 |
Reid Kleckner <reid@kleckner.net> |
Avoid using a COMDAT for sized delete on MachO
llvm-svn: 229915
|