summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG
Commit message (Collapse)AuthorAgeFilesLines
* Make -print-machineinstrs more readable.Dan Gohman2009-10-311-2/+2
| | | | | | | | | | | | | | - Be consistent when referring to MachineBasicBlocks: BB#0. - Be consistent when referring to virtual registers: %reg1024. - Be consistent when referring to unknown physical registers: %physreg10. - Be consistent when referring to known physical registers: %RAX - Be consistent when referring to register 0: %reg0 - Be consistent when printing alignments: align=16 - Print jump table contents. - Don't print host addresses, in general. - and various other cleanups. llvm-svn: 85682
* When discarding SrcValue information, discard all of it so that codeDan Gohman2009-10-311-7/+5
| | | | | | that uses this information knows to behave conservatively. llvm-svn: 85654
* Fix warning with gcc-4.0 and signed/unsigned.Eric Christopher2009-10-311-1/+1
| | | | llvm-svn: 85648
* Don't mark registers dead here when processing nodes with MVT::FlagDan Gohman2009-10-301-1/+5
| | | | | | | results. This works around a problem affecting targets which rely on MVT::Flag to handle physical register defs. llvm-svn: 85638
* Initial target-independent CodeGen support for BlockAddresses.Dan Gohman2009-10-304-2/+44
| | | | llvm-svn: 85556
* Remove some unnecessary spaces in debug output.Dan Gohman2009-10-291-3/+3
| | | | llvm-svn: 85536
* Move some code from being emitted as boilerplate duplicated in everyDan Gohman2009-10-291-0/+52
| | | | | | *ISelDAGToDAG.cpp to being regular code in SelectionDAGISel.cpp. llvm-svn: 85530
* Rename usesCustomDAGSchedInserter to usesCustomInserter, and update aDan Gohman2009-10-292-4/+8
| | | | | | | | bunch of associated comments, because it doesn't have anything to do with DAGs or scheduling. This is another step in decoupling MachineInstr emitting from scheduling. llvm-svn: 85517
* Make sure we return the right sized type here.Eric Christopher2009-10-281-2/+5
| | | | llvm-svn: 85436
* Don't call SDNode::isPredecessorOf when it isn't necessary. If the load'sDan Gohman2009-10-281-6/+10
| | | | | | chains have no users, they can't be predecessors of the condition. llvm-svn: 85394
* Rewrite SelectionDAG::isPredecessorOf to be iterative instead ofDan Gohman2009-10-281-21/+16
| | | | | | | recursive to avoid consuming extraordinary amounts of stack space when processing tall graphs. llvm-svn: 85369
* Add a second ValueType argument to isFPImmLegal.Evan Cheng2009-10-281-1/+1
| | | | llvm-svn: 85361
* Mark dead physregdefs dead immediately. This helps MachineSink andDan Gohman2009-10-281-0/+2
| | | | | | MachineLICM and other things which run before LiveVariables is run. llvm-svn: 85360
* rename indbr -> indirectbr to appease the residents of #llvm.Chris Lattner2009-10-282-3/+3
| | | | 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
* Do away with addLegalFPImmediate. Add a target hook isFPImmLegal which ↵Evan Cheng2009-10-272-10/+2
| | | | | | returns true if the fp immediate can be natively codegened by target. llvm-svn: 85281
* add enough support for indirect branch for the feature test to passChris Lattner2009-10-272-0/+7
| | | | | | | (assembler,asmprinter, bc reader+writer) and document it. Codegen currently aborts on it. llvm-svn: 85274
* pseudosourcevalue is also still using getGlobalContext(), so it isn'tChris Lattner2009-10-271-0/+1
| | | | | | thread safe either. llvm-svn: 85253
* 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-262-22/+0
| | | | | | | Remove LowerAllocations pass. Update some more passes to treate free calls just like they were treating FreeInst. llvm-svn: 85176
* Remove includes of Support/Compiler.h that are no longer needed after theNick Lewycky2009-10-255-5/+0
| | | | | | VISIBILITY_HIDDEN removal. llvm-svn: 85043
* Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.Nick Lewycky2009-10-256-12/+9
| | | | | | | Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. llvm-svn: 85042
* 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
* Fix null pointer dereference.Anton Korobeynikov2009-10-221-1/+1
| | | | llvm-svn: 84806
* Fix invalid for vector types fneg(bitconvert(x)) => bitconvert(x ^ sign)Anton Korobeynikov2009-10-201-4/+6
| | | | | | transform. llvm-svn: 84683
* -Revert parts of 84326 and 84411. Distinquishing between fixed and non-fixedEvan Cheng2009-10-185-56/+39
| | | | | | | | | | | 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-185-39/+56
| | | | | | PseudoSourceValue. llvm-svn: 84411
* Revert 84315 for now. Re-thinking the patch.Evan Cheng2009-10-175-15/+15
| | | | llvm-svn: 84321
* Rename getFixedStack to getStackObject. The stack objects represented are notEvan Cheng2009-10-175-15/+15
| | | | | | necessarily fixed. Only those will negative frame indices are "fixed." llvm-svn: 84315
* 80 col violation.Evan Cheng2009-10-171-1/+2
| | | | llvm-svn: 84311
* Delete an obsolete comment.Dan Gohman2009-10-171-2/+1
| | | | llvm-svn: 84300
* Remove MallocInst from LLVM Instructions.Victor Hernandez2009-10-172-44/+0
| | | | llvm-svn: 84299
* Allow widening of extract subvectorMon P Wang2009-10-162-0/+8
| | | | llvm-svn: 84279
* Indent code.Zhongxing Xu2009-10-161-1/+1
| | | | llvm-svn: 84247
* Report errors correctly for unselected target intrinsics.Jakob Stoklund Olesen2009-10-151-6/+9
| | | | llvm-svn: 84193
* I don't see any point in having both eh.selector.i32 and eh.selector.i64,Duncan Sands2009-10-142-19/+22
| | | | | | | | | | | | | 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-132-5/+4
| | | | | | s/DebugLoc.InlinedLoc/DebugLoc.InlinedAtLoc/g llvm-svn: 84054
* Introduce new convenience methods for sign extending orDuncan Sands2009-10-132-54/+22
| | | | | | | | | | | | 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
* Set default location for a function if it is not set.Devang Patel2009-10-121-0/+2
| | | | llvm-svn: 83921
* More heuristics for Combiner-AA. Still catches all important cases, butNate Begeman2009-10-121-6/+19
| | | | | | | compile time penalty on gnugo, the worst case in MultiSource, is down to about 2.5% from 30% llvm-svn: 83824
* Create a new InstrEmitter class for translating SelectionDAG nodesDan Gohman2009-10-105-183/+263
| | | | | | | | into MachineInstrs. This is mostly just moving the code from ScheduleDAGSDNodesEmit.cpp into a new class. This decouples MachineInstr emitting from scheduling. llvm-svn: 83699
* Make getMachineNode return a MachineSDNode* instead of a generic SDNode*Dan Gohman2009-10-101-42/+53
| | | | | | | since it won't do any folding. This will help avoid some inconvenient casting. llvm-svn: 83698
* The ScheduleDAG framework now requires an AliasAnalysis argument, thoughDan Gohman2009-10-095-5/+5
| | | | | | it isn't needed in the ScheduleDAGSDNodes schedulers. llvm-svn: 83691
* Extract scope information from the variable itself, instead of relying on ↵Devang Patel2009-10-092-10/+10
| | | | | | | | 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
* Add a SelectionDAG getTargetInsertSubreg convenience function,Bob Wilson2009-10-081-0/+11
| | | | | | similar to getTargetExtractSubreg. llvm-svn: 83564
* Add support to handle debug info attached to an instruction.Devang Patel2009-10-061-0/+2
| | | | | | This is not yet enabled. llvm-svn: 83400
* Set default location for the function if it is not already set.Devang Patel2009-10-061-0/+2
| | | | | | This code is not yet enabled. llvm-svn: 83349
* If location info is attached with an instruction then keep track of alloca ↵Devang Patel2009-10-011-3/+9
| | | | | | slots used by a variable. This info will be used by AsmPrinter to emit debug info for variables. llvm-svn: 83189
OpenPOWER on IntegriCloud