- Nov 14, 2010
-
-
Duncan Sands authored
it to get better phi node simplification. llvm-svn: 119055
-
- Nov 12, 2010
-
-
Duncan Sands authored
"%z = %x and %y". If GVN can prove that %y equals %x, then it turns this into "%z = %x and %x". With the new code, %z will be replaced with %x everywhere (and then deleted). Previously %z would be value numbered too, which is a waste of time. Also, while a clever value numbering algorithm would give %z the same value number as %x, our current one doesn't do so (at least I don't think it does). The new logic has an essentially equivalent effect to what you would get if %z was given the same value number as %x, i.e. it should make value numbering smarter. While there, get hold of target data once at the start rather than a gazillion times all over the place. llvm-svn: 118923
-
Dan Gohman authored
one store dead. This is especially noticeable in SingleSource/Benchmarks/Shootout/objinst. llvm-svn: 118875
-
- Nov 11, 2010
-
-
Dan Gohman authored
and vaarg instructions. llvm-svn: 118845
-
Dan Gohman authored
llvm-svn: 118788
-
Dan Gohman authored
execute. Make Sink's predicate more precise. llvm-svn: 118787
-
- Nov 10, 2010
-
-
Dan Gohman authored
references. For example, this allows gvn to eliminate the load in this example: void foo(int n, int* p, int *q) { p[0] = 0; p[1] = 1; if (n) { *q = p[0]; } } llvm-svn: 118714
-
Dan Gohman authored
instructions instead of hard-coding operand numbers. llvm-svn: 118698
-
- Nov 09, 2010
-
-
Dan Gohman authored
llvm-svn: 118618
-
- Oct 29, 2010
-
-
Owen Anderson authored
Give up on doing in-line instruction simplification during correlated value propagation. Instruction simplification needs to be guaranteed never to be run on an unreachable block. However, earlier block simplifications may have changed the CFG to make block that were reachable when we began our iteration unreachable by the time we try to simplify them. (Note that this also means that our depth-first iterators were potentially being invalidated). This should not have a large impact on code quality, since later runs of instcombine should pick up these simplifications. Fixes PR8506. llvm-svn: 117709
-
John Thompson authored
Inline asm multiple alternative constraints development phase 2 - improved basic logic, added initial platform support. llvm-svn: 117667
-
- Oct 20, 2010
-
-
Dan Gohman authored
uint64_t, plus fixes for places I missed before. llvm-svn: 116875
-
- Oct 19, 2010
-
-
Dan Gohman authored
llvm-svn: 116858
-
Owen Anderson authored
they do not also require them. This allows us to reduce inter-pass linkage dependencies. llvm-svn: 116854
-
Dan Gohman authored
use uint64_t. llvm-svn: 116839
-
Owen Anderson authored
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies. Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments. I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly. llvm-svn: 116820
-
Dan Gohman authored
llvm-svn: 116815
-
- Oct 18, 2010
-
-
Dan Gohman authored
llvm-svn: 116743
-
- Oct 16, 2010
-
-
Benjamin Kramer authored
llvm-svn: 116670
-
Owen Anderson authored
forwarding is implemented with a load/store pair rather than a memcpy. llvm-svn: 116637
-
- Oct 13, 2010
-
-
Rafael Espindola authored
llvm-svn: 116387
-
- Oct 12, 2010
-
-
Owen Anderson authored
perform initialization without static constructors AND without explicit initialization by the client. For the moment, passes are required to initialize both their (potential) dependencies and any passes they preserve. I hope to be able to relax the latter requirement in the future. llvm-svn: 116334
-
- Oct 08, 2010
-
-
Dan Gohman authored
formulae which become illegal as a result of the offset updating don't escape. This is for rdar://8529692. No testcase yet, because the given cases hit use-list ordering differences. llvm-svn: 116093
-
Daniel Dunbar authored
llvm-svn: 116034
-
Dan Gohman authored
one user. This code will be restructured soon and FormulaSorter is getting in the way. llvm-svn: 116012
-
Dan Gohman authored
llvm-svn: 116011
-
Dan Gohman authored
not just base registers. llvm-svn: 116010
-
Dan Gohman authored
llvm-svn: 116009
-
Dan Gohman authored
the old use to the new one. llvm-svn: 116008
-
Dan Gohman authored
This doesn't usually matter, because the other heuristics usually succeed regardless, but it's good to keep the register use bookkeeping consistent. llvm-svn: 116005
-
Devang Patel authored
llvm-svn: 116004
-
Owen Anderson authored
llvm-svn: 115996
-
- Oct 07, 2010
-
-
Owen Anderson authored
initialization functions that initialize the set of passes implemented in that library. Add C bindings for these functions as well. llvm-svn: 115927
-
- Oct 01, 2010
-
-
Owen Anderson authored
Now that the profitable bits of EnableFullLoadPRE have been enabled by default, rip out the remainder. Anyone interested in more general PRE would be better served by implementing it separately, to get real anticipation calculation, etc. llvm-svn: 115337
-
Eric Christopher authored
memcpy alignment is the minimum of the incoming alignments. Fixes PR 8266. llvm-svn: 115305
-
Dale Johannesen authored
The x86_mmx type is used for MMX intrinsics, parameters and return values where these use MMX registers, and is also supported in load, store, and bitcast. Only the above operations generate MMX instructions, and optimizations do not operate on or produce MMX intrinsics. MMX-sized vectors <2 x i32> etc. are lowered to XMM or split into smaller pieces. Optimizations may occur on these forms and the result casted back to x86_mmx, provided the result feeds into a previous existing x86_mmx operation. The point of all this is prevent optimizations from introducing MMX operations, which is unsafe due to the EMMS problem. llvm-svn: 115243
-
- Sep 30, 2010
-
-
Owen Anderson authored
We do want to allow LoadPRE to perform LICM-like transformations: we already consider PHI nodes to be negligible for code size (making this transform code size neutral), and it allows us to hoist values out of loops, which is always a good thing. llvm-svn: 115205
-
Jakob Stoklund Olesen authored
The bug that broke i386 linux has been fixed in r115191. llvm-svn: 115204
-
Benjamin Kramer authored
Tighten up prototype verification of strchr and strrchr to avoid a crash in the very unlikely case that someone passes an integer > i64 to strchr. llvm-svn: 115144
-
Benjamin Kramer authored
llvm-svn: 115116
-