- May 14, 2009
-
-
Lang Hames authored
llvm-svn: 71769
-
Dan Gohman authored
asm construct into an assertion failure. llvm-svn: 71757
-
Bill Wendling authored
Basically, there was a situation where it was getting an empty vector and doing a .back() on that. Which isn't cool. llvm-svn: 71746
-
Bob Wilson authored
block with its unique predecessor. Change the code to assert if that is not the case, instead of trying to handle situations where the block has multiple predecessors. llvm-svn: 71744
-
Jim Grosbach authored
of exception handling builtin sjlj targets in functions turns out not to be necessary. Marking the intrinsic implementation in the .td file as defining all registers is sufficient to get the context saved properly by the containing function. llvm-svn: 71743
-
Bob Wilson authored
Dan was trying to catch the case where a basic block ends with a conditional branch to the fall-through block. In this case, all the instructions have been moved out of FromBBI, leaving it empty. It cannot end with a conditional branch. As the existing comment indicates, it will always fall through to the next block. If the block already had the next block (NBB) listed as a successor, the preceding loop has a check for that and does not remove it. Thus, we need to check and add the successor only when it is not already listed. With Dan's change, the empty block often ends up with the fall-through successor listed twice. This exposed the problem in pr4195, where CodePlacementOpt did not handle the same predecessor listed more than once. It is also at least partially responsible for pr4202 and probably a similar issue with Thumb branches being out of range. llvm-svn: 71742
-
Bob Wilson authored
llvm-svn: 71741
-
Bob Wilson authored
llvm-svn: 71740
-
Bob Wilson authored
field name. No functional changes. llvm-svn: 71739
-
- May 13, 2009
-
-
Evan Cheng authored
llvm-svn: 71726
-
Bill Wendling authored
booleans. This gives a better indication of what the "addReg()" is doing. Remembering what all of those booleans mean isn't easy, especially if you aren't spending all of your time in that code. I took Jakob's suggestion and made it illegal to pass in "true" for the flag. This should hopefully prevent any unintended misuse of this (by reverting to the old way of using addReg()). llvm-svn: 71722
-
Bill Wendling authored
belonged. The variable declaration stuff wasn't happy with it where it was. Sorry that the testcase is so big. Bugpoint wasn't able to reduce it successfully. llvm-svn: 71714
-
John Mosby authored
llvm-svn: 71678
-
Chris Lattner authored
llvm-svn: 71645
-
Lang Hames authored
operand was killed, the kill needs to be removed from regB's VarInfo. llvm-svn: 71635
-
Jim Grosbach authored
a supporting preliminary patch for GCC-compatible SjLJ exception handling. Note that these intrinsics are not designed to be invoked directly by the user, but rather used by the front-end as target hooks for exception handling. llvm-svn: 71610
-
Evan Cheng authored
If header of inner loop is aligned, do not align the outer loop header. We don't want to add nops in the outer loop for the sake of aligning the inner loop. llvm-svn: 71609
-
Evan Cheng authored
llvm-svn: 71606
-
- May 12, 2009
-
-
John Mosby authored
Restructure PEI code: - moved shrink wrapping code from PrologEpilogInserter.cpp to new file ShrinkWrapping.cpp. - moved PEI pass definition into new shared header PEI.h. llvm-svn: 71588
-
Jay Foad authored
llvm-svn: 71587
-
Evan Cheng authored
Fixed a stack slot coloring with reg bug: do not update implicit use / def when doing forward / backward propagation. llvm-svn: 71574
-
Bob Wilson authored
after finding the (unique) layout predecessor. Sometimes a block may be listed more than once, and processing it more than once in this loop can lead to inconsistent values for FtTBB/FtFBB, since the AnalyzeBranch method does not clear these values. There's no point in continuing the loop regardless. The testcase for this is reduced from the 2003-05-02-DependentPHI SingleSource test. llvm-svn: 71536
-
Bill Wendling authored
blast it away. - Move InlineInfo bookkeeping to bookkeep the correct debug info object. llvm-svn: 71519
-
Lang Hames authored
llvm-svn: 71495
-
- May 11, 2009
-
-
Dale Johannesen authored
sucessor info. llvm-svn: 71478
-
Evan Cheng authored
llvm-svn: 71472
-
Evan Cheng authored
llvm-svn: 71457
-
Evan Cheng authored
llvm-svn: 71456
-
Dan Gohman authored
type, rather than assume that it does. If the operand is not vector, it shouldn't be run through ScalarizeVectorOp. This fixes one of the testcases in PR3886. llvm-svn: 71453
-
John Mosby authored
Shrink wrapping in PEI: - reduces _static_ callee saved register spills and restores similar to Chow's original algorithm. - iterative implementation with simple heuristic limits to mitigate compile time impact. - handles placing spills/restores for multi-entry, multi-exit regions in the Machine CFG without splitting edges. - passes test-suite in LLCBETA mode. Added contains() method to ADT/SparseBitVector. llvm-svn: 71438
-
Jay Foad authored
memcpy, memmove and memset. llvm-svn: 71427
-
Bill Wendling authored
The DwarfWriter expects DbgScopes and DIEs to behave themselves according to DwarfWriter's rules. However, inlined functions violate these rules. There are two different types of DIEs associated with an inlined function: an abstract instance, which has information about the original source code for the function being inlined; and concrete instances, which are created for each place the function was inlined and point back to the abstract instance. This patch tries to stay true to this schema. It bypasses how regular DbgScopes and DIEs are created and used when necessary. It provides special handling for DIEs of abstract and concrete instances. This doesn't take care of all of the problems with debug info for inlined functions, but it's a step in the right direction. For one thing, llvm-gcc generates wrong IR (it's missing some llvm.dbg intrinsics at the point where the function's inlined) for this example: #include <stdio.h> static __inline__ __attribute__((always_inline)) int bar(int x) { return 4; } void foo() { long long b = 1; int Y = bar(4); printf("%d\n", Y); } while clang generates correct IR. llvm-svn: 71410
-
- May 10, 2009
-
-
Bill Wendling authored
U lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp Revert r71370. llvm-svn: 71373
-
Bill Wendling authored
None. However, we were always recording the region end. There's no longer a good reason for this code to be separated out between the different opt levels, as it was doing pretty much the same thing anyway. llvm-svn: 71370
-
- May 09, 2009
-
-
Evan Cheng authored
llvm-svn: 71363
-
Duncan Sands authored
will make it more obvious what it represents, and stop it being confused with the StoreSize. llvm-svn: 71349
-
Evan Cheng authored
llvm-svn: 71291
-
Mike Stump authored
llvm-svn: 71275
-
- May 08, 2009
-
-
Bill Wendling authored
inlined function or the end of a function. Before, this was never executing the "inlined" version of the Record method. This will become important once the inlined Dwarf writer patch lands. llvm-svn: 71268
-
Bill Wendling authored
concrete instance of an inlined function, we can get the actual address of the abstract instance inside of the compile unit. This isn't currently used, but will be by a future check-in. llvm-svn: 71263
-