| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
memory access bug in the heuristic solver.
llvm-svn: 95633
|
| |
|
|
|
|
|
|
|
|
|
| |
Initial skeleton and SCEVUnknown lowering implemented,
the rest should come relatively quickly. Move testcase
to new directory.
Move pass to right before SimplifyLibCalls - which is
moved down a bit so we can take advantage of a few opts.
llvm-svn: 95628
|
| |
|
|
| |
llvm-svn: 95627
|
| |
|
|
| |
llvm-svn: 95624
|
| |
|
|
|
|
|
| |
direct MCExpr equivalents. Don't use MCExpr::Shr because it isn't
consistent between targets.
llvm-svn: 95620
|
| |
|
|
|
|
|
|
|
|
|
| |
Document that MCExpr::Div, Mod, and the comparison operators are all
signed operators.
Document that the comparison operators' results are target-dependent.
Document that the behavior of shr is target-dependent.
llvm-svn: 95619
|
| |
|
|
| |
llvm-svn: 95616
|
| |
|
|
| |
llvm-svn: 95609
|
| |
|
|
| |
llvm-svn: 95603
|
| |
|
|
|
|
|
| |
MCSymbol, we can remove the 'suffix' argument of
GetBlockAddressSymbol. Do so.
llvm-svn: 95601
|
| |
|
|
|
|
| |
2 files changed, 48 insertions(+), 83 deletions(-)
llvm-svn: 95599
|
| |
|
|
|
|
| |
backend to use X86MCTargetExpr, simplifying a bunch of code.
llvm-svn: 95595
|
| |
|
|
|
|
|
|
| |
for register tokens. Before, if it encountered
'%al,' it would report 'al,' as the token. Now it
correctly reports '%al'.
llvm-svn: 95594
|
| |
|
|
| |
llvm-svn: 95593
|
| |
|
|
|
|
| |
expression; don't go into an infinite loop if it does.
llvm-svn: 95591
|
| |
|
|
|
|
|
| |
representing @GOT and friends. Use it for
personality references as a first use.
llvm-svn: 95588
|
| |
|
|
| |
llvm-svn: 95587
|
| |
|
|
|
|
|
|
|
| |
The 'R' suffix means the to-integer operations use the rounding mode specified
by the FPSCR, encoded as Inst{7} = 0.
A8.6.295
llvm-svn: 95584
|
| |
|
|
|
|
|
|
|
| |
in global initializers. Instead of aborting, attempt to fold them on the
spot. If folding succeeds, emit the folded expression instead.
This fixes PR6255.
llvm-svn: 95583
|
| |
|
|
| |
llvm-svn: 95582
|
| |
|
|
|
|
|
| |
we can get in here if FastISel gives up in a block.
(Actually the two copies of this need to be unified. Later.)
llvm-svn: 95579
|
| |
|
|
|
|
| |
for blocks ending in "unreachable".
llvm-svn: 95565
|
| |
|
|
|
|
| |
its current purpose.
llvm-svn: 95564
|
| |
|
|
|
|
| |
purpose.
llvm-svn: 95560
|
| |
|
|
| |
llvm-svn: 95559
|
| |
|
|
|
|
| |
A8.6.331 VMOV (between two ARM core registers and two single-precision registers)
llvm-svn: 95548
|
| |
|
|
|
|
| |
Thanks to Kristaps Straupe for noticing the bug.
llvm-svn: 95537
|
| |
|
|
|
|
| |
cppcheck!
llvm-svn: 95527
|
| |
|
|
|
|
|
|
|
| |
warns about this base class not having a virtual destructor, but since
this class has no virtual methods and neither it or the types derived
from it has a destructor, a protected trivial destructor will do (and
shuts cppcheck up) the trick without the cost of introducing a vtable.
llvm-svn: 95526
|
| |
|
|
| |
llvm-svn: 95506
|
| |
|
|
|
|
|
|
| |
- o32 cc must pass all arguments in A0...A3 and stack regardless
if its type (but respect the alignment).
- Store all variable arguments back to the caller stack.
llvm-svn: 95500
|
| |
|
|
|
|
|
|
|
|
| |
only run for x86 with fastisel. I've found it being very effective in
eliminating some obvious dead code as result of formal parameter lowering
especially when tail call optimization eliminated the need for some of the loads
from fixed frame objects. It also shrinks a number of the tests. A couple of
tests no longer make sense and are now eliminated.
llvm-svn: 95493
|
| |
|
|
| |
llvm-svn: 95488
|
| |
|
|
| |
llvm-svn: 95477
|
| |
|
|
|
|
| |
unnecessary stack adjustments.
llvm-svn: 95475
|
| |
|
|
|
|
|
| |
addresses in dbg.declare; ignore this for the
moment to prevent things from breaking.
llvm-svn: 95471
|
| |
|
|
| |
llvm-svn: 95468
|
| |
|
|
|
|
| |
to function-local IR were not getting written by BitcodeWriter; solution is for these metadata to be enumerated just like global metadata.
llvm-svn: 95467
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This time it's for real! I am going to hook this up in the frontends as well.
The inliner has some experimental heuristics for dealing with the inline hint.
When given a -respect-inlinehint option, functions marked with the inline
keyword are given a threshold just above the default for -O3.
We need some experiments to determine if that is the right thing to do.
llvm-svn: 95466
|
| |
|
|
| |
llvm-svn: 95461
|
| |
|
|
|
|
| |
Radar 7614112.
llvm-svn: 95456
|
| |
|
|
| |
llvm-svn: 95454
|
| |
|
|
| |
llvm-svn: 95453
|
| |
|
|
| |
llvm-svn: 95452
|
| |
|
|
| |
llvm-svn: 95448
|
| |
|
|
|
|
| |
redundant with a correct one) pattern that was added for the disassembler.
llvm-svn: 95446
|
| |
|
|
| |
llvm-svn: 95445
|
| |
|
|
|
|
|
|
|
|
|
| |
pslld 69, %mm3 ## encoding: [0x0f,0xf2,0x1c,0x25,0x45,0x00,0x00,0x00]
instead of like this:
pslld 69, %mm3 ## encoding: [0x0f,0xf2,0x1c,0x25,0x45,0000,0000,0000]
this only affects 0.
llvm-svn: 95441
|
| |
|
|
| |
llvm-svn: 95440
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Weird code sometimes uses pointer constants other than null. This patch
teaches SimplifyCFG to build switch instructions in those cases.
Code like this:
void f(const char *x) {
if (!x)
puts("null");
else if ((uintptr_t)x == 1)
puts("one");
else if (x == (char*)2 || x == (char*)3)
puts("two");
else if ((intptr_t)x == 4)
puts("four");
else
puts(x);
}
Now becomes a switch:
define void @f(i8* %x) nounwind ssp {
entry:
%magicptr23 = ptrtoint i8* %x to i64 ; <i64> [#uses=1]
switch i64 %magicptr23, label %if.else16 [
i64 0, label %if.then
i64 1, label %if.then2
i64 2, label %if.then9
i64 3, label %if.then9
i64 4, label %if.then14
]
Note that LLVM's own DenseMap uses magic pointers.
llvm-svn: 95439
|