Skip to content

Commit 629f17c

Browse files
committed
[DAG] isGuaranteedNotToBeUndefOrPoison - handle FrameIndex/TargetFrameIndex
Fixes #58904
1 parent 073aebc commit 629f17c

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4560,6 +4560,8 @@ bool SelectionDAG::isGuaranteedNotToBeUndefOrPoison(SDValue Op,
45604560

45614561
switch (Opcode) {
45624562
case ISD::VALUETYPE:
4563+
case ISD::FrameIndex:
4564+
case ISD::TargetFrameIndex:
45634565
return true;
45644566

45654567
case ISD::UNDEF:
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc < %s -mtriple=wasm32-- | FileCheck %s
3+
4+
define i64 @PR58904() {
5+
; CHECK-LABEL: PR58904:
6+
; CHECK: .functype PR58904 () -> (i64)
7+
; CHECK-NEXT: # %bb.0: # %BB
8+
; CHECK-NEXT: global.get __stack_pointer
9+
; CHECK-NEXT: i32.const 16
10+
; CHECK-NEXT: i32.sub
11+
; CHECK-NEXT: i32.const 8
12+
; CHECK-NEXT: i32.add
13+
; CHECK-NEXT: i64.extend_i32_u
14+
; CHECK-NEXT: # fallthrough-return
15+
BB:
16+
%A = alloca i64
17+
%C2 = ptrtoint i64* %A to i64
18+
%B2 = urem i64 %C2, -1
19+
ret i64 %B2
20+
}

0 commit comments

Comments
 (0)