1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00

We currently only run ipsccp at LTO time, which is silly. It subsumes

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
This commit is contained in:
Chris Lattner 2009-11-01 18:57:49 +00:00
parent ad2926bbb4
commit 69549467e3
2 changed files with 20 additions and 2 deletions

View File

@ -100,8 +100,7 @@ namespace llvm {
if (UnitAtATime) {
PM->add(createGlobalOptimizerPass()); // Optimize out global vars
PM->add(createGlobalDCEPass()); // Remove unused fns and globs
// IP Constant Propagation
PM->add(createIPConstantPropagationPass());
PM->add(createIPSCCPPass()); // IP SCCP
PM->add(createDeadArgEliminationPass()); // Dead argument elimination
}
PM->add(createInstructionCombiningPass()); // Clean up after IPCP & DAE

View File

@ -0,0 +1,19 @@
// RUN: %llvmgxx %s -O2 -S -o - | FileCheck %s
// This test verifies that we get expected codegen out of the -O2 optimization
// level from the full optimizer.
// Verify that ipsccp is running and can eliminate globals.
static int test1g = 42;
void test1f1() {
if (test1g == 0) test1g = 0;
}
int test1f2() {
return test1g;
}
// CHECK: @_Z7test1f2v()
// CHECK: entry:
// CHECK-NEXT: ret i32 42