summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* On x86, f32 / f64 nodes share the same registers as 128-bit vector values.Evan Cheng2010-07-262-0/+30
| | | | llvm-svn: 109450
* The "excess register pressure" returned by HighRegPressure() is not accurate ↵Evan Cheng2010-07-261-41/+20
| | | | | | enough to factor into scheduling priority. Eliminate it and add early exits to speed up scheduling. llvm-svn: 109449
* Add a noteAnton Korobeynikov2010-07-261-0/+21
| | | | llvm-svn: 109448
* Temporary hack to let codegen assert or generate poor code in caseBruno Cardoso Lopes2010-07-261-8/+13
| | | | | | | | | we are using AVX and no AVX version of the desired intruction is present, this is better for incremental dev (without fallbacks it's easier to spot what's missing). Not sure this is the best hack thought (we can also disable all HasSSE* predicates by dinamically marking them 'false' if AVX is present) llvm-svn: 109434
* Add an initial implementation of LazyValueInfo updating for JumpThreading. ↵Owen Anderson2010-07-262-4/+92
| | | | | | Disabled for now. llvm-svn: 109424
* Currently EH lowering code expects typeinfo to be global only.Anton Korobeynikov2010-07-261-2/+11
| | | | | | | | This assumption is not satisfied due to global mergeing. Workaround the issue by temporary disablinge mergeing of const globals. Also, ignore LLVM "special" globals. This fixes PR7716 llvm-svn: 109423
* ARM fastisel isn't ready.Evan Cheng2010-07-261-1/+2
| | | | llvm-svn: 109421
* Fix SCEVExpander::visitAddRecExpr so that it remembers the induction variableDan Gohman2010-07-261-24/+21
| | | | | | | | it inserted rather than using LoopInfo::getCanonicalInductionVariable to rediscover it, since that doesn't work on non-canonical loops. This fixes infinite recurrsion on such loops; PR7562. llvm-svn: 109419
* Handle Values with no value in getCopyFromRegs.Dan Gohman2010-07-261-0/+4
| | | | llvm-svn: 109415
* Remove LCSSA's bogus dependence on LoopSimplify and LoopSimplify's bogusDan Gohman2010-07-264-19/+12
| | | | | | | | | | | | | | dependence on DominanceFrontier. Instead, add an explicit DominanceFrontier pass in StandardPasses.h to ensure that it gets scheduled at the right time. Declare that loop unrolling preserves ScalarEvolution, and shuffle some getAnalysisUsages. This eliminates one LoopSimplify and one LCCSA run in the standard compile opts sequence. llvm-svn: 109413
* Preserve ScalarEvolution in the loop unroller.Dan Gohman2010-07-261-0/+6
| | | | llvm-svn: 109412
* Fix (at least) quadratic worst-case complexity in DominanceFrontier::splitBlock:Dan Gohman2010-07-261-52/+64
| | | | | | | | | | | | | | don't visit all blocks in the function, and don't iterate over the split blocks' predecessor lists for each block visited. Also, remove the special-case test for the entry block. Splitting the entry block isn't common enough to make this worthwhile. This fixes a major compile-time bottleneck which is exposed now that LoopSimplify isn't being redundantly run both before and after DominanceFrontier. llvm-svn: 109408
* Avoid copying and recopying a std::set.Dan Gohman2010-07-261-6/+2
| | | | llvm-svn: 109405
* Exit a search loop when the search goal is found.Dan Gohman2010-07-261-1/+3
| | | | llvm-svn: 109404
* Fix formatting.Dan Gohman2010-07-261-2/+2
| | | | llvm-svn: 109403
* A block dominates itself, by definition.Dan Gohman2010-07-261-1/+1
| | | | llvm-svn: 109402
* Use DominatorTree::properlyDominates instead of dominates with anDan Gohman2010-07-261-1/+1
| | | | | | explicit inequality check. llvm-svn: 109401
* A block dominates itself, by definition.Dan Gohman2010-07-261-1/+1
| | | | llvm-svn: 109400
* Use DominatorTree::properlyDominates instead of dominates with anDan Gohman2010-07-261-1/+1
| | | | | | explicit inequality check. llvm-svn: 109398
* Pacify gcc-4.5 which wrongly thinks that RExcess (passed as the Excess ↵Duncan Sands2010-07-261-1/+2
| | | | | | | | parameter) may be used uninitialized in the callers of HighRegPressure. llvm-svn: 109393
* Fix format-specifier warningDouglas Gregor2010-07-261-1/+1
| | | | llvm-svn: 109391
* MC: Fix whitespace error from last commit.Michael J. Spencer2010-07-261-1/+1
| | | | | | A Visual C++ extension that removes trailing new lines? Seriously? llvm-svn: 109390
* MC: Add WinCOFFObjectWriter implementation.Michael J. Spencer2010-07-261-14/+674
| | | | | | Origonal Windows COFF implementation by Nathan Jedffords. llvm-svn: 109389
* Factored out a bit of common code to mark VNInfos for deletion.Lang Hames2010-07-261-40/+22
| | | | llvm-svn: 109388
* Reduce string trashing.Benjamin Kramer2010-07-251-1/+1
| | | | llvm-svn: 109386
* Add comments.Evan Cheng2010-07-251-4/+16
| | | | llvm-svn: 109383
* Remove extraneous semicolonDouglas Gregor2010-07-251-1/+1
| | | | llvm-svn: 109373
* Unbreak CMake buildDouglas Gregor2010-07-251-0/+1
| | | | llvm-svn: 109372
* Fix crashes when scheduling a CopyToReg node -- getMachineOpcode asserts onBob Wilson2010-07-251-2/+2
| | | | | | those. Radar 8231572. llvm-svn: 109367
* Revert r109361; it's impossible to write a call with an argument with anEli Friedman2010-07-241-6/+2
| | | | | | invalid type. llvm-svn: 109365
* Minor simplification.Eli Friedman2010-07-241-1/+1
| | | | llvm-svn: 109362
* Make the ll parser check that arguments have valid types.Eli Friedman2010-07-241-1/+5
| | | | llvm-svn: 109361
* PR7704: A function is not allowed to return a function; make sure to enforceEli Friedman2010-07-241-2/+2
| | | | | | this consistently. llvm-svn: 109360
* Hook in GlobalMerge passAnton Korobeynikov2010-07-246-1/+222
| | | | llvm-svn: 109359
* Revert this because we can't clone cyclic MDNodes which are creating during aNick Lewycky2010-07-241-3/+4
| | | | | | build of llvm-gcc. llvm-svn: 109355
* Add hook to insert late LLVM=>LLVM passes just before iselAnton Korobeynikov2010-07-241-0/+2
| | | | llvm-svn: 109354
* Whether function-local or not, a MDNode may reference a Function in which caseNick Lewycky2010-07-241-4/+3
| | | | | | | it needs to be mapped to refer to the function in the new module, not the old one. Fixes PR7700. llvm-svn: 109353
* Clarify that if a new value handle is added while dropping value handlesDuncan Sands2010-07-241-4/+9
| | | | | | | hanging off a value, then the dropping code will intentionally not drop it too (since this is almost certainly a bug). llvm-svn: 109337
* Change ScheduleDAGInstrs::Defs and ::Uses to be variable-size vectorsBob Wilson2010-07-242-3/+4
| | | | | | | instead of fixed size arrays, so that increasing FirstVirtualRegister to 16K won't cause a compile time performance regression. llvm-svn: 109330
* Use current working directory when Dirname is empty. This only happens when ↵Devang Patel2010-07-241-0/+5
| | | | | | absolute source file path is used on compiler command line. llvm-svn: 109302
* Add an ILP scheduler. This is a register pressure aware scheduler that'sEvan Cheng2010-07-244-12/+97
| | | | | | | | | | | | appropriate for targets without detailed instruction iterineries. The scheduler schedules for increased instruction level parallelism in low register pressure situation; it schedules to reduce register pressure when the register pressure becomes high. On x86_64, this is a win for all tests in CFP2000. It also sped up 256.bzip2 by 16%. llvm-svn: 109300
* Support x86 "eiz" and "riz" pseudo index registers in the assembler.Bruno Cardoso Lopes2010-07-243-1/+25
| | | | llvm-svn: 109295
* Use the appropriate register class for an i32 when adding ARM::LR to theJim Grosbach2010-07-231-1/+1
| | | | | | | function live in set. This will give us tGPR for Thumb1 and GPR otherwise, so the copy will be spillable. rdar://8224931 llvm-svn: 109293
* Remove too-strict assertion. We may want the vreg copy of the physical registerJim Grosbach2010-07-231-1/+0
| | | | | | | to be of a different register class. For example, in Thumb1 if the live-in is a high register, we want the vreg to be a low register. rdar://8224931 llvm-svn: 109291
* Revert r109262.Devang Patel2010-07-231-5/+0
| | | | llvm-svn: 109285
* Revert 109076. It is wrong and was causing regressions. Add someDale Johannesen2010-07-231-18/+48
| | | | | | | | | | comments explaining why it was wrong. 8225024. Fix the real problem in 8213383: the code that splits very large blocks when no other place to put constants can be found was not considering the case that the block contained a Thumb tablejump. llvm-svn: 109282
* - Allow target to specify when is register pressure "too high". In most cases,Evan Cheng2010-07-233-56/+148
| | | | | | | | | | | | | it's too late to start backing off aggressive latency scheduling when most of the registers are in use so the threshold should be a bit tighter. - Correctly handle live out's and extract_subreg etc. - Enable register pressure aware scheduling by default for hybrid scheduler. For ARM, this is almost always a win on # of instructions. It's runtime neutral for most of the tests. But for some kernels with high register pressure it can be a huge win. e.g. 464.h264ref reduced number of spills by 54 and sped up by 20%. llvm-svn: 109279
* Remove trailing whitespaceBruno Cardoso Lopes2010-07-231-30/+30
| | | | llvm-svn: 109276
* Eliminate getCanonicalInductionVariableIncrement's last user andDan Gohman2010-07-231-17/+5
| | | | | | eliminate it. llvm-svn: 109270
* Simplify this code; it can use the regular CFG utlities rather thanDan Gohman2010-07-231-13/+7
| | | | | | the BlockTraits abstractions. llvm-svn: 109268
OpenPOWER on IntegriCloud