mirror of
https://github.com/RPCS3/llvm.git
synced 2025-05-23 13:56:06 +00:00

Inlining in getAddExpr() can cause abnormal computational time in some cases. New parameter -scev-addops-inline-threshold is intruduced with default value 500. Reviewers: sanjoy Subscribers: mzolotukhin, llvm-commits Differential Revision: https://reviews.llvm.org/D28812 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293176 91177308-0d34-0410-b5e6-96231b3b80d8
18 lines
715 B
LLVM
18 lines
715 B
LLVM
; RUN: opt -analyze -scalar-evolution -scev-addops-inline-threshold=1 < %s | FileCheck --check-prefix=CHECK1 %s
|
|
; RUN: opt -analyze -scalar-evolution -scev-addops-inline-threshold=10 < %s | FileCheck --check-prefix=CHECK10 %s
|
|
|
|
define i32 @foo(i64 %p0, i32 %p1) {
|
|
; CHECK1: %add2 = add nsw i32 %mul1, %add
|
|
; CHECK1-NEXT: --> ((trunc i64 %p0 to i32) * (1 + (trunc i64 %p0 to i32)) * (1 + %p1))
|
|
|
|
; CHECK10: %add2 = add nsw i32 %mul1, %add
|
|
; CHECK10-NEXT: --> ((trunc i64 %p0 to i32) * (1 + ((trunc i64 %p0 to i32) * (1 + %p1)) + %p1))
|
|
entry:
|
|
%tr = trunc i64 %p0 to i32
|
|
%mul = mul nsw i32 %tr, %p1
|
|
%add = add nsw i32 %mul, %tr
|
|
%mul1 = mul nsw i32 %add, %tr
|
|
%add2 = add nsw i32 %mul1, %add
|
|
ret i32 %add2
|
|
}
|