summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Make structs and arrays first-class types, and add assemblyDan Gohman2008-05-238-1261/+1633
| | | | | | | | | and bitcode support for the extractvalue and insertvalue instructions and constant expressions. Note that this does not yet include CodeGen support. llvm-svn: 51468
* Use isSingleValueType instead of isFirstClassType toDan Gohman2008-05-231-2/+2
| | | | | | exclude struct and array types. llvm-svn: 51467
* Remove warnings about comparison between signed and unsigned expressions.Bill Wendling2008-05-231-2/+2
| | | | llvm-svn: 51465
* Allow for switch with no cases. Was causing faultDale Johannesen2008-05-231-0/+2
| | | | | | in gcc.dg/pr27531-1.c. llvm-svn: 51464
* Bug: rcpps can only folds a load if the address is 16-byte aligned. Fixed ↵Evan Cheng2008-05-231-57/+79
| | | | | | | | many 'ps' load folding patterns in X86InstrSSE.td which are missing the proper alignment checks. Also fixed some 80 col. violations. llvm-svn: 51462
* Add more IR support for the new extractvalue and insertvalueDan Gohman2008-05-232-12/+79
| | | | | | instructions. llvm-svn: 51461
* Use isSingleValueType instead of isFirstClassType toDan Gohman2008-05-231-2/+2
| | | | | | exclude struct and array types. llvm-svn: 51460
* Use isSingleValueType instead of isFirstClassType toDan Gohman2008-05-233-6/+6
| | | | | | exclude struct and array types. llvm-svn: 51459
* Put const weak stuff in appropriate section on Darwin.Dale Johannesen2008-05-231-1/+9
| | | | | | g++.dg/abi/key2.C llvm-svn: 51458
* Use isSingleValueType instead of isFirstClassType toDan Gohman2008-05-232-2/+2
| | | | | | exclude struct and array types. llvm-svn: 51456
* X86CodeEmitter should not set PIC style to None at initialization time. This ↵Evan Cheng2008-05-221-3/+1
| | | | | | will break codegen if relocation model is changed to PIC_ later. llvm-svn: 51455
* Use isSingleValueType instead of isFirstClassType toDan Gohman2008-05-221-1/+1
| | | | | | exclude struct and array types. llvm-svn: 51452
* Recognize the "default" keyword, which is documented in LangRef.htmlDan Gohman2008-05-221-0/+1
| | | | | | and supported in the grammar, in the lexer. llvm-svn: 51448
* When rewriting defs and uses after spilling, don't set the weight of aDavid Greene2008-05-221-1/+3
| | | | | | | | live interval to infinity if the instruction being rewritten is an original remat def instruction. We were only checking against the clone of the remat def which doesn't actually appear in the IR at all. llvm-svn: 51440
* Don't attempt to update SpillSlotToUsesMap for stack slots that aren'tDavid Greene2008-05-221-2/+14
| | | | | | generated by the spiller. llvm-svn: 51439
* transform more loops to iterator form, detabifyGabor Greif2008-05-222-7/+8
| | | | llvm-svn: 51436
* Add missing patterns.Evan Cheng2008-05-221-0/+10
| | | | llvm-svn: 51435
* Rewrite operand loops to use iterators. This shrinks .o file (at gcc4.0.1 ↵Gabor Greif2008-05-221-4/+5
| | | | | | -O3 x86) substantially (>500 bytes). Reason still unknown. llvm-svn: 51423
* fix an off-by-one error in my previous patch, don't treat the callee as a ↵Chris Lattner2008-05-221-10/+9
| | | | | | incoming arg. llvm-svn: 51422
* Add support for multiple-return values in inline asm. This shouldChris Lattner2008-05-221-34/+42
| | | | | | | get inline asm working as well as it did previously with the CBE with the new MRV support for inline asm. llvm-svn: 51420
* Fix PR2267, by allowing indirect outputs to be intermixedChris Lattner2008-05-221-1/+4
| | | | | | | with normal outputs. Testcase here: test/CodeGen/X86/asm-indirect-mem.ll llvm-svn: 51409
* Free and vaarg are not really volatile.Chris Lattner2008-05-221-9/+2
| | | | llvm-svn: 51407
* rewrite the validity checking for memory promotion to be simpler,Chris Lattner2008-05-221-49/+52
| | | | | | | more aggressive, and more correct. Verify that we only attempt to promote loads and stores. llvm-svn: 51406
* Use 'continue' to reduce nesting in this loop. No functionality change.Chris Lattner2008-05-221-54/+51
| | | | llvm-svn: 51399
* Fix PR2343. An *interesting* coalescer bug.Evan Cheng2008-05-211-1/+27
| | | | | | | | | | | | | | BB1: vr1025 = copy vr1024 .. BB2: vr1024 = op = op vr1025 <loop eventually branch back to BB1> Even though vr1025 is copied from vr1024, it's not safe to coalesced them since live range of vr1025 intersects the def of vr1024. This happens when vr1025 is assigned the value of the previous iteration of vr1024 in the loop. llvm-svn: 51394
* Follow-up to the reverting of r51218. This puts the checks out-of-line. BecauseBill Wendling2008-05-211-0/+12
| | | | | | | | they aren't in the header file, systems with a <string> header file that isn't 64-bit clean shouldn't warn if #including Path.h and specifying -Wshorten-64-to-32. llvm-svn: 51393
* Fix a couple issues with the JIT and multiple modules:Nate Begeman2008-05-213-8/+75
| | | | | | | | | | | | 1. The "JITState" object creates a PassManager with the ModuleProvider that the jit is created with. If the ModuleProvider is removed and deleted, the PassManager is invalid. 2. The Global maps in the JIT were not invalidated with a ModuleProvider was removed. This could lead to a case where the Module would be freed, and a new Module with Globals at the same addresses could return invalid results. llvm-svn: 51384
* suppress gcc3.4.6's <no value returned> warningsGabor Greif2008-05-211-0/+2
| | | | llvm-svn: 51372
* When LSR is replacing an instruction, callDan Gohman2008-05-211-7/+10
| | | | | | | | | | | | | | | | | | | | ScalarEvolution::deleteValueFromRecords on it before doing the replaceAllUsesWith, because ScalarEvolution looks at the instruction's users to find SCEV references to the instruction's SCEV object in its internal maps. Move all of LSR's loop-related state clearing after processing the loop and before cleaning up dead PHI nodes. This eliminates all of LSR's SCEV references just before the calls to ScalarEvolution::deleteValueFromRecords so that when ScalarEvolution drops its own SCEV references, the reference counts will reach zero and the SCEVs will be deleted immediately. These changes fix some compiler aborts involving ScalarEvolution holding onto and reusing SCEV objects for instructions that have been deleted. No regression test unfortunately; because the symptoms were due to dangling pointers, reduced testcases ended up being fairly arbitrary. llvm-svn: 51359
* Fix PR2346 by marking vaarg as volatile so that licm doesn't try toChris Lattner2008-05-201-1/+4
| | | | | | hoist them. llvm-svn: 51356
* Port SelectionDAG's ComputeNumSignBits-using code to instcombine,Dan Gohman2008-05-201-1/+28
| | | | | | now that instcombine also has ComputeNumSignBits. llvm-svn: 51350
* Port the fix for the select operator from instcombine'sDan Gohman2008-05-201-2/+2
| | | | | | ComputeNumSignBits to SelectionDAG's ComputeNumSignBits. llvm-svn: 51348
* Code simplification.Dan Gohman2008-05-201-6/+4
| | | | llvm-svn: 51345
* movsd and movq do not require 16-byte alignment. This fixes vec_set-5.ll on ↵Evan Cheng2008-05-201-4/+10
| | | | | | Linux. llvm-svn: 51327
* More local spiller complexity!Evan Cheng2008-05-201-0/+62
| | | | | | If local spiller optimization turns some instruction into an identity copy, it will be removed. If the output register happens to be dead (and source is obviously killed), transfer the kill / dead information to last use / def in the same MBB. llvm-svn: 51306
* Don't spill dead def.Evan Cheng2008-05-201-1/+3
| | | | llvm-svn: 51305
* Fix typo.Matthijs Kooijman2008-05-201-1/+1
| | | | llvm-svn: 51303
* Teach instcombine 4 new xforms:Chris Lattner2008-05-201-3/+149
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (add (sext x), cst) --> (sext (add x, cst')) (add (sext x), (sext y)) --> (sext (add int x, y)) (add double (sitofp x), fpcst) --> (sitofp (add int x, intcst)) (add double (sitofp x), (sitofp y)) --> (sitofp (add int x, y)) This generally reduces conversions. For example MiBench/telecomm-gsm gets these simplifications: HACK2: %tmp67.i142.i.i = sext i16 %tmp6.i141.i.i to i32 ; <i32> [#uses=1] %tmp23.i139.i.i = sext i16 %tmp2.i138.i.i to i32 ; <i32> [#uses=1] %tmp8.i143.i.i = add i32 %tmp67.i142.i.i, %tmp23.i139.i.i ; <i32> [#uses=3] HACK2: %tmp67.i121.i.i = sext i16 %tmp6.i120.i.i to i32 ; <i32> [#uses=1] %tmp23.i118.i.i = sext i16 %tmp2.i117.i.i to i32 ; <i32> [#uses=1] %tmp8.i122.i.i = add i32 %tmp67.i121.i.i, %tmp23.i118.i.i ; <i32> [#uses=3] HACK2: %tmp67.i.i190.i = sext i16 %tmp6.i.i189.i to i32 ; <i32> [#uses=1] %tmp23.i.i187.i = sext i16 %tmp2.i.i186.i to i32 ; <i32> [#uses=1] %tmp8.i.i191.i = add i32 %tmp67.i.i190.i, %tmp23.i.i187.i ; <i32> [#uses=3] HACK2: %tmp67.i173.i.i.i = sext i16 %tmp6.i172.i.i.i to i32 ; <i32> [#uses=1] %tmp23.i170.i.i.i = sext i16 %tmp2.i169.i.i.i to i32 ; <i32> [#uses=1] %tmp8.i174.i.i.i = add i32 %tmp67.i173.i.i.i, %tmp23.i170.i.i.i ; <i32> [#uses=3] HACK2: %tmp67.i152.i.i.i = sext i16 %tmp6.i151.i.i.i to i32 ; <i32> [#uses=1] %tmp23.i149.i.i.i = sext i16 %tmp2.i148.i.i.i to i32 ; <i32> [#uses=1] %tmp8.i153.i.i.i = add i32 %tmp67.i152.i.i.i, %tmp23.i149.i.i.i ; <i32> [#uses=3] HACK2: %tmp67.i.i.i.i = sext i16 %tmp6.i.i.i.i to i32 ; <i32> [#uses=1] %tmp23.i.i5.i.i = sext i16 %tmp2.i.i.i.i to i32 ; <i32> [#uses=1] %tmp8.i.i7.i.i = add i32 %tmp67.i.i.i.i, %tmp23.i.i5.i.i ; <i32> [#uses=3] This also fixes a bug in ComputeNumSignBits handling select and makes it more aggressive with and/or. llvm-svn: 51302
* fix two issues Neil noticed, thanks!Chris Lattner2008-05-201-5/+5
| | | | llvm-svn: 51296
* Add a bool to isEdgeFeasible that tells it whether to treat unknownChris Lattner2008-05-201-7/+19
| | | | | | value as undef or untracked. llvm-svn: 51295
* Fix ExecutionEngine's constant code to work properly when structs and arraysDan Gohman2008-05-201-17/+8
| | | | | | will become first-class types. llvm-svn: 51293
* Refine the fix in r51169 to only apply when the operand val beingDan Gohman2008-05-201-3/+4
| | | | | | | | replaced is a PHI. This prevents it from inserting uses before defs in the case that it isn't a PHI and it depends on other instructions later in the block. This fixes the 447.dealII regression on x86-64. llvm-svn: 51292
* runOnMachineFunction should set IsPIC because relocation model may have been ↵Evan Cheng2008-05-201-0/+1
| | | | | | changed. llvm-svn: 51291
* Make AssociativeOpt static.Dan Gohman2008-05-201-1/+1
| | | | llvm-svn: 51290
* Do not erase induction variable increment if it is used outside the loop.Devang Patel2008-05-191-4/+20
| | | | llvm-svn: 51280
* Add a ComputeNumSignBits function for use by instcombine, based on theDan Gohman2008-05-191-5/+149
| | | | | | code in SelectionDAG. llvm-svn: 51279
* Handle quoted names when constructing $stub's,Dale Johannesen2008-05-195-39/+80
| | | | | | $non_lazy_ptr's and $lazy_ptr's. llvm-svn: 51277
* switch to Type::getFPMantissaWidth instead of reinventing it.Chris Lattner2008-05-191-15/+3
| | | | llvm-svn: 51275
* minor cleanups, teach instcombine that sitofp/uitofp cannot Chris Lattner2008-05-191-3/+8
| | | | | | produce a negative zero. llvm-svn: 51272
* convert fptosi(sitofp x) -> x if the fp value has enough bits in its mantissaChris Lattner2008-05-191-9/+27
| | | | | | | to accurately represent the integer. This triggers 9 times in 471.omnetpp, though 8 of those seem to be inlined from the same place. llvm-svn: 51271
OpenPOWER on IntegriCloud