Files
clang-p2996/polly/test/Isl/CodeGen/invariant_verify_function_failed.ll
Tobias Grosser 6e6264c142 [tests] Force invariant load hoisting for test cases that need it
This will make it easier to switch the default of Polly's invariant load
hoisting strategy and also makes it very clear that these test cases
indeed require invariant code hoisting to work.

llvm-svn: 278667
2016-08-15 13:27:49 +00:00

58 lines
2.6 KiB
LLVM

; RUN: opt %loadPolly -S -polly-codegen -polly-invariant-load-hoisting=true %s | FileCheck %s
;
; This crashed at some point as the pointer returned by the call
; to @__errno_location is invariant and defined in the SCoP but not
; loaded. Therefore it is not hoisted and consequently not available
; at the beginning of the SCoP where we would need it if we would try
; to hoist %tmp. We don't try to hoist %tmp anymore but this test still
; checks that this passes to code generation and produces valid code.
;
; CHECK: polly.start
;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
; Function Attrs: nounwind uwtable
define void @fileblobSetFilename() #0 {
entry:
br i1 undef, label %if.end, label %cleanup
if.end: ; preds = %entry
br i1 undef, label %land.lhs.true, label %if.end.18
land.lhs.true: ; preds = %if.end
%call9 = tail call i32* @__errno_location() #2
%tmp = load i32, i32* %call9, align 4, !tbaa !1
br i1 false, label %if.then.12, label %if.end.18
if.then.12: ; preds = %land.lhs.true
br label %if.end.18
if.end.18: ; preds = %if.then.12, %land.lhs.true, %if.end
%fd.0 = phi i32 [ undef, %if.then.12 ], [ undef, %land.lhs.true ], [ undef, %if.end ]
br i1 undef, label %if.then.21, label %if.end.27
if.then.21: ; preds = %if.end.18
unreachable
if.end.27: ; preds = %if.end.18
br label %cleanup
cleanup: ; preds = %if.end.27, %entry
ret void
}
; Function Attrs: nounwind readnone
declare i32* @__errno_location() #1
attributes #0 = { nounwind uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind readnone "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { nounwind readnone }
!llvm.ident = !{!0}
!0 = !{!"clang version 3.8.0 (trunk 250010) (llvm/trunk 250018)"}
!1 = !{!2, !2, i64 0}
!2 = !{!"int", !3, i64 0}
!3 = !{!"omnipotent char", !4, i64 0}
!4 = !{!"Simple C/C++ TBAA"}