summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
Commit message (Collapse)AuthorAgeFilesLines
* Revert r124611 - "Keep track of incoming argument's location while emitting ↵Devang Patel2011-02-211-1/+1
| | | | | | | | | | | LiveIns." In other words, do not keep track of argument's location. The debugger (gdb) is not prepared to see line table entries for arguments. For the debugger, "second" line table entry marks beginning of function body. This requires some coordination with debugger to get this working. - The debugger needs to be aware of prolog_end attribute attached with line table entries. - The compiler needs to accurately mark prolog_end in line table entries (at -O0 and at -O1+) llvm-svn: 126155
* Keep track of incoming argument's location while emitting LiveIns.Devang Patel2011-01-311-1/+1
| | | | llvm-svn: 124611
* Avoid zero extend bit test operands to pointer type if all the masks fit inEvan Cheng2011-01-061-3/+5
| | | | | | | the original type of the switch statement key. rdar://8781238 llvm-svn: 122935
* When isel is emitting instructions for an x86 target without CMOV, the CFG isJakob Stoklund Olesen2010-09-301-0/+4
| | | | | | | | | | | | | | | | | edited during emission. If the basic block ends in a switch that gets lowered to a jump table, any phis at the default edge were getting updated wrong. The jump table data structure keeps a pointer to the header blocks that wasn't getting updated after the MBB is split. This bug was exposed on 32-bit Linux when disabling critical edge splitting in codegen prepare. The fix is to uipdate stale MBB pointers whenever a block is split during emission. llvm-svn: 115191
* Offset is not always unsigned number.Devang Patel2010-08-311-1/+1
| | | | llvm-svn: 112584
* Trim a #include.Dan Gohman2010-08-281-3/+0
| | | | llvm-svn: 112340
* Revert r112213. It is not needed.Devang Patel2010-08-261-4/+4
| | | | llvm-svn: 112242
* Update DanglingDebugInfo so that it can be used to track llvm.dbg.declare also.Devang Patel2010-08-261-4/+4
| | | | llvm-svn: 112213
* Fix comment.Devang Patel2010-08-251-4/+3
| | | | llvm-svn: 112086
* Remove dead argument.Devang Patel2010-08-251-2/+1
| | | | llvm-svn: 112085
* The SelectionDAGBuilder's handling of debug info, on rareDale Johannesen2010-07-161-0/+22
| | | | | | | | | | occasions, caused code to be generated in a different order. All cases I've seen involved float softening in the type legalizer, and this could be perhaps be fixed there, but it's better not to generate things differently in the first place. 7797940 (6/29/2010..7/15/2010). llvm-svn: 108484
* Revert. This isn't the correct way to go.Bill Wendling2010-07-151-1/+1
| | | | llvm-svn: 108478
* Handle code gen for the unreachable instruction if it's the only instruction inBill Wendling2010-07-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the function. We'll just turn it into a "trap" instruction instead. The problem with not handling this is that it might generate a prologue without the equivalent epilogue to go with it: $ cat t.ll define void @foo() { entry: unreachable } $ llc -o - t.ll -relocation-model=pic -disable-fp-elim -unwind-tables .section __TEXT,__text,regular,pure_instructions .globl _foo .align 4, 0x90 _foo: ## @foo Leh_func_begin0: ## BB#0: ## %entry pushq %rbp Ltmp0: movq %rsp, %rbp Ltmp1: Leh_func_end0: ... The unwind tables then have bad data in them causing all sorts of problems. Fixes <rdar://problem/8096481>. llvm-svn: 108473
* Reapply r106422, splitting the code for materializing a value out ofDan Gohman2010-07-011-0/+2
| | | | | | | SelectionDAGBuilder::getValue into a helper function, with fixes to use DenseMaps safely. llvm-svn: 107371
* Revert r106422, which is breaking the non-fast-isel path.Dan Gohman2010-06-211-2/+0
| | | | llvm-svn: 106423
* More changes for non-top-down fast-isel.Dan Gohman2010-06-211-0/+2
| | | | | | | | | | Split the code for materializing a value out of SelectionDAGBuilder::getValue into a helper function, so that it can be used in other ways. Add a new getNonRegisterValue function which uses it, for use in code which doesn't want a CopyFromReg even when FuncMap.ValueMap already has an entry for it. llvm-svn: 106422
* Keep track of incoming debug value of unused argument.Devang Patel2010-06-011-0/+10
| | | | | | Radar 7927666. llvm-svn: 105285
* Don't pass SDValues by non-const reference unless they may beDan Gohman2010-05-011-1/+1
| | | | | | modified. llvm-svn: 102816
* Delete the EdgeMapping variable itself.Dan Gohman2010-05-011-4/+0
| | | | llvm-svn: 102810
* Do not generate duplicate dbg_value instructions for function arguments.Evan Cheng2010-04-291-1/+1
| | | | llvm-svn: 102585
* Replace r102368 with code that's less fragile. This creates DBG_VALUE ↵Evan Cheng2010-04-281-0/+10
| | | | | | instructions for function arguments early and insert them after instruction selection is done. llvm-svn: 102554
* Sink SelectionDAGBuilder's HandlePHINodesInSuccessorBlocks downDan Gohman2010-04-221-2/+2
| | | | | | into SelectionDAGBuilder itself. llvm-svn: 102128
* Move HandlePHINodesInSuccessorBlocks functions out of SelectionDAGISelDan Gohman2010-04-221-0/+2
| | | | | | and into SelectionDAGBuilder and FastISel. llvm-svn: 102123
* Move PHINodesToUpdate out of SelectionDAGBuilder and intoDan Gohman2010-04-221-4/+0
| | | | | | | | | FunctionLoweringInfo, as it isn't SelectionDAG-specific. This isn't completely natural, as PHI node state is not per-function but rather per-basic-block, however there's currently no other convenient per-basic-block state to group it with. llvm-svn: 102109
* Don't send PHI nodes down to SelectionDAGBuilder of FastISel, sinceDan Gohman2010-04-201-1/+1
| | | | | | they end up doing nothing. llvm-svn: 101904
* Sink DebugLoc handling out of SelectionDAGISel into FastISel andDan Gohman2010-04-201-1/+0
| | | | | | SelectionDAGBuilder, where it doesn't have to be as complicated. llvm-svn: 101848
* Eliminate the CurMBB member from SelectionDAGBuilder. For places thatDan Gohman2010-04-191-14/+18
| | | | | | | need it, just pass around the parent block of the current instruction explicitly. llvm-svn: 101822
* Code that needs a TargetMachine should have access to one directly, ratherDan Gohman2010-04-191-3/+4
| | | | | | than just getting one through a TargetLowering. llvm-svn: 101802
* Use const qualifiers with TargetLowering. This eliminates severalDan Gohman2010-04-171-2/+2
| | | | | | | | | | | | | const_casts, and it reinforces the design of the Target classes being immutable. SelectionDAGISel::IsLegalToFold is now a static member function, because PIC16 uses it in an unconventional way. There is more room for API cleanup here. And PIC16's AsmPrinter no longer uses TargetLowering. llvm-svn: 101635
* Add const qualifiers to CodeGen's use of LLVM IR constructs.Dan Gohman2010-04-151-102/+104
| | | | llvm-svn: 101334
* Fix typos in comments.Dan Gohman2010-04-141-1/+1
| | | | llvm-svn: 101266
* Delete an obsolete comment.Dan Gohman2010-04-141-1/+0
| | | | llvm-svn: 101264
* remove the now-redundant MMI pointer in SelectionDAG.Chris Lattner2010-04-051-1/+0
| | | | llvm-svn: 100419
* stop using DebugLoc::getUnknownLoc()Chris Lattner2010-04-021-4/+2
| | | | llvm-svn: 100215
* Assign the ordering of SDNodes in a much less intrusive fashion. After theBill Wendling2010-01-281-0/+5
| | | | | | | "visit*" method is called, take the newly created nodes, walk them in a DFS fashion, and if they don't have an ordering set, then give it one. llvm-svn: 94757
* whitespace cleanupChris Lattner2010-01-011-6/+6
| | | | llvm-svn: 92404
* move an optimization for memcmp out of simplifylibcalls and into Chris Lattner2009-12-241-0/+4
| | | | | | | | | SDISel. This optimization was causing simplifylibcalls to introduce type-unsafe nastiness. This is the first step, I'll be expanding the memcmp optimizations shortly, covering things that we really really wouldn't want simplifylibcalls to do. llvm-svn: 92098
* Add more plumbing. This time in the LowerArguments and "get" functions whichBill Wendling2009-12-221-0/+2
| | | | | | | | return partial registers. This affected the back-end lowering code some. Also patch up some places I missed before in the "get" functions. llvm-svn: 91880
* Changes from review:Bill Wendling2009-12-181-1/+5
| | | | | | | | | | | - Move DisableScheduling flag into TargetOption.h - Move SDNodeOrdering into its own header file. Give it a minimal interface that doesn't conflate construction with storage. - Move assigning the ordering into the SelectionDAGBuilder. This isn't used yet, so there should be no functional changes. llvm-svn: 91727
* Rename SelectionDAGLowering to SelectionDAGBuilder, and renameDan Gohman2009-11-231-0/+487
SelectionDAGBuild.cpp to SelectionDAGBuilder.cpp. llvm-svn: 89681
OpenPOWER on IntegriCloud