| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
definition is unused, and enhance it so it can tell that functions which are only used by a blockaddress are in fact dead. This probably doesn't happen much on most code, but the Linux kernel's _THIS_IP_ can trigger this issue with blockaddress. (GlobalDCE can also handle the given tescase, but we only run that at -O3.) Found while looking at PR11180.
llvm-svn: 142572
|
| |
|
|
| |
llvm-svn: 142259
|
| |
|
|
|
|
|
| |
Some code want to check that *any* call within a function has the 'returns
twice' attribute, not just that the current function has one.
llvm-svn: 142221
|
| |
|
|
|
|
|
| |
obsolete. Check the attribute instead.
<rdar://problem/8031714>
llvm-svn: 142212
|
| |
|
|
|
|
|
|
|
|
|
|
| |
profile metadata at the same time. Use it to preserve metadata attached
to a branch when re-writing it in InstCombine.
Add metadata to the canonicalize_branch InstCombine test, and check that
it is tranformed correctly.
Reviewed by Nick Lewycky!
llvm-svn: 142168
|
| |
|
|
|
|
| |
While at it, merge some format strings.
llvm-svn: 142140
|
| |
|
|
|
|
|
|
| |
note/warning/error as a
string, pass it around as an enum.
llvm-svn: 142107
|
| |
|
|
| |
llvm-svn: 142013
|
| |
|
|
| |
llvm-svn: 141990
|
| |
|
|
| |
llvm-svn: 141989
|
| |
|
|
| |
llvm-svn: 141727
|
| |
|
|
| |
llvm-svn: 141366
|
| |
|
|
|
|
| |
with this patch.
llvm-svn: 141333
|
| |
|
|
| |
llvm-svn: 141313
|
| |
|
|
|
|
|
|
| |
They are not in sync now, for example Bitcast would show up as LLVMCall.
So instead introduce 2 functions that map to and from the opcodes in the C
bindings.
llvm-svn: 141290
|
| |
|
|
| |
llvm-svn: 141288
|
| |
|
|
| |
llvm-svn: 141287
|
| |
|
|
| |
llvm-svn: 141286
|
| |
|
|
| |
llvm-svn: 141285
|
| |
|
|
| |
llvm-svn: 141266
|
| |
|
|
|
|
| |
fixes PR11038, but there are still some cleanups to be done.
llvm-svn: 141204
|
| |
|
|
| |
llvm-svn: 141097
|
| |
|
|
|
|
| |
tool can share it with GCOV writer.
llvm-svn: 141095
|
| |
|
|
| |
llvm-svn: 141023
|
| |
|
|
| |
llvm-svn: 141001
|
| |
|
|
| |
llvm-svn: 140874
|
| |
|
|
| |
llvm-svn: 140873
|
| |
|
|
|
|
| |
operand ordering. Patch by Stepan Dyatkovskiy.
llvm-svn: 140803
|
| |
|
|
| |
llvm-svn: 140785
|
| |
|
|
| |
llvm-svn: 140625
|
| |
|
|
| |
llvm-svn: 140606
|
| |
|
|
|
|
| |
This makes sure that the unwind destination of an invoke is a landing pad.
llvm-svn: 140280
|
| |
|
|
|
|
|
|
|
|
|
|
| |
assert(!"error message");
To:
assert(0 && "error message");
which is more consistant across the code base.
llvm-svn: 140234
|
| |
|
|
| |
llvm-svn: 139642
|
| |
|
|
|
|
|
|
|
|
|
|
| |
with a vector condition); such selects become VSELECT codegen nodes.
This patch also removes VSETCC codegen nodes, unifying them with SETCC
nodes (codegen was actually often using SETCC for vector SETCC already).
This ensures that various DAG combiner optimizations kick in for vector
comparisons. Passes dragonegg bootstrap with no testsuite regressions
(nightly testsuite as well as "make check-all"). Patch mostly by
Nadav Rotem.
llvm-svn: 139159
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
init.trampoline and adjust.trampoline intrinsics, into two intrinsics
like in GCC. While having one combined intrinsic is tempting, it is
not natural because typically the trampoline initialization needs to
be done in one function, and the result of adjust trampoline is needed
in a different (nested) function. To get around this llvm-gcc hacks the
nested function lowering code to insert an additional parent variable
holding the adjust.trampoline result that can be accessed from the child
function. Dragonegg doesn't have the luxury of tweaking GCC code, so it
stored the result of adjust.trampoline in the memory GCC set aside for
the trampoline itself (this is always available in the child function),
and set up some new memory (using an alloca) to hold the trampoline.
Unfortunately this breaks Go which allocates trampoline memory on the
heap and wants to use it even after the parent has exited (!). Rather
than doing even more hacks to get Go working, it seemed best to just use
two intrinsics like in GCC. Patch mostly by Sanjoy Das.
llvm-svn: 139140
|
| |
|
|
|
|
|
|
| |
call. The call may be in the same BB as the landingpad instruction. If that's
the case, then inserting the loads after the landingpad inst, but before the
extractvalues, causes undefined behavior.
llvm-svn: 139088
|
| |
|
|
|
|
|
| |
values that the resume instruction uses.
PR10850
llvm-svn: 139076
|
| |
|
|
|
|
|
|
| |
slots. This fixes a bug where the number of nodes coming into the PHI node may
not equal the number of predecessors. E.g., two or more landingpad instructions
may require a PHI before reaching the eh.exception and eh.selector instructions.
llvm-svn: 139035
|
| |
|
|
|
|
| |
ConstantVector.
llvm-svn: 139007
|
| |
|
|
|
|
| |
This fixes PR10813.
llvm-svn: 139006
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Perform the upgrading in steps.
* First, create a map of the invokes to the EH intrinsics.
* Next, take that mapping and determine if the invoke's unwind destination has a
single predecessor. If not, then create a new empty block to hold the new
landingpad instruction.
* Create a landingpad instruction into the uwnind destination. Fill it with the
values from the old selector. Map the old intrinsic calls to the new
landingpad values (there may be multiple landingpad instructions per instrinic
call pairs).
* Go through the old intrinsic calls, create a PHI node when necessary, and then
replace their values with the new values from the landingpad instructions.
* Delete all dead instructions.
* ???
* Profit!
llvm-svn: 138990
|
| |
|
|
|
|
| |
instructions. Found by inspection; not sure what practical impact, if any, this has.
llvm-svn: 138962
|
| |
|
|
|
|
|
| |
Optimize chained bitcasts of the form A->B->A.
Undo r138722 and change isEliminableCastPair to allow this case.
llvm-svn: 138756
|
| |
|
|
| |
llvm-svn: 138749
|
| |
|
|
| |
llvm-svn: 138748
|
| |
|
|
|
|
| |
Patch by Xiaoyi Guo!
llvm-svn: 138737
|
| |
|
|
| |
llvm-svn: 138701
|
| |
|
|
| |
llvm-svn: 138700
|
| |
|
|
|
|
| |
Patch by Xiaoyi Guo!
llvm-svn: 138695
|