llvm.invariant.group.barrier may accept pointers to arbitrary address space. This patch let it accept pointers to i8 in any address space and returns pointer to i8 in the same address space. Differential Revision: https://reviews.llvm.org/D39973 llvm-svn: 318413
25 lines
602 B
LLVM
25 lines
602 B
LLVM
; RUN: opt -codegenprepare -S < %s | FileCheck %s
|
|
|
|
@tmp = global i8 0
|
|
|
|
; CHECK-LABEL: define void @foo() {
|
|
define void @foo() {
|
|
enter:
|
|
; CHECK-NOT: !invariant.group
|
|
; CHECK-NOT: @llvm.invariant.group.barrier.p0i8(
|
|
; CHECK: %val = load i8, i8* @tmp, !tbaa
|
|
%val = load i8, i8* @tmp, !invariant.group !0, !tbaa !{!1, !1, i64 0}
|
|
%ptr = call i8* @llvm.invariant.group.barrier.p0i8(i8* @tmp)
|
|
|
|
; CHECK: store i8 42, i8* @tmp
|
|
store i8 42, i8* %ptr, !invariant.group !0
|
|
|
|
ret void
|
|
}
|
|
; CHECK-LABEL: }
|
|
|
|
declare i8* @llvm.invariant.group.barrier.p0i8(i8*)
|
|
|
|
!0 = !{!"something"}
|
|
!1 = !{!"x", !0}
|