| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
set.
rdar://9423996
llvm-svn: 131283
|
| |
|
|
|
|
| |
the users.
llvm-svn: 131277
|
| |
|
|
|
|
|
| |
Interleave IV simplifications. Currently involves EliminateComparison
and EliminateRemainder. Next I'll add EliminateExtend.
llvm-svn: 131210
|
| |
|
|
| |
llvm-svn: 131112
|
| |
|
|
|
|
|
| |
return the pointer being dereferenced, it returns the pointee, but a call
might return the pointer itself.
llvm-svn: 130979
|
| |
|
|
| |
llvm-svn: 130967
|
| |
|
|
|
|
| |
side of the icmp is an exact shift.
llvm-svn: 130954
|
| |
|
|
|
|
| |
crash.
llvm-svn: 130911
|
| |
|
|
| |
llvm-svn: 130903
|
| |
|
|
|
|
| |
filename.
llvm-svn: 130897
|
| |
|
|
| |
llvm-svn: 130895
|
| |
|
|
| |
llvm-svn: 130894
|
| |
|
|
| |
llvm-svn: 130880
|
| |
|
|
| |
llvm-svn: 130876
|
| |
|
|
| |
llvm-svn: 130869
|
| |
|
|
|
|
| |
frontend, if applicable.
llvm-svn: 130835
|
| |
|
|
|
|
|
|
| |
This adds functionality to remove size/zero extension during indvars
without generating a canonical IV and rewriting all IV users. It's
disabled by default so should have no effect on codegen. Work in progress.
llvm-svn: 130829
|
| |
|
|
|
|
|
|
|
| |
Only create a canonical IV for backedge taken count if it will
actually be used by LinearFunctionTestReplace. And some related
cleanup, preparing to reduce dependence on canonical IVs.
No significant effect on x86 or arm in the test-suite.
llvm-svn: 130799
|
| |
|
|
| |
llvm-svn: 130755
|
| |
|
|
|
|
|
|
| |
model constants which can be added to base registers via add-immediate
instructions which don't require an additional register to materialize
the immediate.
llvm-svn: 130743
|
| |
|
|
|
|
| |
Instead, just use whatever location info first non-phi instruction has.
llvm-svn: 130729
|
| |
|
|
| |
llvm-svn: 130705
|
| |
|
|
|
|
|
| |
This automagically provides a transform noticed by my super-optimizer
as occurring quite often: "rem x, (select cond, x, 1)" -> 0.
llvm-svn: 130694
|
| |
|
|
|
|
| |
problem reported on cfe-dev.
llvm-svn: 130661
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
urem or constant B.
This obviously helps a lot if the division would be turned into a libcall
(think i64 udiv on i386), but div is also one of the few remaining instructions
on modern CPUs that become more expensive when the bitwidth gets bigger.
This also helps register pressure on i386 when dividing chars, divb needs
two 8-bit parts of a 16 bit register as input where divl uses two registers.
int foo(unsigned char a) { return a/10; }
int bar(unsigned char a, unsigned char b) { return a/b; }
compiles into (x86_64)
_foo:
imull $205, %edi, %eax
shrl $11, %eax
ret
_bar:
movzbl %dil, %eax
divb %sil, %al
movzbl %al, %eax
ret
llvm-svn: 130615
|
| |
|
|
|
|
| |
This folds away silly stuff like (a&255)/1000 -> 0.
llvm-svn: 130614
|
| |
|
|
| |
llvm-svn: 130551
|
| |
|
|
| |
llvm-svn: 130536
|
| |
|
|
| |
llvm-svn: 130528
|
| |
|
|
| |
llvm-svn: 130527
|
| |
|
|
|
|
| |
phi node folding
llvm-svn: 130526
|
| |
|
|
| |
llvm-svn: 130489
|
| |
|
|
|
|
| |
Fixes PR9809.
llvm-svn: 130485
|
| |
|
|
| |
llvm-svn: 130450
|
| |
|
|
|
|
|
| |
This shouldn't happen in practice because the icmp would be a constant.
Add a check so we don't miscompile code if something goes wrong.
llvm-svn: 130446
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
between two reads (threading).
Fix an off-by-one in the indirect counter table that I meant to revert after an
earlier experiment. Whoops!
Implement GCOV_PREFIX. Doesn't handle GCOV_PREFIX_STRIP yet.
Fix an off-by-one in string emission. Extra whoops!
Tolerate DISubprograms that have null Function*'s attached to them. I don't yet
understand what this means, but it happens when you have a global static with
a non-trivial constructor/destructor.
Fix a crash on switch statements with a single successor (default-only).
llvm-svn: 130443
|
| |
|
|
| |
llvm-svn: 130431
|
| |
|
|
| |
llvm-svn: 130428
|
| |
|
|
| |
llvm-svn: 130426
|
| |
|
|
| |
llvm-svn: 130419
|
| |
|
|
|
|
|
|
|
|
|
|
| |
a nice and tidy:
%x1 = load i32* %0, align 4
%1 = icmp eq i32 %x1, 1179403647
br i1 %1, label %if.then, label %if.end
instead of doing lots of loads and branches. May the FreeBSD bootloader
long fit in its allocated space.
llvm-svn: 130416
|
| |
|
|
| |
llvm-svn: 130414
|
| |
|
|
| |
llvm-svn: 130408
|
| |
|
|
|
|
| |
This happens when GVN widens loads. Part of PR6627.
llvm-svn: 130405
|
| |
|
|
|
|
| |
static functions instead of passing around tons of random ivars.
llvm-svn: 130403
|
| |
|
|
| |
llvm-svn: 130401
|
| |
|
|
|
|
|
|
|
|
|
| |
wider load would allow elimination of subsequent loads, and when the wider
load is still a native integer type. This eliminates a ton of loads on
various benchmarks involving struct fields, though it is somewhat hobbled
by clang not being very aggressive about field alignment.
This is yet another step along the way towards resolving PR6627.
llvm-svn: 130390
|
| |
|
|
|
|
| |
stage2 compiler error.
llvm-svn: 130350
|
| |
|
|
|
|
|
|
|
| |
Modified LinearFunctionTestReplace to push the condition on the dead
list instead of eagerly deleting it. This can cause unnecessary
IV rewrites, which should have no effect on codegen and will not be an
issue once we stop generating canonical IVs.
llvm-svn: 130340
|
| |
|
|
|
|
| |
Assign DebugLoc to this new trap instruction.
llvm-svn: 130315
|