Files
clang-p2996/polly/test/Isl/CodeGen/phi-defined-before-scop.ll
Michael Kruse fd46308de4 ScopInfo: Never add read accesses for synthesizable values
Before adding a MK_Value READ MemoryAccess, check whether the read is
necessary or synthesizable. Synthesizable values are later generated by
the SCEVExpander and therefore do not need to be transferred
explicitly. This can happen because the check for synthesizability has
presumbly been forgotten in the case where a phi's incoming value has
been defined in a different statement.

Differential Revision: http://reviews.llvm.org/D15687

llvm-svn: 258998
2016-01-27 22:51:56 +00:00

53 lines
2.0 KiB
LLVM

; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
; CHECK-LABEL: polly.merge_new_and_old:
; CHECK-NEXT: %tmp7.ph.merge = phi %struct.wibble* [ %tmp7.ph.final_reload, %polly.exiting ], [ %tmp7.ph, %bb6.region_exiting ]
; CHECK-LABEL: polly.stmt.bb3:
; CHECK-NEXT: store %struct.wibble* %tmp2, %struct.wibble** %tmp7.s2a
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
%struct.blam = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.wibble = type { i32, %struct.wibble*, %struct.wibble* }
@global = external global %struct.blam*, align 8
; Function Attrs: nounwind uwtable
define void @wobble() #0 {
bb:
br label %bb1
bb1: ; preds = %bb6, %bb
%tmp2 = phi %struct.wibble* [ %tmp7, %bb6 ], [ undef, %bb ]
%tmp = load %struct.blam*, %struct.blam** @global, align 8, !tbaa !1
br label %bb3
bb3: ; preds = %bb1
%tmp4 = getelementptr inbounds %struct.blam, %struct.blam* %tmp, i64 0, i32 1
br i1 false, label %bb6, label %bb5
bb5: ; preds = %bb3
br label %bb6
bb6: ; preds = %bb5, %bb3
%tmp7 = phi %struct.wibble* [ %tmp2, %bb3 ], [ undef, %bb5 ]
br i1 undef, label %bb8, label %bb1
bb8: ; preds = %bb6
br label %bb9
bb9: ; preds = %bb8
unreachable
}
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" }
!llvm.ident = !{!0}
!0 = !{!"clang version 3.8.0 (trunk 250010) (llvm/trunk 250018)"}
!1 = !{!2, !2, i64 0}
!2 = !{!"any pointer", !3, i64 0}
!3 = !{!"omnipotent char", !4, i64 0}
!4 = !{!"Simple C/C++ TBAA"}