|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | uint %test4(int %A, int %B) {
        %COND = setlt int %A, %B                ; <bool> [#uses=1]
        %result = cast bool %COND to uint               ; <uint> [#uses=1]
        ret uint %result
}
into a single cast instruction.
llvm-svn: 3339 | 
| | 
| 
| 
| 
| 
| 
| 
| | This _trivial_ change causes GCSE and LICM to be much more effective at
hoisting loads.  Before it would not be able to eliminate 'load X' if there
was just a dominating 'load X, 0' because the expressions were not identical.
llvm-svn: 3337 | 
| | 
| 
| 
| | llvm-svn: 3336 | 
| | 
| 
| 
| 
| 
| | have to support the cast instruction, so the function is renamed to getCast.
llvm-svn: 3328 | 
| | 
| 
| 
| | llvm-svn: 3327 | 
| | 
| 
| 
| | llvm-svn: 3323 | 
| | 
| 
| 
| | llvm-svn: 3322 | 
| | 
| 
| 
| | llvm-svn: 3318 | 
| | 
| 
| 
| 
| 
| | - Fixed testcases to not use them either.
llvm-svn: 3315 | 
| | 
| 
| 
| | llvm-svn: 3313 | 
| | 
| 
| 
| | llvm-svn: 3300 | 
| | 
| 
| 
| 
| 
| | * Move isMaxValue, isMinValue, isAllOnesValue to Constants.h
llvm-svn: 3290 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | * New ReplaceInstUsesWith function to factor out tons of common code
     This needs to be used more in the future still, but it's a good start
   * New InsertNewInstBefore to allow multi-instruction replacements
   * Change getMaxValue functions to isAllOnesValue function, which doesn't
     have to CREATE/lookup a new constant.  Also the name is accurate
   * Add new isMaxValue, isMinValue, isMaxValueMinusOne, isMinValuePlusOne
     functions:  This should be moved to Constant* classes eventually
   * Implement xor X, ALLONES -> not X
   * Fold ALL setcc's of booleans away
   * Handle various SetCC's for integers against values at the end of their
     ranges, possibly off by one.  This implements the setcc-strength-reduce.ll
     testcase.
llvm-svn: 3286 | 
| | 
| 
| 
| | llvm-svn: 3266 | 
| | 
| 
| 
| 
| 
| 
| | instead of ::ID's.
 - Pass::getAnalysis<> now no longer takes an optional argument
llvm-svn: 3265 | 
| | 
| 
| 
| 
| 
| 
| | instead of ::ID's.
 - Pass::getAnalysis<> now no longer takes an optional argument
llvm-svn: 3264 | 
| | 
| 
| 
| | llvm-svn: 3262 | 
| | 
| 
| 
| 
| 
| 
| | Don't decompose if there are 2 indices with 0 as first index.
Compute Changed flag correctly in runOnBasicBlock().
llvm-svn: 3233 | 
| | 
| 
| 
| 
| 
| | Implement feature: Cast's can now be converted to bitwise AND expressions.
llvm-svn: 3225 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | - Reenable gep (gep x) -> x
   - Make instcombine do dead instruction elimination where it's really
     easy.  Now visitors don't have to ensure they aren't not processing
     dead instructions.
llvm-svn: 3222 | 
| | 
| 
| 
| | llvm-svn: 3215 | 
| | 
| 
| 
| | llvm-svn: 3200 | 
| | 
| 
| 
| 
| 
| | This fixes bug: test/Regression/Transforms/LevelRaise/2002-07-31-AssertionFailure.ll
llvm-svn: 3193 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | * Internalize global variables with initializers
* Add new stat to track global variable internalization
* Only count functions that were not internal before in internalized function
  count
llvm-svn: 3163 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | * Correctly delete TypeHandles in AsmParser.  In addition to not leaking
   memory, this prevents a bug that could have occurred when a type got
   resolved that the constexpr was using
 * Check for errors in the AsmParser instead of hitting assertion failures
   deep in the code
 * Simplify the interface to the ConstantExpr class, removing unneccesary
   parameters to the ::get* methods.
 * Rename the 'getelementptr' version of ConstantExpr::get to
   ConstantExpr::getGetElementPtr
llvm-svn: 3160 | 
| | 
| 
| 
| | llvm-svn: 3158 | 
| | 
| 
| 
| 
| 
| | attempted to assign it a name.
llvm-svn: 3142 | 
| | 
| 
| 
| 
| 
| 
| 
| | old call instruction
* Implement conversion of return values for calls.  This fixes bug:
   test/Regression/Transforms/FunctionResolve/retmismatch3.ll
llvm-svn: 3140 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | which was caused by us not running the "drop references of dead
  instructions" code when there were no basic blocks that were dead.
  We still don't want to do some of the stuff we do if there are dead
  basic blocks, but we DO want to drop references of dead instructions,
  so we factor the common code out to a new method.
llvm-svn: 3137 | 
| | 
| 
| 
| 
| 
| 
| | arguments dropped.  This fixes bug:
   test/Regression/Transforms/ADCE/2002-07-17-PHIAssertion.ll
llvm-svn: 3134 | 
| | 
| 
| 
| | llvm-svn: 3131 | 
| | 
| 
| 
| | llvm-svn: 3129 | 
| | 
| 
| 
| 
| 
| | test/Regression/Transforms/SimplifyCFG/2002-06-24-PHINode.ll
llvm-svn: 3128 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | methods
* Eliminate AnalysisID:  Now it is just a typedef for const PassInfo*
* Simplify how AnalysisID's are initialized
* Eliminate Analysis/Writer.cpp/.h: incorporate printing functionality into
  the analyses themselves.
llvm-svn: 3116 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | methods
* Eliminate AnalysisID:  Now it is just a typedef for const PassInfo*
* Simplify how AnalysisID's are initialized
* Eliminate Analysis/Writer.cpp/.h: incorporate printing functionality into
  the analyses themselves.
llvm-svn: 3115 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | * Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Add support for different "PassType's"
* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Remove getPassName implementations from various subclasses
llvm-svn: 3113 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | * Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Add support for different "PassType's"
* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Remove getPassName implementations from various subclasses
llvm-svn: 3112 | 
| | 
| 
| 
| | llvm-svn: 3105 | 
| | 
| 
| 
| | llvm-svn: 3075 | 
| | 
| 
| 
| | llvm-svn: 3072 | 
| | 
| 
| 
| 
| 
| | contents into IPO.h
llvm-svn: 3043 | 
| | 
| 
| 
| | llvm-svn: 3038 | 
| | 
| 
| 
| | llvm-svn: 3037 | 
| | 
| 
| 
| | llvm-svn: 3036 | 
| | 
| 
| 
| | llvm-svn: 3035 | 
| | 
| 
| 
| | llvm-svn: 3034 | 
| | 
| 
| 
| | llvm-svn: 3016 | 
| | 
| 
| 
| 
| 
| | * Register all Passes
llvm-svn: 3015 | 
| | 
| 
| 
| 
| 
| 
| | * Split the two behaviors of the InsertTraceCode class into two subclasses
* Register Passes
llvm-svn: 3014 | 
| | 
| 
| 
| 
| 
| | * Register the passes
llvm-svn: 3013 |