Volatile or atomic memory accesses are currently not supported. Neither did we think about any special handling needed nor do we support the unknown instructions the alias set tracker turns them into sometimes. Before this patch, us not supporting unkown instructions in an alias set caused the following assertion failures: Assertion `AG.size() > 1 && "Alias groups should contain at least two accesses"' failed llvm-svn: 251234
31 lines
878 B
LLVM
31 lines
878 B
LLVM
; RUN: opt %loadPolly -polly-detect \
|
|
; RUN: -analyze < %s | FileCheck %s
|
|
;
|
|
; Verify that we do not model atomic memory accesses. We did not reason about
|
|
; how to handle them correctly and the Alias Set Tracker models some of them
|
|
; only as Unknown Instructions, which we do not know how to handle either.;
|
|
;
|
|
; CHECK-NOT: Valid
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
|
@global = external global i64, align 8
|
|
|
|
declare void @foo55()
|
|
|
|
define void @blam107() {
|
|
bb:
|
|
br label %bb1
|
|
|
|
bb1: ; preds = %bb
|
|
%tmp = load atomic i8, i8* bitcast (i64* @global to i8*) acquire, align 8
|
|
br i1 false, label %bb2, label %bb3
|
|
|
|
bb2: ; preds = %bb1
|
|
tail call void @foo55() #6
|
|
br label %bb3
|
|
|
|
bb3: ; preds = %bb2, %bb1
|
|
unreachable
|
|
}
|
|
|