- Jun 08, 2008
-
-
Chris Lattner authored
don't make i1 phis when it won't be possible to eliminate them. llvm-svn: 52097
-
- Jun 07, 2008
-
-
Evan Cheng authored
Speculatively execute a block when the the block is the then part of a triangle shape and it contains a single, side effect free, cheap instruction. The branch is eliminated by adding a select instruction. i.e. Turn BB: %t1 = icmp br i1 %t1, label %BB1, label %BB2 BB1: %t3 = add %t2, c br label BB2 BB2: => BB: %t1 = icmp %t4 = add %t2, c %t3 = select i1 %t1, %t2, %t3 llvm-svn: 52073
-
- Jun 06, 2008
-
-
Devang Patel authored
llvm-svn: 52053
-
Duncan Sands authored
and better control the abstraction. Rename the type to MVT. To update out-of-tree patches, the main thing to do is to rename MVT::ValueType to MVT, and rewrite expressions like MVT::getSizeInBits(VT) in the form VT.getSizeInBits(). Use VT.getSimpleVT() to extract a MVT::SimpleValueType for use in switch statements (you will get an assert failure if VT is an extended value type - these shouldn't exist after type legalization). This results in a small speedup of codegen and no new testsuite failures (x86-64 linux). llvm-svn: 52044
-
Zhou Sheng authored
otherwise, opt might crash. llvm-svn: 52041
-
- Jun 05, 2008
-
-
Zhou Sheng authored
crash the opt. Just fix this. Test case in llvm/test/Transforms/InstCombine/2008-06-05-ashr-crash.ll llvm-svn: 52003
-
Matthijs Kooijman authored
work and how to replace them into individual values. Also, when trying to replace an aggregrate that is used by load or store with a single (large) integer, don't crash (but don't replace the aggregrate either). Also adds a testcase for both structs and arrays. llvm-svn: 51997
-
Matthijs Kooijman authored
not other instructions. This fixes a crash with the added testcase. llvm-svn: 51992
-
Matthijs Kooijman authored
passing its pointer. Fixes test with added testcase. llvm-svn: 51991
-
Matthijs Kooijman authored
function is passed as an argument instead of called. Also do this check a bit earlier. llvm-svn: 51990
-
Matthijs Kooijman authored
deprecated by the GVN and GVNPRE passes. llvm-svn: 51983
-
- Jun 04, 2008
-
-
Owen Anderson authored
llvm-svn: 51955
-
Matthijs Kooijman authored
llvm-svn: 51947
-
Duncan Sands authored
are the same as in unpacked structs, only field positions differ. This only matters for structs containing x86 long double or an apint; it may cause backwards compatibility problems if someone has bitcode containing a packed struct with a field of one of those types. The issue is that only 10 bytes are needed to hold an x86 long double: the store size is 10 bytes, but the ABI size is 12 or 16 bytes (linux/ darwin) which comes from rounding the store size up by the alignment. Because it seemed silly not to pack an x86 long double into 10 bytes in a packed struct, this is what was done. I now think this was a mistake. Reserving the ABI size for an x86 long double field even in a packed struct makes things more uniform: the ABI size is now always used when reserving space for a type. This means that developers are less likely to make mistakes. It also makes life easier for the CBE which otherwise could not represent all LLVM packed structs (PR2402). Front-end people might need to adjust the way they create LLVM structs - see following change to llvm-gcc. llvm-svn: 51928
-
- Jun 03, 2008
-
-
Owen Anderson authored
Don't crash when we encounter one of these. llvm-svn: 51915
-
Dan Gohman authored
llvm-svn: 51890
-
Devang Patel authored
llvm-svn: 51887
-
- Jun 02, 2008
-
-
Chris Lattner authored
llvm-svn: 51864
-
Chris Lattner authored
out of instcombine into a new file in libanalysis. This also teaches ComputeNumSignBits about the number of sign bits in a constantint. llvm-svn: 51863
-
Owen Anderson authored
char a[200]; init(a, a+200); OR int a[200]; char* b = (char*)a; char* c = (char*)a; foo(b, c); llvm-svn: 51850
-
- Jun 01, 2008
-
-
Owen Anderson authored
llvm-svn: 51848
-
Duncan Sands authored
the conditions for performing the transform when only the function declaration is available: no longer allow turning i32 into i64 for example. Only allow changing between pointer types, and between pointer types and integers of the same size. For return values ptr -> intptr was already allowed; I added ptr -> ptr and intptr -> ptr while there. As shown by a recent objc testcase, changing the way parameters/return values are passed can be fatal when calling code written in assembler that directly manipulates call arguments and return values unless the transform has no impact on the way they are passed at the codegen level. While it is possible to imagine an ABI that treats integers of pointer size differently to pointers, I don't think LLVM supports any so the transform should now be safe while still being useful. llvm-svn: 51834
-
- May 31, 2008
-
-
Nick Lewycky authored
llvm-svn: 51819
-
Nick Lewycky authored
llvm-svn: 51817
-
Nick Lewycky authored
llvm-svn: 51816
-
- May 30, 2008
-
-
Gabor Greif authored
llvm-svn: 51789
-
Owen Anderson authored
Since LCSSA switched over to DenseMap, we have to be more careful to avoid iterator invalidation. Fixes PR2385. llvm-svn: 51777
-
Matthijs Kooijman authored
llvm-svn: 51770
-
- May 29, 2008
-
-
Dan Gohman authored
llvm-svn: 51698
-
Duncan Sands authored
llvm-svn: 51680
-
Owen Anderson authored
the one case that ADCE catches that normal DCE doesn't: non-induction variable loop computations. This implementation handles this problem without using postdominators. llvm-svn: 51668
-
Owen Anderson authored
llvm-svn: 51666
-
Gabor Greif authored
llvm-svn: 51663
-
- May 28, 2008
-
-
Chris Lattner authored
llvm-svn: 51636
-
- May 27, 2008
-
-
Duncan Sands authored
llvm-svn: 51591
-
Nick Lewycky authored
the set of nodes. Fix makeEqual to handle this by creating the new node first then iterating across them second. llvm-svn: 51573
-
Nick Lewycky authored
llvm-svn: 51572
-
- May 26, 2008
-
-
Duncan Sands authored
the section or the visibility from one global value to another: copyAttributesFrom. This is particularly useful for duplicating functions: previously this was done by explicitly copying each attribute in turn at each place where a new function was created out of an old one, with the result that obscure attributes were regularly forgotten (like the collector or the section). Hopefully now everything is uniform and nothing is forgotten. llvm-svn: 51567
-
Owen Anderson authored
llvm-svn: 51565
-
- May 25, 2008
-
-
Nick Lewycky authored
Analysis/ConstantFolding to fold ConstantExpr's, then make instcombine use it to try to use targetdata to fold constant expressions on void instructions. Also extend the icmp(inttoptr, inttoptr) folding to handle the case where int size != ptr size. llvm-svn: 51559
-