These should use O2 with the optsize or minsize attributes instead. This enforces that there is no divergence between pipeline-level Os/Oz and function-level Os/Oz at an architectural level. For the purpose of testing IR that does not have optsize/minsize itself, it's possible to use `-force-attribute=optsize` etc.
40 lines
2.2 KiB
LLVM
40 lines
2.2 KiB
LLVM
; REQUIRES: asserts
|
|
; RUN: opt -stats -enable-detailed-function-properties -disable-output -passes='func-properties-stats<pre-opt>' < %s 2>&1 | FileCheck %s --check-prefix=PRE
|
|
; RUN: opt -stats -enable-detailed-function-properties -disable-output -passes='func-properties-stats' < %s 2>&1 | FileCheck %s --check-prefixes=POSTNOOPT
|
|
; RUN: opt -stats -enable-detailed-function-properties -disable-output -O0 < %s 2>&1 | FileCheck %s --check-prefixes=PRE,POSTNOOPT
|
|
; RUN: opt -stats -enable-detailed-function-properties -disable-output -O3 < %s 2>&1 | FileCheck %s --check-prefixes=PRE,POST
|
|
; RUN: opt -stats -enable-detailed-function-properties -disable-output -passes='lto<O3>' < %s 2>&1 | FileCheck %s --check-prefixes=PRE,POST
|
|
; RUN: opt -stats -enable-detailed-function-properties -disable-output -passes='lto-pre-link<O3>' < %s 2>&1 | FileCheck %s --check-prefixes=PRE,POST
|
|
; RUN: opt -stats -enable-detailed-function-properties -disable-output -passes='thinlto<O3>' < %s 2>&1 | FileCheck %s --check-prefixes=PRE,POST
|
|
; RUN: opt -stats -enable-detailed-function-properties -disable-output -passes='thinlto-pre-link<O2>' < %s 2>&1 | FileCheck %s --check-prefixes=PRE,POST
|
|
|
|
; --- <pre-opt> ---
|
|
; PRE-DAG: 4 func-properties-stats - Number of basic blocks (before optimizations)
|
|
; PRE-DAG: 5 func-properties-stats - Number of instructions (of all types) (before optimizations)
|
|
; PRE-DAG: 4 func-properties-stats - Number of basic block successors (before optimizations)
|
|
|
|
; --- No <pre-opt> in pass but no optimization passes run ---
|
|
; POSTNOOPT-DAG: 4 func-properties-stats - Number of basic blocks
|
|
; POSTNOOPT-DAG: 5 func-properties-stats - Number of instructions (of all types)
|
|
; POSTNOOPT-DAG: 4 func-properties-stats - Number of basic block successors
|
|
|
|
; --- Post optimization values ---
|
|
; POST-DAG: 1 func-properties-stats - Number of basic blocks
|
|
; POST-DAG: 1 func-properties-stats - Number of instructions (of all types)
|
|
; POST-NOT: func-properties-stats - Number of basic block successors
|
|
|
|
define i32 @test_count() {
|
|
entry:
|
|
; This branch is trivially resolvable
|
|
br i1 true, label %then, label %else
|
|
|
|
then:
|
|
br label %end
|
|
|
|
else:
|
|
br label %end
|
|
|
|
end:
|
|
%phi = phi i32 [ 1, %then ], [ 2, %else ]
|
|
ret i32 %phi
|
|
}
|