mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
9dd51839f7
This reverts commit 1ec6e1eb8a084bffae8a40236eb9925d8026dd07. This change causes a significant compile-time regression: https://llvm-compile-time-tracker.com/compare.php?from=dd0b8b94d0796bd895cc998dd163b4fbebceb0b8&to=1ec6e1eb8a084bffae8a40236eb9925d8026dd07&stat=instructions I assume that this is due to the non-NFC part of the change, which now performs expensive nowrap inference even for nowrap flags that are not used by the particular code.
27 lines
709 B
LLVM
27 lines
709 B
LLVM
; RUN: opt -analyze -enable-new-pm=0 -scalar-evolution < %s | FileCheck %s
|
|
; RUN: opt -disable-output "-passes=print<scalar-evolution>" < %s 2>&1 | FileCheck %s
|
|
|
|
define i1 @main(i16 %a) {
|
|
; CHECK-LABEL: Classifying expressions for: @main
|
|
entry:
|
|
br label %body
|
|
|
|
body:
|
|
%dec2 = phi i16 [ %a, %entry ], [ %dec, %cond ]
|
|
%dec = add i16 %dec2, -1
|
|
%conv2 = zext i16 %dec2 to i32
|
|
%conv = zext i16 %dec to i32
|
|
; CHECK: %conv = zext i16 %dec to i32
|
|
; CHECK-NEXT: --> {(zext i16 (-1 + %a) to i32),+,65535}<nuw><%body>
|
|
; CHECK-NOT: --> {(65535 + (zext i16 %a to i32)),+,65535}<nuw><%body>
|
|
|
|
br label %cond
|
|
|
|
cond:
|
|
br i1 false, label %body, label %exit
|
|
|
|
exit:
|
|
%ret = icmp ne i32 %conv, 0
|
|
ret i1 %ret
|
|
}
|