1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/Transforms/FunctionSpecialization/function-specialization-constant-integers.ll
Chuanqi Xu 16bf4a4717 [FuncSpec] Add an option to specializing literal constant
Now the option is off by default. Since we are not sure if this option
would make the compile time increase aggressively. Although we tested it
on SPEC2017, we may need to test more to make it on by default.

Reviewed By: SjoerdMeijer

Differential Revision: https://reviews.llvm.org/D104365
2021-06-30 11:26:44 +08:00

44 lines
989 B
LLVM

; RUN: opt -function-specialization -function-specialization-for-literal-constant=true -S < %s | FileCheck %s
; Check that the literal constant parameter could be specialized.
; CHECK: @foo.1(
; CHECK: @foo.2(
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
declare i32 @getValue()
declare i1 @getCond()
define internal i32 @foo(i1 %break_cond) {
entry:
br label %loop.entry
loop.entry:
br label %loop2.entry
loop2.entry:
br label %loop2.body
loop2.body:
%value = call i32 @getValue()
br i1 %break_cond, label %loop2.end, label %return
loop2.end:
%cond.end = call i1 @getCond()
br i1 %cond.end, label %loop2.entry, label %loop.end
loop.end:
%cond2.end = call i1 @getCond()
br i1 %cond2.end, label %loop.entry, label %return
return:
ret i32 %value
}
define dso_local i32 @bar(i32 %x, i32 %y) {
entry:
%retval.1 = call i32 @foo(i1 1)
%retval.2 = call i32 @foo(i1 0)
%retval = add nsw i32 %retval.1, %retval.2
ret i32 %retval
}