Skip to content

Commit 2d7db98

Browse files
nikicgithub-actions[bot]
authored andcommitted
Automerge: [GVNSink] Add support for ptrtoaddr
2 parents 5146300 + 2ec549a commit 2d7db98

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

llvm/lib/Transforms/Scalar/GVNSink.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,7 @@ class ValueTable {
430430
case Instruction::FPTrunc:
431431
case Instruction::FPExt:
432432
case Instruction::PtrToInt:
433+
case Instruction::PtrToAddr:
433434
case Instruction::IntToPtr:
434435
case Instruction::BitCast:
435436
case Instruction::AddrSpaceCast:
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
2+
; RUN: opt -S -passes=gvn-sink < %s | FileCheck %s
3+
4+
define i64 @test(i1 %c, ptr %p, ptr %p2) {
5+
; CHECK-LABEL: define i64 @test(
6+
; CHECK-SAME: i1 [[C:%.*]], ptr [[P:%.*]], ptr [[P2:%.*]]) {
7+
; CHECK-NEXT: br i1 [[C]], label %[[IF:.*]], label %[[ELSE:.*]]
8+
; CHECK: [[IF]]:
9+
; CHECK-NEXT: br label %[[JOIN:.*]]
10+
; CHECK: [[ELSE]]:
11+
; CHECK-NEXT: br label %[[JOIN]]
12+
; CHECK: [[JOIN]]:
13+
; CHECK-NEXT: [[P2_SINK:%.*]] = phi ptr [ [[P2]], %[[ELSE]] ], [ [[P]], %[[IF]] ]
14+
; CHECK-NEXT: [[PHI:%.*]] = ptrtoaddr ptr [[P2_SINK]] to i64
15+
; CHECK-NEXT: ret i64 [[PHI]]
16+
;
17+
br i1 %c, label %if, label %else
18+
19+
if:
20+
%p.addr = ptrtoaddr ptr %p to i64
21+
br label %join
22+
23+
else:
24+
%p2.addr = ptrtoaddr ptr %p2 to i64
25+
br label %join
26+
27+
join:
28+
%phi = phi i64 [ %p.addr, %if ], [ %p2.addr, %else ]
29+
ret i64 %phi
30+
}

0 commit comments

Comments
 (0)