mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
0fa3fc6e74
Summary: When we have new attributes and we end the fixpoint iteration because the iteration limit is reached, we need to treat the new ones as if they changed in the last iteration, as they might have. This adds a test for which we should not derive anything regardless of the iteration limit, e.g., if we abort there should not be any attributes manifested in the IR. Reviewers: uenoku, sstefan1 Subscribers: hiraditya, bollu, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66549 llvm-svn: 369768
44 lines
1.4 KiB
LLVM
44 lines
1.4 KiB
LLVM
; RUN: opt < %s -attributor -attributor-disable=false -attributor-max-iterations=0 -S | FileCheck %s
|
|
; RUN: opt < %s -attributor -attributor-disable=false -attributor-max-iterations=1 -S | FileCheck %s
|
|
; RUN: opt < %s -attributor -attributor-disable=false -attributor-max-iterations=2 -S | FileCheck %s
|
|
; RUN: opt < %s -attributor -attributor-disable=false -attributor-max-iterations=3 -S | FileCheck %s
|
|
; RUN: opt < %s -attributor -attributor-disable=false -attributor-max-iterations=4 -S | FileCheck %s
|
|
; RUN: opt < %s -attributor -attributor-disable=false -attributor-max-iterations=2147483647 -S | FileCheck %s
|
|
|
|
; CHECK-NOT: Function
|
|
; CHECK: declare i32 @foo1()
|
|
; CHECK-NOT: Function
|
|
; CHECK: declare i32 @foo2()
|
|
; CHECK-NOT: Function
|
|
; CHECK: declare i32 @foo3()
|
|
declare i32 @foo1()
|
|
declare i32 @foo2()
|
|
declare i32 @foo3()
|
|
|
|
; CHECK-NOT: Function
|
|
; CHECK: define internal i32 @bar() {
|
|
; CHECK-NEXT: %1 = call i32 @foo1()
|
|
; CHECK-NEXT: %2 = call i32 @foo2()
|
|
; CHECK-NEXT: %3 = call i32 @foo3()
|
|
; CHECK-NEXT: ret i32 1
|
|
; CHECK-NEXT: }
|
|
define internal i32 @bar() {
|
|
%1 = call i32 @foo1()
|
|
%2 = call i32 @foo2()
|
|
%3 = call i32 @foo3()
|
|
ret i32 1
|
|
}
|
|
|
|
; CHECK-NOT: Function
|
|
; CHECK: define i32 @baz() {
|
|
; CHECK-NEXT: %1 = call i32 @bar()
|
|
; CHECK-NEXT: ret i32 0
|
|
; CHECK-NEXT: }
|
|
define i32 @baz() {
|
|
%1 = call i32 @bar()
|
|
ret i32 0
|
|
}
|
|
|
|
; We should never derive anything here
|
|
; CHECK-NOT: attributes
|