forked from llvm/llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[SDAG] Intersect poison-generating flags after CSE (llvm#114650)
This patch intersects poison-generating flags after CSE to fix assertion failure reported in llvm#112354 (comment). Co-authored-by: Antonio Frighetto <[email protected]>
- Loading branch information
1 parent
67c8b0e
commit 917b3d1
Showing
2 changed files
with
29 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 | ||
; RUN: llc -mtriple=arm-eabi -o - %s | FileCheck %s | ||
|
||
; Ensure poison-generating flags are stripped by the time a freeze operand is visited. | ||
|
||
define i1 @drop_flags(i32 noundef %numentries, i64 %cond, i64 %arg) { | ||
; CHECK-LABEL: drop_flags: | ||
; CHECK: @ %bb.0: @ %entry | ||
; CHECK-NEXT: ldm sp, {r1, r12} | ||
; CHECK-NEXT: subs r1, r2, r1 | ||
; CHECK-NEXT: sbcs r1, r3, r12 | ||
; CHECK-NEXT: movlo r0, r2 | ||
; CHECK-NEXT: rsbs r1, r0, #0 | ||
; CHECK-NEXT: adc r0, r0, r1 | ||
; CHECK-NEXT: mov pc, lr | ||
entry: | ||
%cmp4 = icmp samesign ult i64 %cond, %arg | ||
%conv6 = trunc nuw i64 %cond to i32 | ||
%spec.select = select i1 %cmp4, i32 %conv6, i32 %numentries | ||
%spec.select.fr = freeze i32 %spec.select | ||
%cmpz = icmp eq i32 %spec.select.fr, 0 | ||
ret i1 %cmpz | ||
} |