Files
clang-p2996/polly/test/Isl/CodeGen/conflict-between-loop-invariant-code-hosting-and-escape-map-computation.ll
Johannes Doerfert 3181c2ef72 [FIX] Correctly update SAI base pointer
If a base pointer load is preloaded, we have change the base pointer of
  the derived SAI. However, as the derived SAI relationship is is
  coarse grained, we need to check if we actually preloaded the base
  pointer or a different element of the base pointer SAI array.

llvm-svn: 251881
2015-11-03 01:42:59 +00:00

51 lines
1.8 KiB
LLVM

; RUN: opt %loadPolly -polly-process-unprofitable -analyze -polly-codegen < %s
;
; CHECK: store i32 %tmp14_p_scalar_, i32* %tmp14.s2a
; CHECK: %tmp14.final_reload = load i32, i32* %tmp14.s2a
; CHECK: %tmp17b.final_reload = load i32, i32* %tmp17b.preload.s2a
; CHECK: %tmp17.final_reload = load i32, i32* %tmp17.preload.s2a
;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
; Function Attrs: nounwind uwtable
define void @hoge(i8* %arg, i32 %arg4) #0 {
bb:
br label %bb5
bb5: ; preds = %bb
br i1 undef, label %bb6, label %bb18
bb6: ; preds = %bb5
%tmp7 = getelementptr i8, i8* %arg, i64 0
%tmp8 = getelementptr inbounds i8, i8* %tmp7, i64 4
%tmp9 = getelementptr inbounds i8, i8* %tmp8, i64 20
br label %bb10
bb10: ; preds = %bb10, %bb6
%tmp11 = phi i32 [ %tmp12, %bb10 ], [ 2, %bb6 ]
%tmp12 = add nuw nsw i32 %tmp11, 1
br i1 false, label %bb10, label %bb13
bb13: ; preds = %bb10
%tmp = bitcast i8* %tmp9 to i32*
%tmp14 = load i32, i32* %tmp, align 4
%tmp15 = getelementptr inbounds i8, i8* %tmp9, i64 4
%tmp16 = bitcast i8* %tmp15 to i32*
%tmp17 = load i32, i32* %tmp16, align 4
store i32 %tmp17, i32* %tmp, align 4
%tmp15b = getelementptr inbounds i8, i8* %tmp9, i64 8
%tmp16b = bitcast i8* %tmp15b to i32*
%tmp17b = load i32, i32* %tmp16b, align 4
store i32 %tmp17b, i32* %tmp, align 4
br label %bb19
bb18: ; preds = %bb5
br label %bb19
bb19: ; preds = %bb18, %bb13
%tmp20 = phi i32 [ %tmp14, %bb13 ], [ %arg4, %bb18 ]
%tmp21 = phi i32 [ %tmp17, %bb13 ], [ %arg4, %bb18 ]
%tmp22 = phi i32 [ %tmp17b, %bb13 ], [ %arg4, %bb18 ]
unreachable
}