| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
To avoid problems with zero shifts when getting the bits that move between words
we use a trick: first shift the by amount-1, then do another shift by one. When
amount is 0 (and size 32) we first shift by 31, then by one, instead of by 32.
Also fix a latent bug that emitted the low and high words in the wrong order
when shifting right.
Fixes PR12113.
llvm-svn: 151637
|
| |
|
|
|
|
| |
prediction. ...", it is breaking the Clang build during the Compiler-RT part.
llvm-svn: 151630
|
| |
|
|
| |
llvm-svn: 151629
|
| |
|
|
| |
llvm-svn: 151627
|
| |
|
|
|
|
|
|
|
|
|
| |
When the GEP index is a vector of pointers, the code that calculated the size
of the element started from the vector type, and not the contained pointer type.
As a result, instead of looking at the data element pointed by the vector, this
code used the size of the vector. This works for 32bit members (on 32bit
systems), but not for other types. Added code to peel the vector type and
added a test.
llvm-svn: 151626
|
| |
|
|
| |
llvm-svn: 151625
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
start of it. There were all sorts of buildbot issues
llvm-svn: 151621
|
| |
|
|
| |
llvm-svn: 151620
|
| |
|
|
| |
llvm-svn: 151618
|
| |
|
|
| |
llvm-svn: 151617
|
| |
|
|
| |
llvm-svn: 151615
|
| |
|
|
|
|
| |
not O32.
llvm-svn: 151614
|
| |
|
|
|
|
| |
load and store instructions.
llvm-svn: 151611
|
| |
|
|
|
|
|
|
| |
Don't attempt to extend physreg live ranges across calls.
<rdar://problem/10942095>
llvm-svn: 151610
|
| |
|
|
| |
llvm-svn: 151607
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When an outgoing call takes more than 2k of arguments on the stack, we
don't allocate that call frame in the prolog, but adjust the stack
pointer immediately before the call instead.
This causes problems with the emergency spill slot because PEI can't
track stack pointer adjustments on the second pass, and if the outgoing
arguments are too big, SP can't be used to reach the emergency spill
slot at all.
Work around these problems by ensuring there is a base or frame pointer
that can be used to access the emergency spill slot.
<rdar://problem/10917166>
llvm-svn: 151604
|
| |
|
|
|
|
|
|
| |
Add -D option to llvm-nm to dump dynamic symbols.
Patch by David Meyer.
llvm-svn: 151600
|
| |
|
|
| |
llvm-svn: 151599
|
| |
|
|
|
|
| |
breaks other things.
llvm-svn: 151594
|
| |
|
|
|
|
| |
to the instruction scheduler for the Intel Atom.
llvm-svn: 151590
|
| |
|
|
|
|
| |
defaults to the ABI alignment. Given that, make this code a bit more aggressive in such cases.
llvm-svn: 151584
|
| |
|
|
| |
llvm-svn: 151582
|
| |
|
|
| |
llvm-svn: 151580
|
| |
|
|
|
|
|
| |
manifests itself when building LLVM with LTO.
<rdar://problem/10913281>
llvm-svn: 151576
|
| |
|
|
|
|
|
|
|
| |
%S5<def> = COPY %S0<kill>
First clear def map of Q1, etc.
No small test case available.
llvm-svn: 151574
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
We on the linker to resolve calls to the appropriate BL/BLX instruction
to make interworking function correctly. It uses the symbol in the
relocation to do that, so we need to be careful about being too clever.
To enable this for ARM mode, split the BL/BLX fixup kind off from the
unconditional-branch fixups.
rdar://10927209
llvm-svn: 151571
|
| |
|
|
|
|
| |
object given sufficient alignment. Fixes PR12098.
llvm-svn: 151553
|
| |
|
|
|
|
| |
MCize function entry label emission on PowerPC64 properly.
llvm-svn: 151547
|
| |
|
|
|
|
|
| |
rdar://10921670
PR11935
llvm-svn: 151543
|
| |
|
|
| |
llvm-svn: 151540
|
| |
|
|
| |
llvm-svn: 151538
|
| |
|
|
|
|
|
|
|
| |
After the SlotIndex slot names were updated, it is possible to apply
stricter checks to live intervals.
Also treat bundles as bags of operands when checking live intervals.
llvm-svn: 151531
|
| |
|
|
|
|
| |
thumb instruction. The PC adjustment is +4 in Thumb mode and +8 in ARM mode.
llvm-svn: 151530
|
| |
|
|
|
|
| |
Found by valgrind.
llvm-svn: 151525
|
| |
|
|
| |
llvm-svn: 151524
|
| |
|
|
|
|
|
|
| |
value numbers to be assigned when calculating any particular value number.
Enhance the logic that detects new value numbers to take this into account,
for a tiny compile time speedup. Fix a comment typo while there.
llvm-svn: 151522
|
| |
|
|
|
|
|
|
|
| |
%cmp (eg: A==B) we already replace %cmp with "true" under the true edge, and
with "false" under the false edge. This change enhances this to replace the
negated compare (A!=B) with "false" under the true edge and "true" under the
false edge. Reported to improve perlbench results by 1%.
llvm-svn: 151517
|
| |
|
|
|
|
| |
in the Makefile and the output it produces isn't used. The Hexagon intrinsics are all in the global Intrinsics.gen.
llvm-svn: 151514
|
| |
|
|
| |
llvm-svn: 151512
|
| |
|
|
|
|
|
| |
properties (invoke). Just assert that the instruction we return dominates
the insertion point.
llvm-svn: 151511
|
| |
|
|
|
|
| |
Kay Tiong Khoo.
llvm-svn: 151510
|
| |
|
|
|
|
| |
build. Testcase is still reducing.
llvm-svn: 151474
|
| |
|
|
| |
llvm-svn: 151473
|
| |
|
|
| |
llvm-svn: 151472
|
| |
|
|
| |
llvm-svn: 151471
|
| |
|
|
| |
llvm-svn: 151470
|
| |
|
|
|
|
|
|
| |
verifier does. This correctly handles invoke.
Thanks to Duncan, Andrew and Chris for the comments.
Thanks to Joerg for the early testing.
llvm-svn: 151469
|
| |
|
|
| |
llvm-svn: 151468
|
| |
|
|
|
|
| |
'gep null' when the icmp predicate is unsigned (or is signed without inbounds).
llvm-svn: 151467
|