| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
direct call.
llvm-svn: 151645
|
|
|
|
|
|
| |
prediction. ...", it is breaking the Clang build during the Compiler-RT part.
llvm-svn: 151630
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the processor keeps a return addresses stack (RAS) which stores the address
and the instruction execution state of the instruction after a function-call
type branch instruction.
Calling a "noreturn" function with normal call instructions (e.g. bl) can
corrupt RAS and causes 100% return misprediction so LLVM should use a
unconditional branch instead. i.e.
mov lr, pc
b _foo
The "mov lr, pc" is issued in order to get proper backtrace.
rdar://8979299
llvm-svn: 151623
|
|
|
|
|
|
| |
to static data that should not be modified.
llvm-svn: 151134
|
|
|
|
| |
llvm-svn: 149961
|
|
|
|
| |
llvm-svn: 148578
|
|
|
|
|
|
| |
Found by the clang static analyzer.
llvm-svn: 148541
|
|
|
|
|
|
| |
CodeGen.
llvm-svn: 148218
|
|
|
|
|
|
| |
is discouraged now.
llvm-svn: 147738
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
undefined result. This adds new ISD nodes for the new semantics,
selecting them when the LLVM intrinsic indicates that the undef behavior
is desired. The new nodes expand trivially to the old nodes, so targets
don't actually need to do anything to support these new nodes besides
indicating that they should be expanded. I've done this for all the
operand types that I could figure out for all the targets. Owners of
various targets, please review and let me know if any of these are
incorrect.
Note that the expand behavior is *conservatively correct*, and exactly
matches LLVM's current behavior with these operations. Ideally this
patch will not change behavior in any way. For example the regtest suite
finds the exact same instruction sequences coming out of the code
generator. That's why there are no new tests here -- all of this is
being exercised by the existing test suite.
Thanks to Duncan Sands for reviewing the various bits of this patch and
helping me get the wrinkles ironed out with expanding for each target.
Also thanks to Chris for clarifying through all the discussions that
this is indeed the approach he was looking for. That said, there are
likely still rough spots. Further review much appreciated.
llvm-svn: 146466
|
|
|
|
|
|
| |
SDNodes. Mark these nodes as illegal by default, unless the target declares otherwise.
llvm-svn: 146171
|
|
|
|
|
|
|
|
|
|
|
|
| |
change, now you need a TargetOptions object to create a TargetMachine. Clang
patch to follow.
One small functionality change in PTX. PTX had commented out the machine
verifier parts in their copy of printAndVerify. That now calls the version in
LLVMTargetMachine. Users of PTX who need verification disabled should rely on
not passing the command-line flag to enable it.
llvm-svn: 145714
|
|
|
|
|
|
| |
new register-allocation pattern
llvm-svn: 145065
|
|
|
|
| |
llvm-svn: 144631
|
|
|
|
|
|
| |
When this field is true it means that the load is from constant (runt-time or compile-time) and so can be hoisted from loops or moved around other memory accesses
llvm-svn: 144100
|
|
|
|
| |
llvm-svn: 143080
|
|
|
|
| |
llvm-svn: 142224
|
|
|
|
|
|
| |
to reflect this
llvm-svn: 142194
|
|
|
|
| |
llvm-svn: 141981
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
arguments as before), unset CR1EQ otherwise.
llvm-svn: 138802
|
|
|
|
|
|
| |
enough to fix properly.
llvm-svn: 138751
|
|
|
|
|
|
|
|
| |
platform-independent code, since a bunch of platforms (ARM, Mips, PPC, Alpha are the relevant targets here) need to do essentially the same thing.
I think this completes the basic CodeGen for atomicrmw and cmpxchg.
llvm-svn: 136813
|
|
|
|
|
|
| |
MCTargetAsmLexer; rename createAsmLexer to createMCAsmLexer and createAsmParser to createMCAsmParser.
llvm-svn: 136027
|
|
|
|
| |
llvm-svn: 135866
|
|
|
|
| |
llvm-svn: 135375
|
|
|
|
|
|
| |
is to use this for architectures that have a native FMA instruction.
llvm-svn: 134742
|
|
|
|
|
|
| |
Noticed by Benjamin Kramer!
llvm-svn: 134376
|
|
|
|
| |
llvm-svn: 134005
|
|
|
|
| |
llvm-svn: 133260
|
|
|
|
|
|
|
|
| |
doesn't appear to be dead.
Roman, since you're writing tests for other PPC-SVR4 vararg-related stuff, would you mind writing a test for this?
llvm-svn: 133018
|
|
|
|
|
|
|
|
| |
No functional change.
Part of PR6965
llvm-svn: 132763
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Check for MTCTR8 in addition to MTCTR when looking up a hazard.
- When lowering an indirect call use CTR8 when targeting 64bit.
- Introduce BCTR8 that uses CTR8 and use it on 64bit when expanding ISD::BRIND.
The last change fixes PR8487. With those changes, we are able to compile a
running "ls" and "sh" on FreeBSD/PowerPC64.
llvm-svn: 132552
|
|
|
|
|
|
| |
Part of rdar://9119939
llvm-svn: 132510
|
|
|
|
| |
llvm-svn: 131627
|
|
|
|
|
|
| |
functionality change.
llvm-svn: 131012
|
|
|
|
|
|
| |
triple component.
llvm-svn: 129838
|
|
|
|
| |
llvm-svn: 129810
|
|
|
|
|
|
| |
Luis Felipe Strano Moraes!
llvm-svn: 129558
|
|
|
|
|
|
|
| |
This causes defs to dominate uses, no instructions after terminators, and other
goodness.
llvm-svn: 128836
|
|
|
|
|
|
| |
The 32-bit R0 cannot be used where a 64-bit register is expected.
llvm-svn: 128828
|
|
|
|
|
|
| |
the type of the LHS.
llvm-svn: 126518
|
|
|
|
|
|
|
|
|
|
|
| |
LiveIns."
In other words, do not keep track of argument's location. The debugger (gdb) is not prepared to see line table entries for arguments. For the debugger, "second" line table entry marks beginning of function body.
This requires some coordination with debugger to get this working.
- The debugger needs to be aware of prolog_end attribute attached with line table entries.
- The compiler needs to accurately mark prolog_end in line table entries (at -O0 and at -O1+)
llvm-svn: 126155
|
|
|
|
|
|
| |
other getNode() methods. Radar 9002173.
llvm-svn: 125665
|
|
|
|
| |
llvm-svn: 124611
|
|
|
|
| |
llvm-svn: 123707
|
|
|
|
|
|
| |
and fixes here and there.
llvm-svn: 123170
|
|
|
|
|
|
|
| |
new gcc warning that complains on self-assignments and
self-initializations.
llvm-svn: 122458
|
|
|
|
|
|
|
| |
something that just glues two nodes together, even if it is
sometimes used for flags.
llvm-svn: 122310
|