- Jun 03, 2011
-
-
Jakob Stoklund Olesen authored
of reserved registers. Use RegisterClassInfo in RABasic as well. This slightly changes som allocation orders because RegisterClassInfo puts CSR aliases last. llvm-svn: 132581
-
Jakob Stoklund Olesen authored
Previously, these aliases would be ordered alphabetically. (BH, BL) Print out the computed allocation orders. llvm-svn: 132580
-
Dan Gohman authored
of conservatively choosing MayAlias. llvm-svn: 132579
-
Devang Patel authored
llvm-svn: 132578
-
Eric Christopher authored
addressing mode problem mentioned in r132559. Backend part of rdar://9037836 and part of rdar://9119939 llvm-svn: 132561
-
Eric Christopher authored
llvm-svn: 132559
-
Hans Wennborg authored
llvm-svn: 132558
-
Devang Patel authored
A typedef's context is not the same as type's context. It is the context of typedef decl itself. Use extra parameter to communicate this to DIBuilder. llvm-svn: 132556
-
Chad Rosier authored
llvm-svn: 132555
-
Roman Divacky authored
- Check for MTCTR8 in addition to MTCTR when looking up a hazard. - When lowering an indirect call use CTR8 when targeting 64bit. - Introduce BCTR8 that uses CTR8 and use it on 64bit when expanding ISD::BRIND. The last change fixes PR8487. With those changes, we are able to compile a running "ls" and "sh" on FreeBSD/PowerPC64. llvm-svn: 132552
-
Zhongxing Xu authored
integers with high 32 bits being zero. llvm-svn: 132538
-
Nick Lewycky authored
which edge to split by pred/succ pair, which means that we can end up splitting the wrong edge (by case value) in the switch statement entirely. Fixes PR10031! llvm-svn: 132535
-
Chad Rosier authored
llvm-svn: 132533
-
Eli Friedman authored
Add ARM fast-isel support for materializing the address of a global in cases where the global uses an indirect symbol. rdar://9431157 llvm-svn: 132522
-
Andrew Trick authored
Added asserts whenever attempting to use a potentially uninitialized pass. This helps people trying to develop a new pass and people trying to understand the bug reports filed by the former people. llvm-svn: 132520
-
Andrew Trick authored
llvm-svn: 132519
-
Jakob Stoklund Olesen authored
When compiling a program with lots of small functions like 483.xalancbmk, this makes RAFast 11% faster. Add some comments to clarify the difference between unallocatable and reserved registers. It's quite subtle. The fast register allocator depends on EFLAGS' not being allocatable on x86. That way it can completely avoid tracking liveness, and it won't mind when there are multiple uses of a single def. llvm-svn: 132514
-
Eric Christopher authored
Part of rdar://9119939 llvm-svn: 132510
-
Jakob Stoklund Olesen authored
allocation orders. llvm-svn: 132509
-
Jakob Stoklund Olesen authored
Some register classes are only used for instruction operand constraints. They should never be used for virtual registers. Previously, those register classes were given an empty allocation order, but now you can say 'let isAllocatable=0' in the register class definition. TableGen calculates if a register is part of any allocatable register class, and makes that information available in TargetRegisterDesc::inAllocatableClass. The goal here is to eliminate use cases for overriding allocation_order_* methods. llvm-svn: 132508
-
Devang Patel authored
llvm-svn: 132505
-
Jakob Stoklund Olesen authored
I was confused whether new uint8_t[] would zero-initialize the returned array, and it seems that so is gcc-4.0. This should fix the test failures on darwin 9. llvm-svn: 132500
-
- Jun 02, 2011
-
-
Devang Patel authored
llvm-svn: 132488
-
Devang Patel authored
llvm-svn: 132487
-
Tanya Lattner authored
llvm-svn: 132486
-
Eli Friedman authored
PR10067: Add missing safety check to call return transformation in MemCpyOpt::processStore. If something accesses the dest of the "copy" between the call and the copy, the performCallSlotOptzn transformation is not valid. llvm-svn: 132485
-
Devang Patel authored
During post RA scheduling, do not try to chase reg defs. to preserve DBG_VALUEs. This approach has several downsides, for example, it does not work when dbg value is a constant integer, it does not work if reg is defined more than once, it places end of debug value range markers in the wrong place. It even causes misleading incorrect debug info when duplicate DBG_VALUE instructions point to same reg def. Instead, use simpler approach and let DBG_VALUE follow its predecessor instruction. After live debug value analysis pass, all DBG_VALUE instruction are placed at the right place. Thanks Jakob for the hint! llvm-svn: 132483
-
Rafael Espindola authored
llvm-svn: 132479
-
Eric Christopher authored
Testcase will come when we use it. Part of rdar://9119939 llvm-svn: 132476
-
Jakob Stoklund Olesen authored
This saves two virtual function calls and an Allocatable BitVector test, making RAFast run 2% faster. llvm-svn: 132471
-
Jim Grosbach authored
Parsing a register name/number for .cfi directives can't assume that a register name starts with a '%' token. Be more flexible and check for a register number instead. Still unlikely to be perfect, but it allows us to parse both plain identifiers as register names and integers as register numbers, which is what we're wanting to support at this point. llvm-svn: 132466
-
Stuart Hastings authored
rdar://problem/6373334 llvm-svn: 132458
-
Benjamin Kramer authored
Found by valgrind. llvm-svn: 132457
-
Jakob Stoklund Olesen authored
llvm-svn: 132456
-
Jakob Stoklund Olesen authored
No functional change. llvm-svn: 132455
-
Rafael Espindola authored
llvm-svn: 132451
-
Jakob Stoklund Olesen authored
register classes. It provides information for each register class that cannot be determined statically, like: - The number of allocatable registers in a class after filtering out the reserved and invalid registers. - The preferred allocation order with registers that overlap callee-saved registers last. - The last callee-saved register that overlaps a given physical register. This information usually doesn't change between functions, so it is reused for compiling multiple functions when possible. The many possible combinations of reserved and callee saves registers makes it unfeasible to compute this information statically in TableGen. Use RegisterClassInfo to count available registers in various heuristics in SimpleRegisterCoalescing, making the pass run 4% faster. llvm-svn: 132450
-
Akira Hatanaka authored
llvm-svn: 132448
-
Akira Hatanaka authored
llvm-svn: 132444
-
Eli Friedman authored
When marking a block as being unanalyzable, use "Clobber" on the terminator instead of the first instruction in the block. This is a bit of a hack; "Clobber" isn't really the right marking in the first place. memdep doesn't really have any way of properly expressing "unanalyzable" at the moment. Using it on the terminator is much less ambiguous than using it on an arbitrary instruction, though. In the given testcase, the "Clobber" was pointing to a load, and GVN was incorrectly assuming that meant that the "Clobber" load overlapped the load being analyzed (when they are actually unrelated). The included testcase tests both this commit and r132434. Part two of rdar://9429882. (r132434 was mislabeled.) llvm-svn: 132442
-