- Oct 23, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 117170
-
Jakob Stoklund Olesen authored
When a block has exactly two uses and the register is both live-in and live-out, don't isolate the block. We would be inserting two copies, so we haven't really made any progress. If the live-in and live-out values separate into disconnected components after splitting, we would be making progress. We can't detect that for now. llvm-svn: 117169
-
- Oct 22, 2010
-
-
Evan Cheng authored
llvm-svn: 117155
-
Evan Cheng authored
llvm-svn: 117151
-
Jakob Stoklund Olesen authored
An exit block with a critical edge must only have predecessors in the loop, or just before the loop. This guarantees that the inserted copies in the loop predecessors dominate the exit block. llvm-svn: 117144
-
Jakob Stoklund Olesen authored
llvm-svn: 117143
-
- Oct 21, 2010
-
-
Michael J. Spencer authored
X86: Base _fltused on the FunctionType of the called value instead of the potentially null "CalledFunction". Thanks Duncan! This is needed for indirect calls. llvm-svn: 117061
-
Jakob Stoklund Olesen authored
Parent - union(Y, ...). Doh. llvm-svn: 117042
-
Jakob Stoklund Olesen authored
unconditional branch. llvm-svn: 117041
-
Duncan Sands authored
(gcc-4.6 warning). llvm-svn: 117022
-
Duncan Sands authored
(gcc-4.6 warns about these). llvm-svn: 117021
-
Michael J. Spencer authored
This should be the minimum set of functions that could possibly need it. llvm-svn: 116978
-
Jakob Stoklund Olesen authored
llvm-svn: 116962
-
Evan Cheng authored
- Initial register pressure in the loop should be all the live defs into the loop. Not just those from loop preheader which is often empty. - When an instruction is hoisted, update register pressure from loop preheader to the original BB. - Treat only use of a virtual register as kill since the code is still SSA. llvm-svn: 116956
-
Jakob Stoklund Olesen authored
llvm-svn: 116951
-
- Oct 20, 2010
-
-
Dale Johannesen authored
types are no longer Legal on X86, we don't need it. No functional change. 8499854. llvm-svn: 116947
-
Jakob Stoklund Olesen authored
operand, also check if subregisters are killed. Add <imp-def> operands for subregisters that remain alive after a super register is killed. I don't have a testcase for this that reproduces on trunk. <rdar://problem/8441758> llvm-svn: 116940
-
Dan Gohman authored
llvm-svn: 116890
-
Jim Grosbach authored
setup they require. Use this for ARM/Darwin to rematerialize the base pointer from the frame pointer when required. rdar://8564268 llvm-svn: 116879
-
- Oct 19, 2010
-
-
Jakob Stoklund Olesen authored
Pull an unsigned out of the Contents union such that it has the same size as two pointers and no padding. Arrange members such that the Contents union and all pointers can be 8-byte aligned without padding. This speeds up code generation by 0.8% on a 64-bit host. 32-bit hosts should be unaffected. llvm-svn: 116857
-
Evan Cheng authored
erased the instruction during LICM so UpdateRegPressureAfter() should not reference it afterwards. llvm-svn: 116845
-
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
-
Daniel Dunbar authored
is", which breaks some nightly tests. llvm-svn: 116816
-
NAKAMURA Takumi authored
lib/CodeGen/TargetLoweringObjectFileImpl.cpp: Tweak to emit ".{section}${name}" instead of ".{section}$linkonce_{name}" for linkonce sections. It seems GNU ld/PECOFF relies on section names, linking with g++'s libstdc++.a would fail. llvm-svn: 116791
-
Andrew Trick authored
in MultiSource/Benchmarks/VersaBench/beamformer/beamformer. SmallSet.insert returns true if the element is inserted. llvm-svn: 116790
-
Evan Cheng authored
"long latency" enough to hoist even if it may increase spilling. Reloading a value from spill slot is often cheaper than performing an expensive computation in the loop. For X86, that means machine LICM will hoist SQRT, DIV, etc. ARM will be somewhat aggressive with VFP and NEON instructions. - Enable register pressure aware machine LICM by default. llvm-svn: 116781
-
- Oct 18, 2010
-
-
Bill Wendling authored
llvm-svn: 116750
-
Dan Gohman authored
is currently inert by default. llvm-svn: 116732
-
Dan Gohman authored
does normal initialization and normal chaining. Change the default AliasAnalysis implementation to NoAlias. Update StandardCompileOpts.h and friends to explicitly request BasicAliasAnalysis. Update tests to explicitly request -basicaa. llvm-svn: 116720
-
Jim Grosbach authored
llvm-svn: 116710
-
- Oct 16, 2010
-
-
Michael J. Spencer authored
if any floating point arguments are passed to an external function. llvm-svn: 116665
-
Michael J. Spencer authored
llvm-svn: 116664
-
Evan Cheng authored
More machine LICM work. It now tracks register pressure for path from preheader to current BB and use the information determine whether hoisting is worthwhile. llvm-svn: 116654
-
- Oct 15, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 116580
-
Jakob Stoklund Olesen authored
llvm-svn: 116547
-
Jakob Stoklund Olesen authored
All registers created during splitting or spilling are assigned to the same stack slot as the parent register. When splitting or rematting, we may not spill at all. In that case the stack slot is still assigned, but it will be dead. llvm-svn: 116546
-
Jakob Stoklund Olesen authored
splitting or spillling, and to help with rematerialization. Use LiveRangeEdit in InlineSpiller and SplitKit. This will eventually make it possible to share remat code between InlineSpiller and SplitKit. llvm-svn: 116543
-
- Oct 14, 2010
-
-
Jakob Stoklund Olesen authored
Before we would also split around a loop if any peripheral block had multiple uses. This could cause repeated splitting when splitting a different live range would insert uses into the periphery. Now -spiller=inline passes the nightly test suite again. llvm-svn: 116494
-
Evan Cheng authored
llvm-svn: 116465
-
- Oct 13, 2010
-
-
Owen Anderson authored
llvm-svn: 116441
-