Mercurial > hg > CbC > CbC_llvm
view test/Other/invariant.group.barrier.ll @ 129:9ec641e857f8
Fix compile error to update llvm 5.0
author | mir3636 |
---|---|
date | Tue, 12 Dec 2017 19:42:58 +0900 |
parents | 803732b1fca8 |
children | 3a76565eade5 |
line wrap: on
line source
; RUN: opt -S -early-cse < %s | FileCheck %s ; RUN: opt -S -gvn < %s | FileCheck %s ; RUN: opt -S -newgvn < %s | FileCheck %s ; RUN: opt -S -O3 < %s | FileCheck %s ; These tests checks if passes with CSE functionality can do CSE on ; invariant.group.barrier, that is prohibited if there is a memory clobber ; between barriers call. ; CHECK-LABEL: define i8 @optimizable() define i8 @optimizable() { entry: %ptr = alloca i8 store i8 42, i8* %ptr, !invariant.group !0 ; CHECK: call i8* @llvm.invariant.group.barrier %ptr2 = call i8* @llvm.invariant.group.barrier(i8* %ptr) ; CHECK-NOT: call i8* @llvm.invariant.group.barrier %ptr3 = call i8* @llvm.invariant.group.barrier(i8* %ptr) ; CHECK: call void @clobber(i8* {{.*}}%ptr) call void @clobber(i8* %ptr) ; CHECK: call void @use(i8* {{.*}}%ptr2) call void @use(i8* %ptr2) ; CHECK: call void @use(i8* {{.*}}%ptr2) call void @use(i8* %ptr3) ; CHECK: load i8, i8* %ptr2, {{.*}}!invariant.group %v = load i8, i8* %ptr3, !invariant.group !0 ret i8 %v } ; CHECK-LABEL: define i8 @unoptimizable() define i8 @unoptimizable() { entry: %ptr = alloca i8 store i8 42, i8* %ptr, !invariant.group !0 ; CHECK: call i8* @llvm.invariant.group.barrier %ptr2 = call i8* @llvm.invariant.group.barrier(i8* %ptr) call void @clobber(i8* %ptr) ; CHECK: call i8* @llvm.invariant.group.barrier %ptr3 = call i8* @llvm.invariant.group.barrier(i8* %ptr) ; CHECK: call void @clobber(i8* {{.*}}%ptr) call void @clobber(i8* %ptr) ; CHECK: call void @use(i8* {{.*}}%ptr2) call void @use(i8* %ptr2) ; CHECK: call void @use(i8* {{.*}}%ptr3) call void @use(i8* %ptr3) ; CHECK: load i8, i8* %ptr3, {{.*}}!invariant.group %v = load i8, i8* %ptr3, !invariant.group !0 ret i8 %v } declare void @use(i8* readonly) declare void @clobber(i8*) ; CHECK: Function Attrs: argmemonly nounwind readonly ; CHECK-NEXT: declare i8* @llvm.invariant.group.barrier(i8*) declare i8* @llvm.invariant.group.barrier(i8*) !0 = !{}