summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Rename SelectionDAGLowering to SelectionDAGBuilder, and renameDan Gohman2009-11-231-5821/+0
| | | | | | SelectionDAGBuild.cpp to SelectionDAGBuilder.cpp. llvm-svn: 89681
* Move RegsForValue to an anonymous namespace, since it is only usedDan Gohman2009-11-231-2/+2
| | | | | | in this file. llvm-svn: 89675
* Move some more code out of SelectionDAGBuild.cpp and intoDan Gohman2009-11-231-67/+0
| | | | | | FunctionLoweringInfo.cpp. llvm-svn: 89674
* Move the FunctionLoweringInfo class and some related utility functions outDan Gohman2009-11-231-223/+1
| | | | | | | of SelectionDAGBuild.h/cpp into its own files, to help separate general lowering logic from SelectionDAG-specific lowering logic. llvm-svn: 89667
* Target-independent support for TargetFlags on BlockAddress operands,Dan Gohman2009-11-201-1/+1
| | | | | | and support for blockaddresses in x86-32 PIC mode. llvm-svn: 89506
* Enable the tail call optimization when the caller returns undef.Dan Gohman2009-11-141-0/+4
| | | | llvm-svn: 88737
* Don't let a noalias difference disrupt the tailcall optimization.Dan Gohman2009-11-131-3/+4
| | | | llvm-svn: 88672
* Add a bool flag to StackObjects telling whether they reference spillDavid Greene2009-11-121-3/+3
| | | | | | | | | | | | | slots. The AsmPrinter will use this information to determine whether to print a spill/reload comment. Remove default argument values. It's too easy to pass a wrong argument value when multiple arguments have default values. Make everything explicit to trap bugs early. Update all targets to adhere to the new interfaces.. llvm-svn: 87022
* "Attach debug info with llvm instructions" mode was enabled a month ago. Now ↵Devang Patel2009-11-121-80/+6
| | | | | | make it permanent and remove old way of inserting intrinsics to encode debug info for line number and scopes. llvm-svn: 87014
* x86 users can now return arbitrary sized structs. Structs too large to fit ↵Kenneth Uildriks2009-11-111-67/+203
| | | | | | in return registers will be returned through a hidden sret parameter introduced during SelectionDAG construction. llvm-svn: 86876
* Implement support to debug inlined functions.Devang Patel2009-11-101-50/+8
| | | | llvm-svn: 86748
* Codegen support for the llvm.invariant/lifetime.start/end intrinsics:Duncan Sands2009-11-101-0/+10
| | | | | | just throw them away. llvm-svn: 86678
* Fix for 64-bit builds.Mike Stump2009-11-091-1/+1
| | | | llvm-svn: 86600
* Fix PR5421 by APInt'izing switch lowering.Chris Lattner2009-11-071-14/+16
| | | | llvm-svn: 86354
* Add code to check at SelectionDAGISel::LowerArguments time to see if return ↵Kenneth Uildriks2009-11-071-0/+60
| | | | | | values can be lowered to registers. Coming soon, code to perform sret-demotion if return values cannot be lowered to registers llvm-svn: 86324
* Fix warning with gcc-4.0 and signed/unsigned.Eric Christopher2009-10-311-1/+1
| | | | llvm-svn: 85648
* Initial target-independent CodeGen support for BlockAddresses.Dan Gohman2009-10-301-2/+10
| | | | llvm-svn: 85556
* Make sure we return the right sized type here.Eric Christopher2009-10-281-2/+5
| | | | llvm-svn: 85436
* rename indbr -> indirectbr to appease the residents of #llvm.Chris Lattner2009-10-281-1/+1
| | | | llvm-svn: 85351
* Update the MachineBasicBlock CFG for an indirect branch.Dan Gohman2009-10-271-0/+4
| | | | llvm-svn: 85325
* Add CodeGen support for indirect branches.Dan Gohman2009-10-271-2/+3
| | | | llvm-svn: 85323
* don't use stdioChris Lattner2009-10-271-1/+1
| | | | llvm-svn: 85296
* add enough support for indirect branch for the feature test to passChris Lattner2009-10-271-0/+5
| | | | | | | (assembler,asmprinter, bc reader+writer) and document it. Codegen currently aborts on it. llvm-svn: 85274
* Add objectsize intrinsic and hook it up through codegen. Doesn'tEric Christopher2009-10-271-0/+12
| | | | | | do anything than return "I don't know" at the moment. llvm-svn: 85189
* Remove FreeInst.Victor Hernandez2009-10-261-20/+0
| | | | | | | Remove LowerAllocations pass. Update some more passes to treate free calls just like they were treating FreeInst. llvm-svn: 85176
* APInt-ify the gep scaling code, so that it correctly handles the case whereDan Gohman2009-10-231-4/+5
| | | | | | the scale overflows pointer-sized arithmetic. This fixes PR5281. llvm-svn: 84954
* -Revert parts of 84326 and 84411. Distinquishing between fixed and non-fixedEvan Cheng2009-10-181-4/+2
| | | | | | | | | | | stack slots and giving them different PseudoSourceValue's did not fix the problem of post-alloc scheduling miscompiling llvm itself. - Apply Dan's conservative workaround by assuming any non fixed stack slots can alias other memory locations. This means a load from spill slot #1 cannot move above a store of spill slot #2. - Enable post-alloc scheduling for x86 at optimization leverl Default and above. llvm-svn: 84424
* Only fixed stack objects and spill slots should be get FixedStack ↵Evan Cheng2009-10-181-2/+4
| | | | | | PseudoSourceValue. llvm-svn: 84411
* Revert 84315 for now. Re-thinking the patch.Evan Cheng2009-10-171-1/+1
| | | | llvm-svn: 84321
* Rename getFixedStack to getStackObject. The stack objects represented are notEvan Cheng2009-10-171-1/+1
| | | | | | necessarily fixed. Only those will negative frame indices are "fixed." llvm-svn: 84315
* Remove MallocInst from LLVM Instructions.Victor Hernandez2009-10-171-42/+0
| | | | llvm-svn: 84299
* I don't see any point in having both eh.selector.i32 and eh.selector.i64,Duncan Sands2009-10-141-11/+5
| | | | | | | | | | | | | so get rid of eh.selector.i64 and rename eh.selector.i32 to eh.selector. Likewise for eh.typeid.for. This aligns us with gcc, which always uses a 32 bit value for the selector on all platforms. My understanding is that the register allocator used to assert if the selector intrinsic size didn't match the pointer size, and this was the reason for introducing the two variants. However my testing shows that this is no longer the case (I fixed some bugs in selector lowering yesterday, and some more today in the fastisel path; these might have caused the original problems). llvm-svn: 84106
* s/DebugLoc.CompileUnit/DebugLoc.Scope/gDevang Patel2009-10-131-1/+1
| | | | | | s/DebugLoc.InlinedLoc/DebugLoc.InlinedAtLoc/g llvm-svn: 84054
* Introduce new convenience methods for sign extending orDuncan Sands2009-10-131-54/+10
| | | | | | | | | | | | truncating an SDValue (depending on whether the target type is bigger or smaller than the value's type); or zero extending or truncating it. Use it in a few places (this seems to be a popular operation, but I only modified cases of it in SelectionDAGBuild). In particular, the eh_selector lowering was doing this wrong due to a repeated rather than inverted test, fixed with this change. llvm-svn: 84027
* Extract scope information from the variable itself, instead of relying on ↵Devang Patel2009-10-091-2/+8
| | | | | | | | alloca or llvm.dbg.declare location. While recording beginning of a function, use scope info from the first location entry instead of just relying on first location entry itself. llvm-svn: 83684
* Make sure sin, cos, sqrt calls are marked readonlyDale Johannesen2009-09-251-3/+6
| | | | | | | before producing FSIN, FCOS, FSQRT. If they aren't so marked we have to assume they might set errno. llvm-svn: 82781
* Generate FSQRT from calls to the sqrt function, whichDale Johannesen2009-09-251-0/+9
| | | | | | | | | | | | allows appropriate backends to generate a sqrt instruction. On x86, this isn't done at -O0 because we go through FastISel instead. This is a behavior change from before this series of sqrt patches started. I think this is OK considering that compile speed is most important at -O0, but could be convinced otherwise. llvm-svn: 82778
* Enhance EmitInstrWithCustomInserter() so target can specify CFG changes that ↵Evan Cheng2009-09-181-0/+1
| | | | | | | | sdisel will use to properly complete phi nodes. Not functionality change yet. llvm-svn: 82273
* duncan points out the EH selector values are signed.Chris Lattner2009-09-181-1/+1
| | | | llvm-svn: 82245
* tolerate llvm.eh.selector.i64 on 32-bit systems and llvm.eh.selector.i32 onChris Lattner2009-09-171-21/+24
| | | | | | 64-bit systems. llvm-svn: 82180
* Better solution for tracking both the original alignment of the access, and ↵Nate Begeman2009-09-151-3/+2
| | | | | | | | the current alignment based on the source value offset. This avoids increasing the size of mem nodes. llvm-svn: 81897
* Add an "original alignment" field to load and store nodes. This enables theNate Begeman2009-09-151-6/+5
| | | | | | | DAG Combiner to disambiguate chains for loads and stores of types which are broken up by the Legalizer into smaller pieces. llvm-svn: 81813
* Fix an abort on a store of an empty struct member. getValue returnsDan Gohman2009-09-081-0/+4
| | | | | | | null in the case of an empty struct, so don't try to call getNumValues on it. llvm-svn: 81180
* Simplify. Testing shows that this is not equivalent to BBI = CR.CaseBB + 1.Duncan Sands2009-09-061-4/+2
| | | | llvm-svn: 81124
* Remove some not-really-used variables, as warnedDuncan Sands2009-09-061-6/+2
| | | | | | about by icc (#593, partial). Patch by Erick Tryzelaar. llvm-svn: 81115
* Detect VLAs.Devang Patel2009-09-051-1/+5
| | | | | | Do not use DenseMap operator[] because it inserts new entry if lookup fails. Use find() to check an entry in a DenseMap first. llvm-svn: 81058
* Retype from unsigned to CallingConv::ID accordingly. Approved by Bob Wilson.Sandeep Patel2009-09-021-2/+3
| | | | llvm-svn: 80773
* Reapply 79977.Devang Patel2009-08-281-6/+6
| | | | | | Use MDNodes to encode debug info in llvm IR. llvm-svn: 80406
* Revert 79977. It causes llvm-gcc bootstrap failures on some platforms.Devang Patel2009-08-261-6/+6
| | | | llvm-svn: 80073
* Update DebugInfo interface to use metadata, instead of special named ↵Devang Patel2009-08-251-6/+6
| | | | | | | | llvm.dbg.... global variables, to encode debugging information in llvm IR. This is mostly a mechanical change that tests metadata support very well. This change speeds up llvm-gcc by more then 6% at "-O0 -g" (measured by compiling InstructionCombining.cpp!) llvm-svn: 79977
OpenPOWER on IntegriCloud