- Feb 22, 2012
-
-
Hal Finkel authored
The standard function epilog includes a .size directive, but ppc64 uses an alternate local symbol to tag the actual start of each function. Until recently, binutils accepted the .size directive as: .size test1, .Ltmp0-test1 however, using this directive with recent binutils will result in the error: .size expression for XXX does not evaluate to a constant so we must use the label which actually tags the start of the function. llvm-svn: 151200
-
Bill Wendling authored
llvm-svn: 151189
-
Chris Lattner authored
llvm-svn: 151186
-
Michael J. Spencer authored
Patch by Joe Groff! llvm-svn: 151183
-
Andrew Trick authored
llvm-svn: 151178
-
Chad Rosier authored
llvm-svn: 151169
-
Jakob Stoklund Olesen authored
llvm-svn: 151167
-
Sirish Pande authored
llvm-svn: 151166
-
David Greene authored
Add some data structures to represent for loops. These will be referenced during object processing to do any needed iteration and instantiation. Add foreach keyword support to the lexer. Add a mode to indicate that we're parsing a foreach loop. This allows the value parser to early-out when processing the foreach value list. Add a routine to parse foreach iteration declarations. This is separate from ParseDeclaration because the type of the named value (the iterator) doesn't match the type of the initializer value (the value list). It also needs to add two values to the foreach record: the iterator and the value list. Add parsing support for foreach. Add the code to process foreach loops and create defs based on iterator values. Allow foreach loops to be matched at the top level. When parsing an IDValue check if it is a foreach loop iterator for one of the active loops. If so, return a VarInit for it. Add Emacs keyword support for foreach. Add VIM keyword support for foreach. Add tests to check foreach operation. Add TableGen documentation for foreach. Support foreach with multiple objects. Support non-braced foreach body with one object. Do not require types for the foreach declaration. Assume the iterator type from the iteration list element type. llvm-svn: 151164
-
Jakob Stoklund Olesen authored
llvm-svn: 151163
-
Benjamin Kramer authored
llvm-svn: 151160
-
Chandler Carruth authored
chip in r139383, and the PSP components of the triple are really annoying to parse. Let's leave this chapter behind. There is no reason to expect LLVM to see a PSP-related triple these days, and so no reasonable motivation to support them. It might be reasonable to prune a few of the older MIPS triple forms in general, but as those at least cause no burden on parsing (they aren't both a chip and an OS!), I'm happy to leave them in for now. llvm-svn: 151156
-
Eric Christopher authored
Worth another 45k (1%) off of a large C++ testcase. rdar://10909458 llvm-svn: 151144
-
Eric Christopher authored
llvm-svn: 151143
-
Eric Christopher authored
llvm-svn: 151142
-
Craig Topper authored
Declare register classes as const. Fix a couple pointers to register classes that weren't already const. llvm-svn: 151138
-
Andrew Trick authored
The vast majority of virtual register definitions don't need an entry in the DAG builder's VRegDefs set. llvm-svn: 151136
-
Andrew Trick authored
Affect on SD scheduling and postRA scheduling: Printing the DAG will display the nodes in top-down topological order. This matches the order within the MBB and makes my life much easier in general. Affect on misched: We don't need to track virtual register uses at all. This is awesome. I also intend to rely on the SUnit ID as a topo-sort index. So if A < B then we cannot have an edge B -> A. llvm-svn: 151135
-
Craig Topper authored
Make all pointers to TargetRegisterClass const since they are all pointers to static data that should not be modified. llvm-svn: 151134
-
Rafael Espindola authored
llvm-svn: 151127
-
Rafael Espindola authored
the dominance once the dominates method is fixed and why we can use the builder's insertion point. Fixes pr12048. llvm-svn: 151125
-
Aaron Ballman authored
llvm-svn: 151123
-
Eli Friedman authored
llvm-svn: 151115
-
NAKAMURA Takumi authored
llvm-svn: 151114
-
Jakob Stoklund Olesen authored
llvm-svn: 151113
-
Jakob Stoklund Olesen authored
This makes RAFast 4% faster, and it gets rid of the dodgy DenseMap iteration. This also revealed that RAFast would sometimes dereference DenseMap iterators after erasing other elements from the map. That does seem to work in the current DenseMap implementation, but SparseSet doesn't allow it. llvm-svn: 151111
-
Jakob Stoklund Olesen authored
For objects that can be identified by small unsigned keys, SparseSet provides constant time clear() and fast deterministic iteration. Insert, erase, and find operations are typically faster than hash tables. SparseSet is useful for keeping information about physical registers, virtual registers, or numbered basic blocks. llvm-svn: 151110
-
Akira Hatanaka authored
llvm-svn: 151107
-
Jakob Stoklund Olesen authored
This test case was way too strict, matching the entire assembly output. Every non-trivial change to the ppc backend or -O0 pipeline required the test to be updated. It should be replaced with a test of the specific vaarg feature. llvm-svn: 151105
-
Jakob Stoklund Olesen authored
Even if a call instruction has %SP<imp-def> operands, it doesn't change the value of the stack pointer. llvm-svn: 151104
-
- Feb 21, 2012
-
-
Lang Hames authored
bundles. This method takes a bundle start and an MI being bundled, and makes the intervals for the MI's operands appear to start/end on the bundle start. Also fixes some minor cosmetic issues (whitespace, naming convention) in the HMEditor code. llvm-svn: 151099
-
Eric Christopher authored
rdar://10493979 llvm-svn: 151098
-
Eric Christopher authored
Part of rdar://10493979 where it reduces by about .5% (10k) llvm-svn: 151097
-
Nick Lewycky authored
they'll be simple enough to simulate, and to reduce the chance we'll encounter equal but different simple pointer constants. This removes the symptoms from PR11352 but is not a full fix. A proper fix would either require a guarantee that two constant objects we simulate are folded when equal, or a different way of handling equal pointers (ie., trying a constantexpr icmp on them to see whether we know they're equal or non-equal or unsure). llvm-svn: 151093
-
Evan Cheng authored
llvm-svn: 151083
-
Rafael Espindola authored
llvm-svn: 151079
-
Benjamin Kramer authored
llvm-svn: 151056
-
Benjamin Kramer authored
This transformation is not safe in some pathological cases (signed icmp of pointers should be an extremely rare thing, but it's valid IR!). Add an explanatory comment. Kudos to Duncan for pointing out this edge case (and not giving up explaining it until I finally got it). llvm-svn: 151055
-
Duncan Sands authored
and into StringRef.cpp, which is where the other StringRef stuff is. llvm-svn: 151054
-
NAKAMURA Takumi authored
llvm-svn: 151053
-