summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Line this up as well.Nick Lewycky2009-11-011-1/+1
| | | | llvm-svn: 85748
* Fix whitespace.Nick Lewycky2009-11-011-2/+2
| | | | llvm-svn: 85747
* Fix a couple more places where we are creating ld / st instructions without ↵Evan Cheng2009-11-012-4/+36
| | | | | | memoperands. llvm-svn: 85746
* Make use of imm12 version of Thumb2 ldr / str instructions more aggressively.Evan Cheng2009-11-012-6/+91
| | | | llvm-svn: 85743
* fix two strange things in the default passmgr:Chris Lattner2009-11-011-2/+8
| | | | | | | | | | | | | | 1. we'd run simplifycfg at the very start, even though the per function passes have already cleaned this up. 2. In the main per-function pipeline that is interlaced with inlining etc, we would do instcombine, jump threading, simplifycfg *before* doing SROA. SROA is much more likely to expose opportunities for these passes than they are for SROA, so move SRoA up earlier. also add some comments. llvm-svn: 85742
* merge phi-merge.ll into phi.llChris Lattner2009-11-012-31/+33
| | | | | | | I don't know what Dan wants to do with phi-merge-gep.ll, I'll let him deal with it because instcombine may end up sinking these. llvm-svn: 85739
* when merging two loads, make sure to take the min of their alignment,Chris Lattner2009-11-012-1/+27
| | | | | | | 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 Lattner2009-11-011-66/+101
| | | | llvm-svn: 85737
* fix a bug noticed by inspection: when instcombine sinks loads throughChris Lattner2009-11-012-4/+45
| | | | | | | | 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
* IPSCCP apparently is not a superset of IPCP, this is bad,Chris Lattner2009-11-011-0/+1
| | | | | | | but I'll investigate it separately. This unbreaks test/FrontendC/weak_constant.c llvm-svn: 85735
* convert to filecheck.Chris Lattner2009-11-011-20/+49
| | | | llvm-svn: 85734
* Improve the other instance of the comment.Duncan Sands2009-11-011-1/+1
| | | | llvm-svn: 85733
* Add a missing closing parenthesis, and tweak to fit in 80Duncan Sands2009-11-011-2/+2
| | | | | | columns. llvm-svn: 85732
* only run GlobalDCE at -O3 and run it late instead of early.Chris Lattner2009-11-011-4/+9
| | | | | | | GlobalOpt already deletes trivially dead functions/globals, so GlobalDCE only adds values for cycles of dead things. llvm-svn: 85731
* cleanups, switch GlobalDCE to SmallPtrSet instead of std::setChris Lattner2009-11-012-16/+10
| | | | llvm-svn: 85730
* We currently only run ipsccp at LTO time, which is silly. It subsumesChris Lattner2009-11-012-2/+20
| | | | | | | | | | | | ipconstprop and doesn't take much time. Just run it in its place. This adds a testcase for it, which I plan to expand to cover other "integration" cases, where we expect the optimizer to be able to eliminate various things. Due to phase order issues we've regressed in a number of areas and integration tests are the only way I see to prevent this. llvm-svn: 85729
* remove a bunch of locking from LLVMContextImpl. Since only one threadChris Lattner2009-11-0110-89/+10
| | | | | | | can be banging on a context at a time, this isn't needed. Owen, please review. llvm-svn: 85728
* improve comment.Chris Lattner2009-11-011-1/+1
| | | | llvm-svn: 85725
* add a comment about why we don't allow inlining indbr.Chris Lattner2009-11-011-0/+5
| | | | llvm-svn: 85724
* Fix tests.Evan Cheng2009-11-012-4/+4
| | | | llvm-svn: 85723
* the verifier shouldn't modify the IR.Chris Lattner2009-11-015-12/+20
| | | | llvm-svn: 85722
* Reverting 85714, 85715, 85716, which are breaking the buildDouglas Gregor2009-11-018-15/+3
| | | | llvm-svn: 85717
* Add a function to Passes.h to allow clients to create instancesDan Gohman2009-11-012-0/+9
| | | | | | of the ScalarEvolution pass without needing to #include ScalarEvolution.h. llvm-svn: 85716
* Don't #include Pass.h from CallGraph.h.Dan Gohman2009-11-012-1/+2
| | | | llvm-svn: 85715
* Remove the #include of Pass.h from PassManager.h. This breaks a significantDan Gohman2009-11-014-2/+4
| | | | | | #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 Lattner2009-11-012-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 Lattner2009-11-011-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 Lattner2009-11-011-12/+14
| | | | | | | | ended in an uncond branch because the pass requires BreakCriticalEdges. However, BCE doesn't eliminate critical adges from indbrs. llvm-svn: 85707
* fix an issue where the verifier would reject a function whose entryChris Lattner2009-11-013-2/+19
| | | | | | block had its address taken even if the blockaddress was dead. llvm-svn: 85706
* if CostMetrics says to never duplicate some code, don't unswitch a loop.Chris Lattner2009-11-011-1/+2
| | | | | | This prevents unswitching from duplicating indbr's. llvm-svn: 85705
* constant fold indirectbr(blockaddress(%bb)) -> br label %bb.Chris Lattner2009-11-011-9/+46
| | | | llvm-svn: 85704
* improve x86 codegen support for blockaddress. We now compileChris Lattner2009-11-012-6/+30
| | | | | | | | | | | | | | | | | | | | | | the testcase into: _test1: ## @test1 ## BB#0: ## %entry leaq L_test1_bb6(%rip), %rax jmpq *%rax L_test1_bb: ## Address Taken LBB1_1: ## %bb movb $1, %al ret L_test1_bb6: ## Address Taken LBB1_2: ## %bb6 movb $2, %al ret Note, it is very very strange that BlockAddressSDNode doesn't carry around TargetFlags. Dan, please fix this. llvm-svn: 85703
* pull check for return inst out of loop, never inline a callee that containsChris Lattner2009-11-011-5/+7
| | | | | | an indirectbr. llvm-svn: 85702
* Fix BlockAddress::replaceUsesOfWithOnConstant to correctly Chris Lattner2009-11-011-5/+8
| | | | | | maintain the block use count in SubclassData. llvm-svn: 85701
* implement linker support for BlockAddress.Chris Lattner2009-11-011-17/+13
| | | | llvm-svn: 85700
* Revert 85678/85680. The decision is to stay with the current form of Chris Lattner2009-11-0111-47/+25
| | | | | | | indirectbr, thus we don't need "blockaddr(@func, null)". Eliminate it for simplicity. llvm-svn: 85699
* Use cbz and cbnz instructions.Evan Cheng2009-10-314-11/+96
| | | | llvm-svn: 85698
* vml[as].f32 cause stalls in following advanced SIMD instructions. Avoid usingJim Grosbach2009-10-314-10/+15
| | | | | | them for scalar floating point operations for now. llvm-svn: 85697
* Consolidate test filesJim Grosbach2009-10-314-122/+100
| | | | llvm-svn: 85696
* Change to use FileCheckJim Grosbach2009-10-311-1/+3
| | | | llvm-svn: 85695
* Make tests more explicit about which instructions are expected.Jim Grosbach2009-10-311-2/+2
| | | | llvm-svn: 85694
* Grammar tweak to commentsJim Grosbach2009-10-311-4/+4
| | | | llvm-svn: 85693
* Make sure PRE doesn't split crit edges from indirectbr.Chris Lattner2009-10-311-1/+5
| | | | llvm-svn: 85692
* Update test to be more explicit about what instruction sequences are ↵Jim Grosbach2009-10-311-26/+39
| | | | | | expected for each operation. llvm-svn: 85691
* llvm::SplitEdge should refuse to split an edge from an indirectbr.Chris Lattner2009-10-312-1/+4
| | | | | | Fix CodeGenPrepare to not try to split edges from indirectbr. llvm-svn: 85690
* Update test to be more explicit about what instruction sequences are ↵Jim Grosbach2009-10-311-3/+16
| | | | | | expected for each operation. llvm-svn: 85689
* update the comment above llvm::SplitCriticalEdge, and makeChris Lattner2009-10-312-9/+30
| | | | | | it abort on IndirectBrInst as describe in the comment. llvm-svn: 85688
* Expand 64-bit logical shift right inlineJim Grosbach2009-10-312-5/+8
| | | | llvm-svn: 85687
* Expand 64-bit arithmetic shift right inlineJim Grosbach2009-10-312-2/+37
| | | | llvm-svn: 85685
* Fix a missing newline in the dwarf output code.Dan Gohman2009-10-311-0/+1
| | | | llvm-svn: 85684
OpenPOWER on IntegriCloud