IntToPtr and PtrToInt instructions are basically no-ops that we can handle as such. In order to generate them properly as parameters we had to improve the ScopExpander, though the change is the first in the direction of a more aggressive scalar synthetization. This patch was originally contributed by Johannes Doerfert in r271888, but was in conflict with the revert in r272483. This is a recommit with some minor adjustment to the test cases to take care of differing instruction names. llvm-svn: 272485
35 lines
1.2 KiB
LLVM
35 lines
1.2 KiB
LLVM
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
|
|
;
|
|
; CHECK: polly.split_new_and_old:
|
|
; CHECK-NEXT: %pollysub.ptr.lhs.cast263 = ptrtoint i8* inttoptr (i64 1 to i8*) to i64
|
|
;
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
|
; Function Attrs: nounwind uwtable
|
|
define void @XS_MIME__QuotedPrint_encode_qp() {
|
|
entry:
|
|
%Perl_sv_len = alloca i64, align 8
|
|
br label %if.end
|
|
|
|
if.end: ; preds = %entry
|
|
br label %while.cond
|
|
|
|
while.cond: ; preds = %cond.true270, %if.then260, %if.end
|
|
%p.0 = phi i8* [ null, %if.end ], [ %p.4, %if.then260 ], [ %p.4, %cond.true270 ]
|
|
br i1 undef, label %if.then260, label %while.body210
|
|
|
|
while.body210: ; preds = %while.cond
|
|
unreachable
|
|
|
|
if.then260: ; preds = %while.cond
|
|
%p.4 = getelementptr inbounds i8, i8* null, i64 1
|
|
%sub.ptr.lhs.cast263 = ptrtoint i8* %p.4 to i64
|
|
%sub.ptr.sub265 = sub i64 %sub.ptr.lhs.cast263, 0
|
|
%div = udiv i64 0, %sub.ptr.sub265
|
|
%cmp268 = icmp ult i64 0, %div
|
|
br i1 %cmp268, label %cond.true270, label %while.cond
|
|
|
|
cond.true270: ; preds = %if.then260
|
|
br label %while.cond
|
|
}
|