summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Delete the heuristic for non-livein CopyFromReg nodes. Non-liveinnessDan Gohman2009-02-111-11/+0
| | | | | | | | | is determined by whether the node has a Flag operand. However, if the node does have a Flag operand, it will be glued to its register's def, so the heuristic would end up spuriously applying to whatever node is the def. llvm-svn: 64319
* Don't try to set an EFLAGS operand to dead if no instruction was created.Dan Gohman2009-02-111-4/+6
| | | | | | This fixes a bug introduced by r61215. llvm-svn: 64316
* Make a transformation added in 63266 a bit less aggressive.Dale Johannesen2009-02-111-5/+9
| | | | | | | | | | | It was transforming (x&y)==y to (x&y)!=0 in the case where y is variable and known to have at most one bit set (e.g. z&1). This is not correct; the expressions are not equivalent when y==0. I believe this patch salvages what can be salvaged, including all the cases in bt.ll. Dan, please review. Fixes gcc.c-torture/execute/20040709-[12].c llvm-svn: 64314
* Revert r64300 and r64301. These were causing the following errors respectively:Bill Wendling2009-02-112-26/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During llvm-gcc bootstrap: Undefined symbols: "llvm::FPPassManager::doFinalization(llvm::Module&)", referenced from: (anonymous namespace)::CGPassManager::doFinalization(llvm::CallGraph&, llvm::Module&) in libLLVMipa.a(CallGraphSCCPass.o) "llvm::FPPassManager::doInitialization(llvm::Module&)", referenced from: (anonymous namespace)::CGPassManager::doInitialization(llvm::CallGraph&, llvm::Module&) in libLLVMipa.a(CallGraphSCCPass.o) ld: symbol(s) not found collect2: ld returned 1 exit status make[3]: *** [/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/obj-llvm/Release/bin/opt] Error 1 During an LLVM release build: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/bin/tblgen -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86 -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target -gen-register-desc -o /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Target/X86/Release/X86GenRegisterInfo.inc.tmp /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86/X86.td llvm[3]: Building X86.td instruction names with tblgen /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/bin/tblgen -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86 -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target -gen-instr-enums -o /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Target/X86/Release/X86GenInstrNames.inc.tmp /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86/X86.td llvm[3]: Building X86.td instruction information with tblgen /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/bin/tblgen -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86 -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target -gen-instr-desc -o /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Target/X86/Release/X86GenInstrInfo.inc.tmp /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86/X86.td llvm[3]: Building X86.td assembly writer with tblgen /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/Release/bin/tblgen -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86 -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target -gen-asm-writer -o /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Target/X86/Release/X86GenAsmWriter.inc.tmp /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Target/X86/X86.td llvm[3]: Compiling InstructionCombining.cpp for Release build if /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~dst/Developer/usr/bin/llvm-g++-4.2 -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/include -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Transforms/Scalar -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -O3 -fno-exceptions -Woverloaded-virtual -pedantic -Wall -W -Wwrite-strings -Wno-long-long -Wunused -Wno-unused-parameter -fstrict-aliasing -Wstrict-aliasing -c -MMD -MP -MF "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.d.tmp" -MT "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.lo" -MT "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.o" -MT "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.d" /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/lib/Transforms/Scalar/InstructionCombining.cpp -o /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.o ; \ then /bin/mv -f "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Transforms/Scalar/Release/InstructionCombining.d.tmp" "/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm.sh.build/lib/Trans llvm-svn: 64311
* These uses of "inline" can cause strange link-timeDuncan Sands2009-02-111-8/+8
| | | | | | | failures when building with optimization. Just get rid of them. llvm-svn: 64301
* Make sure the SCC pass manager initializes any containedDuncan Sands2009-02-111-8/+18
| | | | | | | | function pass managers. Without this, simplify-libcalls would add nocapture attributes when run on its own, but not when run as part of -std-compile-opts or similar. llvm-svn: 64300
* Implement PR3495: local spiller optimization. The local spiller can now keep ↵Evan Cheng2009-02-111-91/+208
| | | | | | availability information over BB boundaries. It visits BB's in depth first order. After visiting a BB if it find a successor which has a single predecessor it visits the successor next without clearing the availability information. This allows the successor to omit reloads or change them into copies. llvm-svn: 64298
* When scheduling a block in parts, keep track of the overallDan Gohman2009-02-1112-47/+104
| | | | | | | | | | | instruction index across each part. Instruction indices are used to make live range queries, and live ranges can extend beyond scheduling region boundaries. Refactor the ScheduleDAGSDNodes class some more so that it doesn't have to worry about this additional information. llvm-svn: 64288
* If llvm.dbg.region.end is disappearing then remove corresponding ↵Devang Patel2009-02-112-3/+23
| | | | | | llvm.dbg.func.start also. llvm-svn: 64278
* Don't print extra spaces in vector and array constants. This makesDan Gohman2009-02-111-4/+2
| | | | | | them visually more consistent with vector and array types. llvm-svn: 64267
* Use iterators to iterate through the Preds array instead ofDan Gohman2009-02-111-2/+3
| | | | | | | an index. This code is on the hot-path because the current way SDep edges are uniqued has quadratic complexity. llvm-svn: 64262
* Consider any instruction that modifies the stack pointer to beDan Gohman2009-02-101-0/+10
| | | | | | | | | a scheduling region boundary. This isn't necessary for correctness; it helps with compile time, as it avoids the need for data- and anti-dependencies from all spills and reloads on the stack-pointer modification. llvm-svn: 64255
* Factor out more code for computing register live-range informationforDan Gohman2009-02-107-357/+509
| | | | | | | | | | | scheduling, and generalize is so that preserves state across scheduling regions. This fixes incorrect live-range information around terminators and labels, which are effective region boundaries. In place of looking for terminators to anchor inter-block dependencies, introduce special entry and exit scheduling units for this purpose. llvm-svn: 64254
* Ignore dbg intrinsic while folding unconditional branch.Devang Patel2009-02-101-1/+2
| | | | llvm-svn: 64242
* Handle llvm.x86.sse2.maskmov.dqu in 64-bit.Evan Cheng2009-02-101-0/+5
| | | | llvm-svn: 64240
* 80 col violations.Evan Cheng2009-02-101-4/+7
| | | | llvm-svn: 64237
* Use early exits. Reduce indentation.Devang Patel2009-02-101-37/+42
| | | | llvm-svn: 64226
* Use const, to support platforms where strrchr returns a const char *.Dan Gohman2009-02-101-2/+2
| | | | | | This fixes PR3535. llvm-svn: 64224
* Pacify gcc-4.3 (thinks IsConstant may be usedDuncan Sands2009-02-101-1/+3
| | | | | | uninitialized). llvm-svn: 64220
* Fix PR3457: Ignore control successors when looking for closest scheduled ↵Evan Cheng2009-02-101-1/+1
| | | | | | successor. A control successor doesn't read result(s) produced by the scheduling unit being evaluated. llvm-svn: 64210
* Do not clone llvm.dbg.func.start and corresponding llvm.dbg.region.end ↵Devang Patel2009-02-101-3/+14
| | | | | | during inlining. llvm-svn: 64209
* Enable scalar replacement of AllocaInst whose one of the user is dbg info.Devang Patel2009-02-102-52/+103
| | | | llvm-svn: 64207
* Validate file id.Devang Patel2009-02-101-0/+3
| | | | llvm-svn: 64204
* Function temporaries can not overlap with retval or args.See the comment in ↵Sanjiv Gupta2009-02-101-8/+20
| | | | | | source code to know the reason. Anything having .auto. in its name is local to a function in nature irrespective of the linkage specified. print static local variables in module level IDATA section. llvm-svn: 64199
* Implement FpSET_ST1_*.Evan Cheng2009-02-093-6/+27
| | | | llvm-svn: 64186
* If the target cannot issue a copy for the given source and dest registers, ↵Evan Cheng2009-02-091-5/+10
| | | | | | abort instead of silently continue. llvm-svn: 64184
* Fix PR 3471, and some cleanups.Dale Johannesen2009-02-091-17/+32
| | | | llvm-svn: 64177
* Simplify code.Evan Cheng2009-02-091-5/+6
| | | | llvm-svn: 64164
* Make sure constant subscript is truncated to ptr size if it may not fit.Evan Cheng2009-02-091-1/+8
| | | | llvm-svn: 64163
* Use doxygen comment syntax.Dan Gohman2009-02-091-4/+4
| | | | llvm-svn: 64150
* Use slightly more correct grammar in error messages.Dan Gohman2009-02-091-2/+2
| | | | llvm-svn: 64148
* make sure that BranchInst::getSuccessor() does not assert in cast<>Gabor Greif2009-02-091-4/+5
| | | | | | | | | even if the underlying operand is NULL. This may happen in debugging context within opt with partial loop unrolling (see test/Transforms/LoopUnroll/partial.ll). After this fix I can resubmit the (backed out) r63459: * lib/VMCore/AsmWriter.cpp: use precise accessors. llvm-svn: 64142
* Re-enable machine sinking pass now that the coalescer bugs and the ↵Evan Cheng2009-02-091-8/+2
| | | | | | AnalyzeBrnach bug are fixed. llvm-svn: 64126
* Fix another case ShortenDeadCopySrcLiveRange is shortening too much. No test ↵Evan Cheng2009-02-091-6/+13
| | | | | | case possible since I don't know what to grep for. :-( llvm-svn: 64125
* Turns out AnalyzeBranch can modify the mbb being analyzed. This is a nastyEvan Cheng2009-02-0915-29/+55
| | | | | | | | suprise to some callers, e.g. register coalescer. For now, add an parameter that tells AnalyzeBranch whether it's safe to modify the mbb. A better solution is out there, but I don't have time to deal with it right now. llvm-svn: 64124
* Add a Sleep() function.Mikhail Glushenkov2009-02-082-0/+8
| | | | llvm-svn: 64101
* Add Emacs hints to Alarm.inc.Mikhail Glushenkov2009-02-083-8/+8
| | | | | | Also removes some trailing whitespace and fixes one 80-column violation. llvm-svn: 64094
* add a note.Chris Lattner2009-02-081-0/+31
| | | | llvm-svn: 64093
* fix typoChris Lattner2009-02-081-1/+1
| | | | llvm-svn: 64091
* reject void pointers with a nice error:Chris Lattner2009-02-081-1/+5
| | | | | | | | | | llvm-as: t.ll:2:15: pointers to void are invalid, use i8* instead %X = type void* ^ instead of asserting and dying. llvm-svn: 64089
* Fix PR3486. Fix a bug in code that manually patch physical register live ↵Evan Cheng2009-02-082-16/+34
| | | | | | interval after its sub-register is coalesced with a virtual register. llvm-svn: 64082
* Strengthen the previous check.Evan Cheng2009-02-081-4/+5
| | | | llvm-svn: 64076
* r64073 commit message is lost. Here it is:Evan Cheng2009-02-081-3/+4
| | | | | | | | | Right now if the coalesced copy def is dead and its src is a kill, and that there are now other uses within the live range, the coalescer would mark the def of the source register as dead. But it should also check if there are other kills which means the value has other uses not in the live range. llvm-svn: 64075
* (no commit message)Evan Cheng2009-02-081-3/+10
| | | | llvm-svn: 64073
* Mistakenly turned this on.Bill Wendling2009-02-081-1/+1
| | | | llvm-svn: 64065
* Revert r63999. It was breaking self-hosting builds.Bill Wendling2009-02-082-3/+9
| | | | llvm-svn: 64062
* Add missing break statements, fixing PR3503.Chris Lattner2009-02-071-8/+11
| | | | llvm-svn: 64040
* Instrcombine should not change load(cast p) to cast(load p) if the castMon P Wang2009-02-071-1/+7
| | | | | | changes the address space of the pointer. llvm-svn: 64035
* Use getDebugLoc forwarder instead of getNode()->getDebugLoc.Dale Johannesen2009-02-0712-79/+79
| | | | | | No functional change. llvm-svn: 64026
* Constify TargetInstrInfo::EmitInstrWithCustomInserter, allowingDan Gohman2009-02-0717-28/+27
| | | | | | ScheduleDAG's TLI member to use const. llvm-svn: 64018
OpenPOWER on IntegriCloud