summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Teach MachineSinking to handle easy critical edges.Jakob Stoklund Olesen2010-04-131-2/+17
| | | | | | | | | | | | | | Sometimes it is desirable to sink instructions along a critical edge: x = ... if (a && b) ... else use(x); The 'a && b' condition creates a critical edge to the else block, but we still want to sink the computation of x into the block. The else block is dominated by the parent block, so we are not pushing instructions into new code paths. llvm-svn: 101165
* Fix test on non-x86 hosts.Evan Cheng2010-04-131-1/+1
| | | | llvm-svn: 101163
* Re-apply 101075 and fix it properly. Just reuse the debug info of the branch ↵Evan Cheng2010-04-133-1/+125
| | | | | | instruction being optimized. There is no need to --I which can deref off start of the BB. llvm-svn: 101162
* Make the disassembler respect the assembler dialect when printing instructions,Chris Lattner2010-04-131-1/+3
| | | | | | patch by Marius Wachtler! llvm-svn: 101160
* Temporarily revert r101075, it's causing invalid iterator assertionsEric Christopher2010-04-132-85/+1
| | | | | | in a nightly tester. llvm-svn: 101158
* Teach postra machine licm to hoist more obvious invariants, e.g. ↵Evan Cheng2010-04-131-17/+38
| | | | | | instructions with no source operands. llvm-svn: 101154
* Add a few comments.Dan Gohman2010-04-131-0/+5
| | | | llvm-svn: 101148
* Eliminate MachineBasicBlock::const_livein_iterator and makeDan Gohman2010-04-138-16/+14
| | | | | | | | MachineBasicBlock::livein_iterator a const_iterator, because clients shouldn't ever be using the iterator interface to mutate the livein set. llvm-svn: 101147
* Rename MachineFrameInfo variables to MFI, for consistency withDan Gohman2010-04-131-41/+41
| | | | | | the rest of CodeGen. llvm-svn: 101146
* Move MachineRegisterInfo's isLiveIn and isLiveOut out of line.Dan Gohman2010-04-132-12/+16
| | | | llvm-svn: 101145
* Use MachineBasicBlock::isLiveIn.Dan Gohman2010-04-131-8/+1
| | | | llvm-svn: 101144
* Delete an unused member variable.Dan Gohman2010-04-132-2/+0
| | | | llvm-svn: 101143
* Teach ScalarEvolution to simplify smax and umax when it can proveDan Gohman2010-04-132-2/+66
| | | | | | that one operand is always greater than another. llvm-svn: 101142
* Minor code micro-optimizations.Dan Gohman2010-04-131-7/+7
| | | | llvm-svn: 101141
* Actually... return after the check for invalid input.Eric Christopher2010-04-131-0/+1
| | | | llvm-svn: 101139
* BumpPtrAllocator::Reset() doesn't need to allocate anything. (Thanks, Jakob)Benjamin Kramer2010-04-131-2/+2
| | | | llvm-svn: 101138
* Update unittest for allocator laziness.Benjamin Kramer2010-04-131-4/+4
| | | | llvm-svn: 101131
* Let BumpPtrAllocator lazily allocate the first slab.Benjamin Kramer2010-04-131-3/+6
| | | | | | | We have some code in llvm and clang where a BumpPtrAllocator is declared in a class but never used in the common case. Stop wasting memory there. llvm-svn: 101130
* Remove SCCVN from the CMake build system.Owen Anderson2010-04-131-1/+0
| | | | llvm-svn: 101125
* checkpoint.Chris Lattner2010-04-131-6/+20
| | | | llvm-svn: 101118
* SCCVN, we hardly knew ye!Owen Anderson2010-04-133-723/+0
| | | | llvm-svn: 101117
* Fix PR6826: GraphWriter delete the generated file before "dotty" load it,Chris Lattner2010-04-131-1/+2
| | | | | | patch by 'ether'. llvm-svn: 101116
* Replace r101053 with a fix for getSOImmValRotate() so that it will correctlyBob Wilson2010-04-132-53/+7
| | | | | | | recognize all the valid rotated immediates. This fixes the disassembler issue and will also help codegen for some unusual constant values. llvm-svn: 101114
* Teach IndVarSimplify how to eliminate remainder operators where theDan Gohman2010-04-132-0/+192
| | | | | | | | | | | | numerator is an induction variable. For example, with code like this: for (i=0;i<n;++i) x[i%n] = 0; IndVarSimplify will now recognize that i is always less than n inside the loop, and eliminate the remainder. llvm-svn: 101113
* VMCore: Add Type::getIntN[Ptr]Ty, which are the obvious generic forms ofDaniel Dunbar2010-04-132-0/+11
| | | | | | | Type::getInt{1,8,...}[Ptr]Ty, so code can consistently use the methods on Type without occasionally needed to call IntegerType::get. llvm-svn: 101111
* IRBuilder: Add Create{Shl,LShr,And,Or,Xor} methods from uin64_t and APInt ↵Daniel Dunbar2010-04-131-2/+59
| | | | | | constants. llvm-svn: 101110
* add llvm codegen support for -ffunction-sections and -fdata-sections,Chris Lattner2010-04-134-3/+85
| | | | | | patch by Sylvere Teissier! llvm-svn: 101106
* Build system fix to make llvm-mc properly buildSean Callanan2010-04-121-2/+2
| | | | | | | | after edis. Really, there ought to be some mechanism to ensure that PARALLEL_DIRS get built after DIRS. llvm-svn: 101095
* Micro-optimize a few hot spots.Dan Gohman2010-04-121-10/+11
| | | | llvm-svn: 101086
* Use .set expression for x86 pic jump table reference to reduce assembly ↵Evan Cheng2010-04-122-2/+16
| | | | | | relocation. rdar://7738756 llvm-svn: 101085
* Add fast paths to ScalarEvolution::getSizeOf and getOffsetOf, asDan Gohman2010-04-121-0/+14
| | | | | | | they're used a lot by getNodeForGEP, which can be called a lot. This speeds up -iv-users by around 15% on several testcases. llvm-svn: 101083
* Third time's a charm...Bill Wendling2010-04-121-1/+1
| | | | llvm-svn: 101081
* Genericize the label test.Bill Wendling2010-04-121-1/+1
| | | | llvm-svn: 101079
* Correct test to test what I mean it to test.Bill Wendling2010-04-121-1/+2
| | | | llvm-svn: 101077
* Micro-optimization:Bill Wendling2010-04-122-1/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we have this situation: jCC L1 jmp L2 L1: ... L2: ... We can get a small performance boost by emitting this instead: jnCC L2 L1: ... L2: ... This testcase shows an example of this: float func(float x, float y) { double product = (double)x * y; if (product == 0.0) return product; return product - 1.0; } llvm-svn: 101075
* Simplify this code.Dan Gohman2010-04-121-14/+14
| | | | llvm-svn: 101074
* Build system fixes. llvm-mc depends onSean Callanan2010-04-122-14/+11
| | | | | | | | | | | libEnhancedDisassembly, so we now build the static library in all cases (although the shared library is only built when requested/possible). Also, fixed a bug where edis wasn't properly initializing the targets it uses. llvm-svn: 101072
* Suppress LinearFunctionTestReplace when the computed backedge-takenDan Gohman2010-04-122-0/+180
| | | | | | | | | | | | expression is a UDiv and it doesn't appear that the UDiv came from the user's source. ScalarEvolution has recently figured out how to compute a tripcount expression for the inner loop in SingleSource/Benchmarks/Shootout/sieve.c, using a udiv. Emitting a udiv instruction dramatically slows down the enclosing loop. llvm-svn: 101068
* Bug fix: made the enhanced disassembler's linkSean Callanan2010-04-121-1/+1
| | | | | | flags work properly when EDIS_VERSION is defined llvm-svn: 101063
* Bug fix: included System/Types.h instead ofSean Callanan2010-04-121-1/+1
| | | | | | inttypes.h to allow building on Windows. llvm-svn: 101062
* Second try at integrating the edis tester. ThisSean Callanan2010-04-125-41/+252
| | | | | | | | | | | time I use the LIBS variable, which is not subject to a %.a -> -l% transformation, to link llvm-mc against libEnhancedDisassembly. llvm-mc -edis works the same as llvm-mc -disassemble, but outputs tokens and operands. llvm-svn: 101058
* Fixed a crasher in arm disassembler within ARMInstPrinter.cpp after callingJohnny Chen2010-04-123-1/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ARM_AM::getSoImmVal(V) with a legitimate so_imm value: #245 rotate right by 2. Introduce ARM_AM::getSOImmValOneOrNoRotate(unsigned Arg) which is called from ARMInstPrinter.cpp's printSOImm() function, replacing ARM_AM::getSOImmVal(V). [12:44:43] johnny:/Volumes/data/llvm/git/trunk (local-trunk) $ gdb Debug/bin/llvm-mc GNU gdb 6.3.50-20050815 (Apple version gdb-1346) (Fri Sep 18 20:40:51 UTC 2009) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries ... done (gdb) set args -triple=arm-apple-darwin9 -debug-only=arm-disassembler --disassemble (gdb) r Starting program: /Volumes/data/llvm/git/trunk/Debug/bin/llvm-mc -triple=arm-apple-darwin9 -debug-only=arm-disassembler --disassemble Reading symbols for shared libraries ++. done 0xf5 0x71 0xf0 0x53 Opcode=201 Name=MVNi Format=ARM_FORMAT_DPFRM(4) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ------------------------------------------------------------------------------------------------- | 0: 1: 0: 1| 0: 0: 1: 1| 1: 1: 1: 1| 0: 0: 0: 0| 0: 1: 1: 1| 0: 0: 0: 1| 1: 1: 1: 1| 0: 1: 0: 1| ------------------------------------------------------------------------------------------------- mvnpls r7, Assertion failed: (V != -1 && "Not a valid so_imm value!"), function printSOImm, file ARMInstPrinter.cpp, line 229. Program received signal SIGABRT, Aborted. 0x00007fff88c65886 in __kill () (gdb) bt #0 0x00007fff88c65886 in __kill () #1 0x00007fff88d05eae in abort () #2 0x00007fff88cf2ef0 in __assert_rtn () #3 0x000000010020e422 in printSOImm (O=@0x1010bdf80, V=-1, VerboseAsm=false, MAI=0x1020106d0) at ARMInstPrinter.cpp:229 #4 0x000000010020e5fe in llvm::ARMInstPrinter::printSOImmOperand (this=0x1020107e0, MI=0x7fff5fbfee70, OpNum=1, O=@0x1010bdf80) at ARMInstPrinter.cpp:254 #5 0x00000001001ffbc0 in llvm::ARMInstPrinter::printInstruction (this=0x1020107e0, MI=0x7fff5fbfee70, O=@0x1010bdf80) at ARMGenAsmWriter.inc:3236 #6 0x000000010020c27c in llvm::ARMInstPrinter::printInst (this=0x1020107e0, MI=0x7fff5fbfee70, O=@0x1010bdf80) at ARMInstPrinter.cpp:182 #7 0x000000010003cbff in PrintInsts (DisAsm=@0x10200f4e0, Printer=@0x1020107e0, Bytes=@0x7fff5fbff060, SM=@0x7fff5fbff078) at Disassembler.cpp:65 #8 0x000000010003c8b4 in llvm::Disassembler::disassemble (T=@0x1010c13c0, Triple=@0x1010b6798, Buffer=@0x102010690) at Disassembler.cpp:153 #9 0x000000010004095c in DisassembleInput (ProgName=0x7fff5fbff3f0 "/Volumes/data/llvm/git/trunk/Debug/bin/llvm-mc") at llvm-mc.cpp:347 #10 0x000000010003eefb in main (argc=4, argv=0x7fff5fbff298) at llvm-mc.cpp:374 (gdb) q The program is running. Exit anyway? (y or n) y [13:36:26] johnny:/Volumes/data/llvm/git/trunk (local-trunk) $ llvm-svn: 101053
* Remove a #include.Dan Gohman2010-04-121-1/+0
| | | | llvm-svn: 101043
* Remove unneeded debug in PostDominator runOnFunction()Tobias Grosser2010-04-121-1/+0
| | | | | | | | The information is already available with "opt -analyze". The DominatorTree does also not have this in its runOnFunction. So they behave now more consistent. llvm-svn: 101038
* Remove dead code in the dotty dominance tree printer.Tobias Grosser2010-04-121-25/+0
| | | | | | | This template is not needed anymore as it was replaced by the DOTGraphTraitsViewer. llvm-svn: 101036
* Boolify.Benjamin Kramer2010-04-121-1/+1
| | | | llvm-svn: 101035
* Plug trivial leak.Benjamin Kramer2010-04-121-0/+2
| | | | llvm-svn: 101034
* Delete this code, which is no longer needed.Dan Gohman2010-04-121-4/+0
| | | | llvm-svn: 101033
* Move the EliminateIVUsers call back out to its original location. Now thatDan Gohman2010-04-121-10/+4
| | | | | | | | a ScalarEvolution bug with overflow handling is fixed, the normal analysis code will automatically decline to operate on the icmp instructions which are responsible for the loop exit. llvm-svn: 101032
* Generalize ScalarEvolution's PHI analysis to handle loops that don'tDan Gohman2010-04-122-14/+55
| | | | | | | have preheaders or dedicated exit blocks, as clients may not otherwise need to run LoopSimplify. llvm-svn: 101030
OpenPOWER on IntegriCloud