summaryrefslogtreecommitdiffstats
path: root/llvm/test
Commit message (Collapse)AuthorAgeFilesLines
* Test that prune-eh doesn't make deductions basedDuncan Sands2008-06-091-0/+12
| | | | | | on bodies of functions with weak linkage. llvm-svn: 52141
* add support for PIC on linux x86-64Rafael Espindola2008-06-0911-0/+130
| | | | llvm-svn: 52139
* lower calls to abs to inline code, PR2337Chris Lattner2008-06-091-0/+11
| | | | llvm-svn: 52138
* Fix PR2411, where ip constant prop would propagate theChris Lattner2008-06-091-0/+15
| | | | | | result of a weak function. llvm-svn: 52137
* Limit the icmp+phi merging optimization to the cases where it is profitable:Chris Lattner2008-06-081-0/+49
| | | | | | don't make i1 phis when it won't be possible to eliminate them. llvm-svn: 52097
* Remove invalid testAnton Korobeynikov2008-06-081-141/+0
| | | | llvm-svn: 52093
* Speculatively execute a block when the the block is the then part of a ↵Evan Cheng2008-06-071-0/+21
| | | | | | | | | | | | | | | | | | | | 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
* Fix run line.Evan Cheng2008-06-071-1/+1
| | | | llvm-svn: 52072
* Testcase for PR2418Anton Korobeynikov2008-06-061-0/+141
| | | | llvm-svn: 52047
* Revert 52002.Dan Gohman2008-06-051-22/+0
| | | | llvm-svn: 52030
* Add a test case for opt -instcombine bug fix in revision 52003.Zhou Sheng2008-06-051-0/+7
| | | | llvm-svn: 52004
* Change the Verifier to support returning first class aggregrates.Matthijs Kooijman2008-06-051-0/+22
| | | | | | Add a testcase for functions returning first class aggregrates. llvm-svn: 52002
* Add a test case for APInt bug fix in r51999.Zhou Sheng2008-06-051-0/+60
| | | | llvm-svn: 52000
* Learn ScalarReplAggregrates how stores and loads of first class aggregratesMatthijs Kooijman2008-06-051-0/+32
| | | | | | | | | | 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
* Let StructRetPromotion check if all if its users are really calls or invokesn,Matthijs Kooijman2008-06-051-0/+20
| | | | | | not other instructions. This fixes a crash with the added testcase. llvm-svn: 51992
* Let StructRetPromotion check if it's users are really calling it and notMatthijs Kooijman2008-06-051-0/+24
| | | | | | passing its pointer. Fixes test with added testcase. llvm-svn: 51991
* Fix a memcpy lowering bug. Even though the memcpy alignment is smaller than ↵Evan Cheng2008-06-041-0/+19
| | | | | | the desired alignment, the frame destination alignment may still be larger than the desired alignment. Don't change its alignment to something smaller. llvm-svn: 51970
* Rewrite a bunch of the CBE's inline asm code, giving it theChris Lattner2008-06-041-0/+12
| | | | | | ability to handle indirect input operands. This fixes PR2407. llvm-svn: 51952
* Change packed struct layout so that field sizesDuncan Sands2008-06-041-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Testcase for LoopIndexSplit and DomFrontier.Owen Anderson2008-06-031-0/+32
| | | | llvm-svn: 51916
* nounwindify.Dan Gohman2008-06-031-4/+4
| | | | llvm-svn: 51893
* Constant folding for insertvalue and extractvalue.Dan Gohman2008-06-031-1/+11
| | | | llvm-svn: 51889
* Update dom tree. Fix PR 2372.Devang Patel2008-06-021-0/+26
| | | | llvm-svn: 51887
* Add necessary 64-bit support so that gcc frontend compiles (mostly). CurrentScott Michel2008-06-021-12/+12
| | | | | | | issue is operand promotion for setcc/select... but looks like the fundamental stuff is implemented for CellSPU. llvm-svn: 51884
* Implement CBE support for first-class structs and array values,Dan Gohman2008-06-021-1/+1
| | | | | | | | | | | | | | | and insertvalue and extractvalue instructions. First-class array values are not trivial because C doesn't support them. The approach I took here is to wrap all arrays in structs. Feedback is welcome. The 2007-01-15-NamedArrayType.ll test needed to be modified because it has a "not grep" for a string that now exists, because array types now have associated struct types, and those struct types have names. llvm-svn: 51881
* Fix the position of MemOperands in nodes that use variadic_opsDan Gohman2008-06-021-0/+11
| | | | | | | | | | | | in DAGISelEmitter output. This bug was recently uncovered by the addition of patterns for CALL32m and CALL64m, which are nodes that now have both MemOperands and variadic_ops. This bug was especially visible with PIC in various configurations, because the new patterns are matching the indirect call code used in many PIC configurations. llvm-svn: 51877
* Fixes PR2395. Looking for a constant in a GEP tail (when the first GEP Wojciech Matyjewicz2008-06-021-0/+15
| | | | | | | | is longer than the second one) should stop after finding one. Added break instruction guarantees it. It also changes difference between offsets to absolute value of this difference in the condition. llvm-svn: 51875
* Fix two issues that Eli Friedman pointed out, where would misoptimized code ↵Owen Anderson2008-06-011-1/+1
| | | | | | | | | | | | | | | | like: 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
* Test for PR2401Owen Anderson2008-06-011-0/+107
| | | | llvm-svn: 51849
* When simplifying a call to a bitcast function, tighten upDuncan Sands2008-06-011-1/+5
| | | | | | | | | | | | | | | | | | | | 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
* update this patch to handle an extraneous &1. This should be pulledChris Lattner2008-05-311-2/+1
| | | | | | into the 2.3 release branch. llvm-svn: 51824
* Peer through sext/zext when looking for not(cmp).Nick Lewycky2008-05-311-1/+0
| | | | llvm-svn: 51819
* Add more i1 optimizations. add, sub, mul, s/udiv on i1 are now simplified away.Nick Lewycky2008-05-311-0/+24
| | | | llvm-svn: 51817
* Adding i1 is always Xor.Nick Lewycky2008-05-311-0/+7
| | | | llvm-svn: 51816
* Fix the CBE's handling of instructions whose result is an i1. Previously,Chris Lattner2008-05-311-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | we did not truncate the value down to i1 with (x&1). This caused a problem when the computation of x was nontrivial, for example, "add i1 1, 1" would return 2 instead of 0. This makes the testcase compile into: ... llvm_cbe_t = (((llvm_cbe_r == 0u) + (llvm_cbe_r == 0u))&1); llvm_cbe_u = (((unsigned int )(bool )llvm_cbe_t)); ... instead of: ... llvm_cbe_t = ((llvm_cbe_r == 0u) + (llvm_cbe_r == 0u)); llvm_cbe_u = (((unsigned int )(bool )llvm_cbe_t)); ... This fixes a miscompilation of mediabench/adpcm/rawdaudio/rawdaudio and 403.gcc with the CBE, regressions from LLVM 2.2. Tanya, please pull this into the release branch. llvm-svn: 51813
* IR, bitcode reader, bitcode writer, and asmparser changes toDan Gohman2008-05-311-9/+9
| | | | | | | | | | | insertvalue and extractvalue to use constant indices instead of Value* indices. And begin updating LangRef.html. There's definately more to come here, but I'm checking this basic support in now to make it available to people who are interested. llvm-svn: 51806
* Fix the -opt switch and add a test case for it.Mikhail Glushenkov2008-05-301-0/+12
| | | | llvm-svn: 51784
* Fix: 'sink' handling was broken.Mikhail Glushenkov2008-05-301-0/+12
| | | | llvm-svn: 51750
* Unbreak this test.Nick Lewycky2008-05-301-1/+1
| | | | llvm-svn: 51726
* Add patterns for CALL32m and CALL64m. They aren't matched in mostDan Gohman2008-05-291-0/+10
| | | | | | | | | | | | cases due to an isel deficiency already noted in lib/Target/X86/README.txt, but they can be matched in this fold-call.ll testcase, for example. This is interesting mainly because it exposes a tricky tblgen bug; tblgen was incorrectly computing the starting index for variable_ops in the case of a complex pattern. llvm-svn: 51706
* Expand small memmovs using inline code. Set the X86 threshold for expandingDan Gohman2008-05-291-0/+12
| | | | | | memmove to a more plausible value, now that it's actually being used. llvm-svn: 51696
* For PR1338: Rename test dirsAnton Korobeynikov2008-05-29355-0/+0
| | | | llvm-svn: 51695
* Move these tests into the proper directory.Owen Anderson2008-05-293-0/+0
| | | | llvm-svn: 51685
* Replace the old ADCE implementation with a new one that more simply solvesOwen Anderson2008-05-292-44/+0
| | | | | | | | | 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
* Implement vector shift up / down and insert zero with ps{rl}lq / ps{rl}ldq.Evan Cheng2008-05-295-20/+43
| | | | llvm-svn: 51667
* Add nounwind.Evan Cheng2008-05-292-7/+7
| | | | llvm-svn: 51665
* Fix PR2289: vr defined by multiple implicit_def as result of coalescing.Evan Cheng2008-05-281-0/+10
| | | | llvm-svn: 51648
* Teach local register allocator to deal with landing pad MBB's.Evan Cheng2008-05-281-0/+30
| | | | llvm-svn: 51647
* Implement PR2370: memmove(x,x,size) -> noop.Chris Lattner2008-05-281-0/+6
| | | | llvm-svn: 51636
* Specify a target so that this tests tests what it's intended to test.Dan Gohman2008-05-271-1/+1
| | | | llvm-svn: 51600
OpenPOWER on IntegriCloud