- May 15, 2012
-
-
Sirish Pande authored
llvm-svn: 156824
-
Nuno Lopes authored
minor simplification to code: Ty is already a SCEV type; don't need to run getEffectiveSCEVType() twice llvm-svn: 156823
-
David Chisnall authored
llvm-svn: 156819
-
David Majnemer authored
llvm-svn: 156815
-
Bill Wendling authored
llvm-svn: 156812
-
Stepan Dyatkovskiy authored
llvm-svn: 156810
-
Stepan Dyatkovskiy authored
llvm-svn: 156808
-
Stepan Dyatkovskiy authored
SelectionDAGBuilder::Clusterify : main functinality was replaced with CRSBuilder::optimize, so big part of Clusterify's code was reduced. llvm-svn: 156804
-
Akira Hatanaka authored
resolved. llvm-svn: 156801
-
Jakob Stoklund Olesen authored
Besides the weight, we also want to store up to two root registers per unit. Most units will have a single root, the leaf register they represent. Units created for ad hoc aliasing get two roots: The two aliasing registers. The root registers can be used to compute the set of overlapping registers. llvm-svn: 156792
-
Bill Wendling authored
llvm-svn: 156791
-
Akira Hatanaka authored
The purpose of this option is to silence error messages issued by machine verifier passes and enable them to run to the end. If this option is not provided, -verify-machineinstrs complains when it discovers there is a non-terminator instruction (an instruction that is in a delay slot) after the first terminator in a basic block. llvm-svn: 156790
-
Michael J. Spencer authored
llvm-svn: 156787
-
Michael J. Spencer authored
llvm-svn: 156785
-
- May 14, 2012
-
-
David Blaikie authored
Found by GCC's maybe-uninitialized. llvm-svn: 156780
-
Jakob Stoklund Olesen authored
This should unbreak llvm-x86_64-linux. llvm-svn: 156778
-
Jakob Stoklund Olesen authored
RAFast must add an <imp-def> operand when it is rewriting a sub-register def that isn't a read-modify-write. llvm-svn: 156777
-
Chad Rosier authored
so that it can be reused in MemCpyOptimizer. This analysis is needed to remove an unnecessary memcpy when returning a struct into a local variable. rdar://11341081 PR12686 llvm-svn: 156776
-
Brendon Cahoon authored
llvm-svn: 156775
-
Dan Gohman authored
llvm-svn: 156774
-
Akira Hatanaka authored
llvm-svn: 156772
-
Andrew Trick authored
llvm-svn: 156770
-
Jakob Stoklund Olesen authored
Returning a temporary BitVector is very expensive. If you must, create the temporary explicitly: Use BitVector(A).flip() instead of ~A. llvm-svn: 156768
-
Jakob Stoklund Olesen authored
These operators were crazy slow, calling malloc to return a temporary result. At the same time, they look very innocent when used in code. If you need temporary BitVectors to compute your thing, create them explicitly, and use the inplace logical operators. This makes the high cost explicit in the code. llvm-svn: 156767
-
Jakob Stoklund Olesen authored
Register units can be used to compute if two registers overlap: A overlaps B iff units(A) intersects units(B). With this change, the above holds true even on targets that use ad hoc aliasing (currently only ARM). This means that register units can be used to implement regsOverlap() more efficiently, and the register allocator can use the concept to model interference. When there is no ad hoc aliasing, the register units correspond to the maximal cliques in the register overlap graph. This is optimal, no other register unit assignment can have fewer units. With ad hoc aliasing, weird things are possible, and we don't try too hard to compute the maximal cliques. The current approach is always correct, and it works very well (probably optimally) as long as the ad hoc aliasing doesn't have cliques larger than pairs. It seems unlikely that any target would need more. llvm-svn: 156763
-
Jakob Stoklund Olesen authored
The ad hoc aliasing specified in the 'Aliases' list in .td files is currently only used by computeOverlaps(). It will soon be needed to build accurate register units as well, so build the undirected graph in CodeGenRegister::buildObjectGraph() instead. Aliasing is a symmetric relationship with only one direction specified in the .td files. Make sure both directions are represented in getExplicitAliases(). llvm-svn: 156762
-
Jakob Stoklund Olesen authored
TableGen creates new register classes and sub-register indices based on the sub-register structure present in the register bank. So far, it has been doing that on a per-register basis, but that is not very efficient. This patch teaches TableGen to compute topological signatures for registers, and use that to reduce the amount of redundant computation. Registers get the same TopoSig if they have identical sub-register structure. TopoSigs are not currently exposed outside TableGen. llvm-svn: 156761
-
Jakob Stoklund Olesen authored
The existing operation (A & B).any() is very slow. llvm-svn: 156760
-
Stepan Dyatkovskiy authored
llvm-svn: 156757
-
Bill Wendling authored
llvm-svn: 156756
-
Bill Wendling authored
llvm-svn: 156755
-
Bill Wendling authored
llvm-svn: 156754
-
- May 13, 2012
-
-
Justin Holewinski authored
llvm-svn: 156745
-
Benjamin Kramer authored
Found by valgrind. llvm-svn: 156744
-
Jean-Daniel Dupas authored
llvm-svn: 156743
-
Benjamin Kramer authored
ReleaseNotes: Add a note about zero_undef on llvm.cttz/ctlz. Extend x86 section. Add a bullet for dwarf access tables. llvm-svn: 156740
-
Benjamin Kramer authored
ReleaseNotes: Add a blurb about llvm-mc -g and move inliner changes into the optimizer sections. Verbosify some bullets. llvm-svn: 156739
-
Benjamin Kramer authored
^~~~ llvm-build llvm-svn: 156738
-
Benjamin Kramer authored
llvm-svn: 156737
-
Benjamin Kramer authored
llvm-svn: 156736
-