From 267d813a62c8a84a937afd9ec1de645f5048e999 Mon Sep 17 00:00:00 2001 From: XChy Date: Sun, 28 Sep 2025 23:27:59 +0800 Subject: [PATCH 1/9] [ConstantFold] inttoptr, ptrtoaddr is valid cast pair --- llvm/lib/IR/Instructions.cpp | 3 ++- .../InstCombine/constant-expr-datalayout.ll | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/llvm/lib/IR/Instructions.cpp b/llvm/lib/IR/Instructions.cpp index daebf447a2107..fb47768974f2b 100644 --- a/llvm/lib/IR/Instructions.cpp +++ b/llvm/lib/IR/Instructions.cpp @@ -2847,6 +2847,7 @@ unsigned CastInst::isEliminableCastPair( // FPTRUNC > FloatPt n/a FloatPt n/a // FPEXT < FloatPt n/a FloatPt n/a // PTRTOINT n/a Pointer n/a Integral Unsigned + // PTRTOADDR n/a Pointer n/a Integral Unsigned // INTTOPTR n/a Integral Unsigned Pointer n/a // BITCAST = FirstClass n/a FirstClass n/a // ADDRSPCST n/a Pointer n/a Pointer n/a @@ -2878,7 +2879,7 @@ unsigned CastInst::isEliminableCastPair( { 99,99,99, 2, 2,99,99, 8, 2,99,99,99, 4, 0}, // FPExt | { 1, 0, 0,99,99, 0, 0,99,99,99,99, 7, 3, 0}, // PtrToInt | { 1, 0, 0,99,99, 0, 0,99,99,99,99, 0, 3, 0}, // PtrToAddr | - { 99,99,99,99,99,99,99,99,99,11,99,99,15, 0}, // IntToPtr | + { 99,99,99,99,99,99,99,99,99,11, 0,99,15, 0}, // IntToPtr | { 5, 5, 5, 0, 0, 5, 5, 0, 0,16,16, 5, 1,14}, // BitCast | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12}, // AddrSpaceCast -+ }; diff --git a/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll b/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll index 442089eecfcbb..42814cf6c3682 100644 --- a/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll +++ b/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll @@ -32,3 +32,17 @@ define i64 @OpenFilter(i64 %x) { %r = zext i8 %t to i64 ret i64 %r } + +define i64 @ptr2addr1() { +; CHECK-LABEL: @ptr2addr1( +; CHECK-NEXT: ret i64 ptrtoaddr (ptr inttoptr (i64 1 to ptr) to i64) +; + ret i64 ptrtoaddr (ptr getelementptr (i8, ptr null, i64 1) to i64) +} + +define i64 @ptr2addr2() { +; CHECK-LABEL: @ptr2addr2( +; CHECK-NEXT: ret i64 ptrtoaddr (ptr inttoptr (i64 123 to ptr) to i64) +; + ret i64 ptrtoaddr (ptr inttoptr (i64 123 to ptr) to i64) +} From 5513266fe57a5d97570333faaf4aa1e3d630c15c Mon Sep 17 00:00:00 2001 From: XChy Date: Mon, 29 Sep 2025 00:53:09 +0800 Subject: [PATCH 2/9] optimize inttoptr, ptrtoaddr --- llvm/lib/IR/Instructions.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/IR/Instructions.cpp b/llvm/lib/IR/Instructions.cpp index fb47768974f2b..49d6bb4faa595 100644 --- a/llvm/lib/IR/Instructions.cpp +++ b/llvm/lib/IR/Instructions.cpp @@ -2878,7 +2878,7 @@ unsigned CastInst::isEliminableCastPair( { 99,99,99, 0, 0,99,99, 0, 0,99,99,99, 4, 0}, // FPTrunc | { 99,99,99, 2, 2,99,99, 8, 2,99,99,99, 4, 0}, // FPExt | { 1, 0, 0,99,99, 0, 0,99,99,99,99, 7, 3, 0}, // PtrToInt | - { 1, 0, 0,99,99, 0, 0,99,99,99,99, 0, 3, 0}, // PtrToAddr | + { 1, 0, 0,99,99, 0, 0,99,99,99,99,11, 3, 0}, // PtrToAddr | { 99,99,99,99,99,99,99,99,99,11, 0,99,15, 0}, // IntToPtr | { 5, 5, 5, 0, 0, 5, 5, 0, 0,16,16, 5, 1,14}, // BitCast | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12}, // AddrSpaceCast -+ @@ -2973,7 +2973,7 @@ unsigned CastInst::isEliminableCastPair( // zext, sext -> zext, because sext can't sign extend after zext return Instruction::ZExt; case 11: { - // inttoptr, ptrtoint -> bitcast if SrcSize<=PtrSize and SrcSize==DstSize + // inttoptr, ptrtoint/ptrtoaddr -> bitcast if SrcSize<=PtrSize and SrcSize==DstSize if (!MidIntPtrTy) return 0; unsigned PtrSize = MidIntPtrTy->getScalarSizeInBits(); From fbdea3c46aba662b9670ce3c3c2f4f889db2ea68 Mon Sep 17 00:00:00 2001 From: XChy Date: Mon, 29 Sep 2025 00:57:14 +0800 Subject: [PATCH 3/9] fix testcases --- llvm/lib/IR/Instructions.cpp | 4 ++-- llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/llvm/lib/IR/Instructions.cpp b/llvm/lib/IR/Instructions.cpp index 49d6bb4faa595..89d4d13fcdb58 100644 --- a/llvm/lib/IR/Instructions.cpp +++ b/llvm/lib/IR/Instructions.cpp @@ -2878,8 +2878,8 @@ unsigned CastInst::isEliminableCastPair( { 99,99,99, 0, 0,99,99, 0, 0,99,99,99, 4, 0}, // FPTrunc | { 99,99,99, 2, 2,99,99, 8, 2,99,99,99, 4, 0}, // FPExt | { 1, 0, 0,99,99, 0, 0,99,99,99,99, 7, 3, 0}, // PtrToInt | - { 1, 0, 0,99,99, 0, 0,99,99,99,99,11, 3, 0}, // PtrToAddr | - { 99,99,99,99,99,99,99,99,99,11, 0,99,15, 0}, // IntToPtr | + { 1, 0, 0,99,99, 0, 0,99,99,99,99,99, 3, 0}, // PtrToAddr | + { 99,99,99,99,99,99,99,99,99,11, 11,99,15, 0}, // IntToPtr | { 5, 5, 5, 0, 0, 5, 5, 0, 0,16,16, 5, 1,14}, // BitCast | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12}, // AddrSpaceCast -+ }; diff --git a/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll b/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll index 42814cf6c3682..40d840459be4f 100644 --- a/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll +++ b/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll @@ -35,14 +35,14 @@ define i64 @OpenFilter(i64 %x) { define i64 @ptr2addr1() { ; CHECK-LABEL: @ptr2addr1( -; CHECK-NEXT: ret i64 ptrtoaddr (ptr inttoptr (i64 1 to ptr) to i64) +; CHECK-NEXT: ret i64 1 ; ret i64 ptrtoaddr (ptr getelementptr (i8, ptr null, i64 1) to i64) } define i64 @ptr2addr2() { ; CHECK-LABEL: @ptr2addr2( -; CHECK-NEXT: ret i64 ptrtoaddr (ptr inttoptr (i64 123 to ptr) to i64) +; CHECK-NEXT: ret i64 123 ; ret i64 ptrtoaddr (ptr inttoptr (i64 123 to ptr) to i64) } From 7ac93464fa2b851766c34efc2eac436ee7f2192a Mon Sep 17 00:00:00 2001 From: XChy Date: Mon, 29 Sep 2025 01:00:23 +0800 Subject: [PATCH 4/9] format --- llvm/lib/IR/Instructions.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/llvm/lib/IR/Instructions.cpp b/llvm/lib/IR/Instructions.cpp index 89d4d13fcdb58..1ee7cbd510dd1 100644 --- a/llvm/lib/IR/Instructions.cpp +++ b/llvm/lib/IR/Instructions.cpp @@ -2973,7 +2973,8 @@ unsigned CastInst::isEliminableCastPair( // zext, sext -> zext, because sext can't sign extend after zext return Instruction::ZExt; case 11: { - // inttoptr, ptrtoint/ptrtoaddr -> bitcast if SrcSize<=PtrSize and SrcSize==DstSize + // inttoptr, ptrtoint/ptrtoaddr -> bitcast if SrcSize<=PtrSize and + // SrcSize==DstSize if (!MidIntPtrTy) return 0; unsigned PtrSize = MidIntPtrTy->getScalarSizeInBits(); From d6fda59b20537d6cf7a49c9d480f1537b4939b35 Mon Sep 17 00:00:00 2001 From: XChy Date: Mon, 29 Sep 2025 01:00:56 +0800 Subject: [PATCH 5/9] fix typo --- llvm/lib/IR/Instructions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/IR/Instructions.cpp b/llvm/lib/IR/Instructions.cpp index 1ee7cbd510dd1..49f5d13d02e5a 100644 --- a/llvm/lib/IR/Instructions.cpp +++ b/llvm/lib/IR/Instructions.cpp @@ -2878,7 +2878,7 @@ unsigned CastInst::isEliminableCastPair( { 99,99,99, 0, 0,99,99, 0, 0,99,99,99, 4, 0}, // FPTrunc | { 99,99,99, 2, 2,99,99, 8, 2,99,99,99, 4, 0}, // FPExt | { 1, 0, 0,99,99, 0, 0,99,99,99,99, 7, 3, 0}, // PtrToInt | - { 1, 0, 0,99,99, 0, 0,99,99,99,99,99, 3, 0}, // PtrToAddr | + { 1, 0, 0,99,99, 0, 0,99,99,99,99, 0, 3, 0}, // PtrToAddr | { 99,99,99,99,99,99,99,99,99,11, 11,99,15, 0}, // IntToPtr | { 5, 5, 5, 0, 0, 5, 5, 0, 0,16,16, 5, 1,14}, // BitCast | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12}, // AddrSpaceCast -+ From b1ccc781fa4d78dddfa9204dc69b9c98c5841e51 Mon Sep 17 00:00:00 2001 From: XChy Date: Mon, 29 Sep 2025 01:01:35 +0800 Subject: [PATCH 6/9] fix typo --- llvm/lib/IR/Instructions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/IR/Instructions.cpp b/llvm/lib/IR/Instructions.cpp index 49f5d13d02e5a..dd83168ab3c6e 100644 --- a/llvm/lib/IR/Instructions.cpp +++ b/llvm/lib/IR/Instructions.cpp @@ -2879,7 +2879,7 @@ unsigned CastInst::isEliminableCastPair( { 99,99,99, 2, 2,99,99, 8, 2,99,99,99, 4, 0}, // FPExt | { 1, 0, 0,99,99, 0, 0,99,99,99,99, 7, 3, 0}, // PtrToInt | { 1, 0, 0,99,99, 0, 0,99,99,99,99, 0, 3, 0}, // PtrToAddr | - { 99,99,99,99,99,99,99,99,99,11, 11,99,15, 0}, // IntToPtr | + { 99,99,99,99,99,99,99,99,99,11,11,99,15, 0}, // IntToPtr | { 5, 5, 5, 0, 0, 5, 5, 0, 0,16,16, 5, 1,14}, // BitCast | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,12}, // AddrSpaceCast -+ }; From 9eb64c960cc335e6009522b5ee077ca3e3c5b496 Mon Sep 17 00:00:00 2001 From: XChy Date: Mon, 29 Sep 2025 12:05:05 +0800 Subject: [PATCH 7/9] add tests --- .../InstCombine/constant-expr-datalayout.ll | 14 +++++++++++ llvm/test/Transforms/InstCombine/ptrtoaddr.ll | 24 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 llvm/test/Transforms/InstCombine/ptrtoaddr.ll diff --git a/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll b/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll index 40d840459be4f..cb7e5796b1a59 100644 --- a/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll +++ b/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll @@ -46,3 +46,17 @@ define i64 @ptr2addr2() { ; ret i64 ptrtoaddr (ptr inttoptr (i64 123 to ptr) to i64) } + +define i64 @ptrtoaddr_diff_size1() { +; CHECK-LABEL: @ptrtoaddr_diff_size1( +; CHECK-NEXT: ret i64 ptrtoaddr (ptr inttoptr (i32 -1 to ptr) to i64) +; + ret i64 ptrtoaddr (ptr inttoptr (i32 -1 to ptr) to i64) +} + +define i64 @ptrtoaddr_diff_size2() { +; CHECK-LABEL: @ptrtoaddr_diff_size2( +; CHECK-NEXT: ret i64 ptrtoaddr (ptr inttoptr (i128 -1 to ptr) to i64) +; + ret i64 ptrtoaddr (ptr inttoptr (i128 -1 to ptr) to i64) +} diff --git a/llvm/test/Transforms/InstCombine/ptrtoaddr.ll b/llvm/test/Transforms/InstCombine/ptrtoaddr.ll new file mode 100644 index 0000000000000..76a65a90b930e --- /dev/null +++ b/llvm/test/Transforms/InstCombine/ptrtoaddr.ll @@ -0,0 +1,24 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 +; RUN: opt < %s -passes=instcombine -S | FileCheck %s +target datalayout = "p1:64:64:64:32" + +define i32 @ptrtoaddr_inttoptr() { +; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr() { +; CHECK-NEXT: ret i32 -1 +; + ret i32 ptrtoaddr (ptr inttoptr (i32 -1 to ptr) to i32) +} + +define i32 @ptrtoaddr_inttoptr_diff_size1() { +; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr_diff_size1() { +; CHECK-NEXT: ret i32 ptrtoaddr (ptr inttoptr (i64 -1 to ptr) to i32) +; + ret i32 ptrtoaddr (ptr inttoptr (i64 -1 to ptr) to i32) +} + +define i32 @ptrtoaddr_inttoptr_diff_size2() { +; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr_diff_size2() { +; CHECK-NEXT: ret i32 ptrtoaddr (ptr inttoptr (i16 -1 to ptr) to i32) +; + ret i32 ptrtoaddr (ptr inttoptr (i16 -1 to ptr) to i32) +} From d451c18cae7b3bd55a95aa9ba8ab8fedb9d5e1fd Mon Sep 17 00:00:00 2001 From: XChy Date: Mon, 29 Sep 2025 12:20:16 +0800 Subject: [PATCH 8/9] add address space --- llvm/test/Transforms/InstCombine/ptrtoaddr.ll | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/llvm/test/Transforms/InstCombine/ptrtoaddr.ll b/llvm/test/Transforms/InstCombine/ptrtoaddr.ll index 76a65a90b930e..98939705aeb2c 100644 --- a/llvm/test/Transforms/InstCombine/ptrtoaddr.ll +++ b/llvm/test/Transforms/InstCombine/ptrtoaddr.ll @@ -2,23 +2,23 @@ ; RUN: opt < %s -passes=instcombine -S | FileCheck %s target datalayout = "p1:64:64:64:32" -define i32 @ptrtoaddr_inttoptr() { -; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr() { -; CHECK-NEXT: ret i32 -1 +define i64 @ptrtoaddr_inttoptr() { +; CHECK-LABEL: define i64 @ptrtoaddr_inttoptr() { +; CHECK-NEXT: ret i64 ptrtoaddr (ptr addrspace(1) inttoptr (i32 -1 to ptr addrspace(1)) to i64) ; - ret i32 ptrtoaddr (ptr inttoptr (i32 -1 to ptr) to i32) + ret i64 ptrtoaddr (ptr addrspace(1) inttoptr (i32 -1 to ptr addrspace(1)) to i64) } define i32 @ptrtoaddr_inttoptr_diff_size1() { ; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr_diff_size1() { -; CHECK-NEXT: ret i32 ptrtoaddr (ptr inttoptr (i64 -1 to ptr) to i32) +; CHECK-NEXT: ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i64 -1 to ptr addrspace(1)) to i32) ; - ret i32 ptrtoaddr (ptr inttoptr (i64 -1 to ptr) to i32) + ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i64 -1 to ptr addrspace(1)) to i32) } define i32 @ptrtoaddr_inttoptr_diff_size2() { ; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr_diff_size2() { -; CHECK-NEXT: ret i32 ptrtoaddr (ptr inttoptr (i16 -1 to ptr) to i32) +; CHECK-NEXT: ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i16 -1 to ptr addrspace(1)) to i32) ; - ret i32 ptrtoaddr (ptr inttoptr (i16 -1 to ptr) to i32) + ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i16 -1 to ptr addrspace(1)) to i32) } From 1101f3b8ee42e305aab2566ca88f269e354cc09e Mon Sep 17 00:00:00 2001 From: XChy Date: Mon, 29 Sep 2025 16:33:57 +0800 Subject: [PATCH 9/9] move tests --- .../InstCombine/constant-expr-datalayout.ll | 28 ----------- llvm/test/Transforms/InstCombine/ptrtoaddr.ll | 49 +++++++++++++++++-- 2 files changed, 45 insertions(+), 32 deletions(-) diff --git a/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll b/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll index cb7e5796b1a59..442089eecfcbb 100644 --- a/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll +++ b/llvm/test/Transforms/InstCombine/constant-expr-datalayout.ll @@ -32,31 +32,3 @@ define i64 @OpenFilter(i64 %x) { %r = zext i8 %t to i64 ret i64 %r } - -define i64 @ptr2addr1() { -; CHECK-LABEL: @ptr2addr1( -; CHECK-NEXT: ret i64 1 -; - ret i64 ptrtoaddr (ptr getelementptr (i8, ptr null, i64 1) to i64) -} - -define i64 @ptr2addr2() { -; CHECK-LABEL: @ptr2addr2( -; CHECK-NEXT: ret i64 123 -; - ret i64 ptrtoaddr (ptr inttoptr (i64 123 to ptr) to i64) -} - -define i64 @ptrtoaddr_diff_size1() { -; CHECK-LABEL: @ptrtoaddr_diff_size1( -; CHECK-NEXT: ret i64 ptrtoaddr (ptr inttoptr (i32 -1 to ptr) to i64) -; - ret i64 ptrtoaddr (ptr inttoptr (i32 -1 to ptr) to i64) -} - -define i64 @ptrtoaddr_diff_size2() { -; CHECK-LABEL: @ptrtoaddr_diff_size2( -; CHECK-NEXT: ret i64 ptrtoaddr (ptr inttoptr (i128 -1 to ptr) to i64) -; - ret i64 ptrtoaddr (ptr inttoptr (i128 -1 to ptr) to i64) -} diff --git a/llvm/test/Transforms/InstCombine/ptrtoaddr.ll b/llvm/test/Transforms/InstCombine/ptrtoaddr.ll index 98939705aeb2c..61b13312521d2 100644 --- a/llvm/test/Transforms/InstCombine/ptrtoaddr.ll +++ b/llvm/test/Transforms/InstCombine/ptrtoaddr.ll @@ -2,11 +2,24 @@ ; RUN: opt < %s -passes=instcombine -S | FileCheck %s target datalayout = "p1:64:64:64:32" -define i64 @ptrtoaddr_inttoptr() { -; CHECK-LABEL: define i64 @ptrtoaddr_inttoptr() { -; CHECK-NEXT: ret i64 ptrtoaddr (ptr addrspace(1) inttoptr (i32 -1 to ptr addrspace(1)) to i64) +define i32 @ptrtoaddr_inttoptr_arg(i32 %a) { +; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr_arg( +; CHECK-SAME: i32 [[A:%.*]]) { +; CHECK-NEXT: [[TMP1:%.*]] = zext i32 [[A]] to i64 +; CHECK-NEXT: [[TOPTR:%.*]] = inttoptr i64 [[TMP1]] to ptr addrspace(1) +; CHECK-NEXT: [[TOADDR:%.*]] = ptrtoaddr ptr addrspace(1) [[TOPTR]] to i32 +; CHECK-NEXT: ret i32 [[TOADDR]] ; - ret i64 ptrtoaddr (ptr addrspace(1) inttoptr (i32 -1 to ptr addrspace(1)) to i64) + %toptr = inttoptr i32 %a to ptr addrspace(1) + %toaddr = ptrtoaddr ptr addrspace(1) %toptr to i32 + ret i32 %toaddr +} + +define i32 @ptrtoaddr_inttoptr() { +; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr() { +; CHECK-NEXT: ret i32 -1 +; + ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i32 -1 to ptr addrspace(1)) to i32) } define i32 @ptrtoaddr_inttoptr_diff_size1() { @@ -22,3 +35,31 @@ define i32 @ptrtoaddr_inttoptr_diff_size2() { ; ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i16 -1 to ptr addrspace(1)) to i32) } + +define i64 @ptrtoaddr_inttoptr_noas1() { +; CHECK-LABEL: define i64 @ptrtoaddr_inttoptr_noas1() { +; CHECK-NEXT: ret i64 1 +; + ret i64 ptrtoaddr (ptr getelementptr (i8, ptr null, i64 1) to i64) +} + +define i64 @ptr2addr2_inttoptr_noas2() { +; CHECK-LABEL: define i64 @ptr2addr2_inttoptr_noas2() { +; CHECK-NEXT: ret i64 123 +; + ret i64 ptrtoaddr (ptr inttoptr (i64 123 to ptr) to i64) +} + +define i64 @ptrtoaddr_inttoptr_noas_diff_size1() { +; CHECK-LABEL: define i64 @ptrtoaddr_inttoptr_noas_diff_size1() { +; CHECK-NEXT: ret i64 ptrtoaddr (ptr inttoptr (i32 -1 to ptr) to i64) +; + ret i64 ptrtoaddr (ptr inttoptr (i32 -1 to ptr) to i64) +} + +define i64 @ptrtoaddr_inttoptr_noas_diff_size2() { +; CHECK-LABEL: define i64 @ptrtoaddr_inttoptr_noas_diff_size2() { +; CHECK-NEXT: ret i64 ptrtoaddr (ptr inttoptr (i128 -1 to ptr) to i64) +; + ret i64 ptrtoaddr (ptr inttoptr (i128 -1 to ptr) to i64) +}