Mercurial > hg > CbC > CbC_llvm
diff llvm/test/Feature/OperandBundles/pr26510.ll @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | 2e18cbf3894f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/llvm/test/Feature/OperandBundles/pr26510.ll Thu Feb 13 15:10:13 2020 +0900 @@ -0,0 +1,27 @@ +; RUN: opt -S -globals-aa -functionattrs < %s | FileCheck %s +; RUN: opt -S -O3 < %s | FileCheck %s + +; Apart from checking for the direct cause of the bug, we also check +; if any problematic aliasing rules have accidentally snuck into -O3. +; +; Since the "abc" operand bundle is not a special operand bundle that +; LLVM knows about, all of the stores and loads in @test below have to +; stay. + +declare void @foo() readnone + +; CHECK-LABEL: define i8* @test(i8* %p) +; CHECK: %a = alloca i8*, align 8 +; CHECK: store i8* %p, i8** %a, align 8 +; CHECK: call void @foo() [ "abc"(i8** %a) ] +; CHECK: %reload = load i8*, i8** %a, align 8 +; CHECK: ret i8* %reload +; CHECK: } + +define i8* @test(i8* %p) { + %a = alloca i8*, align 8 + store i8* %p, i8** %a, align 8 + call void @foo() ["abc" (i8** %a)] + %reload = load i8*, i8** %a, align 8 + ret i8* %reload +}