mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-27 14:24:40 +00: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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85729 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -100,8 +100,7 @@ namespace llvm {
|
|||||||
if (UnitAtATime) {
|
if (UnitAtATime) {
|
||||||
PM->add(createGlobalOptimizerPass()); // Optimize out global vars
|
PM->add(createGlobalOptimizerPass()); // Optimize out global vars
|
||||||
PM->add(createGlobalDCEPass()); // Remove unused fns and globs
|
PM->add(createGlobalDCEPass()); // Remove unused fns and globs
|
||||||
// IP Constant Propagation
|
PM->add(createIPSCCPPass()); // IP SCCP
|
||||||
PM->add(createIPConstantPropagationPass());
|
|
||||||
PM->add(createDeadArgEliminationPass()); // Dead argument elimination
|
PM->add(createDeadArgEliminationPass()); // Dead argument elimination
|
||||||
}
|
}
|
||||||
PM->add(createInstructionCombiningPass()); // Clean up after IPCP & DAE
|
PM->add(createInstructionCombiningPass()); // Clean up after IPCP & DAE
|
||||||
|
19
test/FrontendC++/integration-O2.cpp
Normal file
19
test/FrontendC++/integration-O2.cpp
Normal 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
|
Reference in New Issue
Block a user