| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | Fix an iterator invalidation bug that happens when a hashtable | Chris Lattner | 2009-11-04 | 1 | -3/+4 |
| | | | | | | | resizes in IPSCCP. This fixes PR5394. llvm-svn: 86036 | ||||
| * | move two functions up higher in the file. Delete a useless argument | Chris Lattner | 2009-11-04 | 1 | -176/+232 |
| | | | | | | | | | | | | | | | to EmitGEPOffset. Implement some new transforms for optimizing subtracts of two pointer to ints into the same vector. This happens for C++ iterator idioms for example, stringmap takes a const char* that points to the start and end of a string. Once inlined, we want the pointer difference to turn back into a length. This is rdar://7362831. llvm-svn: 86021 | ||||
| * | reimplement multiple return value handling in IPSCCP, making it | Chris Lattner | 2009-11-03 | 1 | -125/+205 |
| | | | | | | | | more aggressive an correct. This survives building llvm in 64-bit mode with optimizations and the built llvm passes make check. llvm-svn: 85973 | ||||
| * | finish half thunk thought | Chris Lattner | 2009-11-03 | 1 | -1/+3 |
| | | | | | llvm-svn: 85937 | ||||
| * | fix an IPSCCP bug I introduced when I changed IPSCCP to start working on | Chris Lattner | 2009-11-03 | 1 | -19/+31 |
| | | | | | | | | | | | functions that don't have local linkage. Basically, we need to be more careful about propagating argument information to functions whose results we aren't tracking. This fixes a miscompilation of LLVMCConfigurationEmitter.cpp when built with an llvm-gcc that has ipsccp enabled. llvm-svn: 85923 | ||||
| * | fix a subtle bug I introduced when refactoring SCCP. Testcase | Chris Lattner | 2009-11-03 | 1 | -1/+1 |
| | | | | | | | to follow. llvm-svn: 85903 | ||||
| * | Eliminate some temporaries. | Benjamin Kramer | 2009-11-03 | 1 | -22/+11 |
| | | | | | llvm-svn: 85896 | ||||
| * | remove a isFreeCall check: it is a callinst that can write to memory already. | Chris Lattner | 2009-11-03 | 1 | -3/+2 |
| | | | | | llvm-svn: 85863 | ||||
| * | Alphabetize. | Ted Kremenek | 2009-11-03 | 1 | -1/+1 |
| | | | | | llvm-svn: 85859 | ||||
| * | turn IPSCCP back on now that the iterator invalidation bug is fixed. | Chris Lattner | 2009-11-03 | 1 | -36/+50 |
| | | | | | llvm-svn: 85858 | ||||
| * | fix a nasty iterator invalidation bug from my conversion from | Chris Lattner | 2009-11-02 | 1 | -3/+2 |
| | | | | | | | std::map to DenseMap, exposed on release llvm-gcc bootstrap. llvm-svn: 85840 | ||||
| * | revert r8579[56], which are causing unhappiness in buildbot land. | Chris Lattner | 2009-11-02 | 1 | -50/+36 |
| | | | | | llvm-svn: 85818 | ||||
| * | disable IPSCCP support for multiple return values, it is buggy, so just | Chris Lattner | 2009-11-02 | 1 | -1/+2 |
| | | | | | | | disable it until I can fix it. llvm-svn: 85810 | ||||
| * | improve IPSCCP to be able to propagate the result of "!mayBeOverridden" | Chris Lattner | 2009-11-02 | 1 | -36/+49 |
| | | | | | | | | | | function to calls of that function, regardless of whether it has local linkage or has its address taken. Not escaping should only affect whether we make an aggressive assumption about the arguments to a function, not whether we can track the result of it. llvm-svn: 85795 | ||||
| * | don't mark the arguments of prototype overdefined, they will never be queried. | Chris Lattner | 2009-11-02 | 1 | -3/+6 |
| | | | | | llvm-svn: 85793 | ||||
| * | restore some code I removed in r85788, refactor it into | Chris Lattner | 2009-11-02 | 1 | -4/+18 |
| | | | | | | | a shared place instead of duplicating it 4 times. llvm-svn: 85792 | ||||
| * | remove some confused code that dates from when we had | Chris Lattner | 2009-11-02 | 1 | -10/+2 |
| | | | | | | | "multiple return values" but not "first class aggregates" llvm-svn: 85791 | ||||
| * | avoid redundant lookups in BBExecutable, and make it a SmallPtrSet. | Chris Lattner | 2009-11-02 | 1 | -14/+16 |
| | | | | | llvm-svn: 85790 | ||||
| * | Use the libanalysis 'ConstantFoldLoadFromConstPtr' function | Chris Lattner | 2009-11-02 | 1 | -18/+11 |
| | | | | | | | | instead of reinventing SCCP-specific logic. This gives us new powers. llvm-svn: 85789 | ||||
| * | switch the main 'ValueState' map from being an std::map to being | Chris Lattner | 2009-11-02 | 1 | -311/+281 |
| | | | | | | | | | | | | a DenseMap. Doing this required being aware of subtle iterator invalidation issues, but it provides a big speedup. In a release-asserts build, this sped up optimizing 403.gcc from 1.34s -> 0.79s (IPSCCP) and 1.11s -> 0.44s (SCCP). This commit also conflates in a bunch of general cleanups, sorry. llvm-svn: 85788 | ||||
| * | fix a bug exposed by moving SRoA earlier which caused a crash building kc++ | Chris Lattner | 2009-11-02 | 1 | -1/+6 |
| | | | | | llvm-svn: 85786 | ||||
| * | only IPSCCP incoming arguments if the function is executable, this fixes | Chris Lattner | 2009-11-02 | 1 | -15/+17 |
| | | | | | | | an assertion on the buildbot. llvm-svn: 85784 | ||||
| * | add a new ValueState::getConstantInt() helper, use it to | Chris Lattner | 2009-11-02 | 1 | -52/+53 |
| | | | | | | | simplify some code. llvm-svn: 85783 | ||||
| * | tidy up some more: remove some extraneous inline specifiers, return harder. | Chris Lattner | 2009-11-02 | 1 | -126/+95 |
| | | | | | llvm-svn: 85780 | ||||
| * | eliminate the SCCPSolver::getValueMapping method. | Chris Lattner | 2009-11-02 | 1 | -25/+23 |
| | | | | | llvm-svn: 85778 | ||||
| * | fix failures introduced in r85774 | Chris Lattner | 2009-11-02 | 1 | -1/+2 |
| | | | | | llvm-svn: 85777 | ||||
| * | factor duplicated code into a new DeleteInstructionInBlock | Chris Lattner | 2009-11-02 | 1 | -92/+80 |
| | | | | | | | function, eliminate temporary (and pointless) smallvector. llvm-svn: 85776 | ||||
| * | Chris used to use '...' instead of proper grammar. | Chris Lattner | 2009-11-02 | 1 | -30/+32 |
| | | | | | llvm-svn: 85775 | ||||
| * | remove some extraneous llvmcontext stuff. | Chris Lattner | 2009-11-02 | 1 | -31/+26 |
| | | | | | llvm-svn: 85774 | ||||
| * | change LatticeVal to use PointerIntPair to save some space. | Chris Lattner | 2009-11-02 | 1 | -49/+52 |
| | | | | | llvm-svn: 85773 | ||||
| * | fix instcombine to only do store sinking when the alignments | Chris Lattner | 2009-11-02 | 1 | -4/+8 |
| | | | | | | | of the two loads agree. Propagate that onto the new store. llvm-svn: 85772 | ||||
| * | when merging two loads, make sure to take the min of their alignment, | Chris Lattner | 2009-11-01 | 1 | -1/+1 |
| | | | | | | | | not the max. This didn't matter until the previous patch because instcombine would refuse to sink loads with differenting alignments. llvm-svn: 85738 | ||||
| * | split load sinking out to its own function, like gep sinking. | Chris Lattner | 2009-11-01 | 1 | -66/+101 |
| | | | | | llvm-svn: 85737 | ||||
| * | fix a bug noticed by inspection: when instcombine sinks loads through | Chris Lattner | 2009-11-01 | 1 | -4/+24 |
| | | | | | | | | | phis, it didn't preserve the alignment of the load. This is a missed optimization of the alignment is high and a miscompilation when the alignment is low. llvm-svn: 85736 | ||||
| * | cleanups, switch GlobalDCE to SmallPtrSet instead of std::set | Chris Lattner | 2009-11-01 | 2 | -16/+10 |
| | | | | | llvm-svn: 85730 | ||||
| * | remove a bunch of locking from LLVMContextImpl. Since only one thread | Chris Lattner | 2009-11-01 | 1 | -0/+3 |
| | | | | | | | | can be banging on a context at a time, this isn't needed. Owen, please review. llvm-svn: 85728 | ||||
| * | improve comment. | Chris Lattner | 2009-11-01 | 1 | -1/+1 |
| | | | | | llvm-svn: 85725 | ||||
| * | Reverting 85714, 85715, 85716, which are breaking the build | Douglas Gregor | 2009-11-01 | 1 | -1/+0 |
| | | | | | llvm-svn: 85717 | ||||
| * | Remove the #include of Pass.h from PassManager.h. This breaks a significant | Dan Gohman | 2009-11-01 | 1 | -0/+1 |
| | | | | | | | #include dependency, as frontends commonly pull in PassManager.h. llvm-svn: 85714 | ||||
| * | teach ipsccp and ipconstprop that a blockaddress doesn't 'take the address' ↵ | Chris Lattner | 2009-11-01 | 2 | -2/+7 |
| | | | | | | | | | | of a function in a way that should prevent ip constprop. This allows clang/test/CodeGen/indirect-goto.c to pass with the new indirect goto lowering. llvm-svn: 85709 | ||||
| * | change llvm::MergeBlockIntoPredecessor to not merge two blocks BB1->BB2 | Chris Lattner | 2009-11-01 | 1 | -3/+7 |
| | | | | | | | | | | when BB2 has its address taken. Since it ends up doing BB2->rauw(BB1), this can cause the address of the entry block to be taken. Since it is generally undesirable to nuke blocks whose address is taken, even when we can, just unconditionally stop this xform. llvm-svn: 85708 | ||||
| * | strengthen an assumption: RevectorBlockTo knows that PredBB | Chris Lattner | 2009-11-01 | 1 | -12/+14 |
| | | | | | | | | | ended in an uncond branch because the pass requires BreakCriticalEdges. However, BCE doesn't eliminate critical adges from indbrs. llvm-svn: 85707 | ||||
| * | if CostMetrics says to never duplicate some code, don't unswitch a loop. | Chris Lattner | 2009-11-01 | 1 | -1/+2 |
| | | | | | | | This prevents unswitching from duplicating indbr's. llvm-svn: 85705 | ||||
| * | constant fold indirectbr(blockaddress(%bb)) -> br label %bb. | Chris Lattner | 2009-11-01 | 1 | -9/+46 |
| | | | | | llvm-svn: 85704 | ||||
| * | Revert 85678/85680. The decision is to stay with the current form of | Chris Lattner | 2009-11-01 | 2 | -8/+4 |
| | | | | | | | | indirectbr, thus we don't need "blockaddr(@func, null)". Eliminate it for simplicity. llvm-svn: 85699 | ||||
| * | Make sure PRE doesn't split crit edges from indirectbr. | Chris Lattner | 2009-10-31 | 1 | -1/+5 |
| | | | | | llvm-svn: 85692 | ||||
| * | llvm::SplitEdge should refuse to split an edge from an indirectbr. | Chris Lattner | 2009-10-31 | 2 | -1/+4 |
| | | | | | | | Fix CodeGenPrepare to not try to split edges from indirectbr. llvm-svn: 85690 | ||||
| * | update the comment above llvm::SplitCriticalEdge, and make | Chris Lattner | 2009-10-31 | 1 | -6/+21 |
| | | | | | | | it abort on IndirectBrInst as describe in the comment. llvm-svn: 85688 | ||||
| * | adjust a couple xforms to work with null bb's in BlockAddress. | Chris Lattner | 2009-10-31 | 2 | -4/+8 |
| | | | | | llvm-svn: 85680 | ||||
| * | add a comment. | Chris Lattner | 2009-10-31 | 1 | -0/+4 |
| | | | | | llvm-svn: 85671 | ||||

