From 0db30adcfbaa857ca7c93a91208a229e21702488 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 19 Jan 2022 15:50:32 +0100 Subject: [PATCH] [MemCpyOpt] Test invalid noalias metadata after call slot opt (NFC) --- llvm/test/Transforms/MemCpyOpt/callslot_noalias.ll | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 llvm/test/Transforms/MemCpyOpt/callslot_noalias.ll diff --git a/llvm/test/Transforms/MemCpyOpt/callslot_noalias.ll b/llvm/test/Transforms/MemCpyOpt/callslot_noalias.ll new file mode 100644 index 0000000..0a6008a --- /dev/null +++ b/llvm/test/Transforms/MemCpyOpt/callslot_noalias.ll @@ -0,0 +1,25 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt -S -memcpyopt < %s | FileCheck %s + +declare void @func(i8* %dst) + +; TODO: The noalias metadata on the call is currently incorrect. +define i8 @test(i8* dereferenceable(1) noalias %dst) { +; CHECK-LABEL: @test( +; CHECK-NEXT: [[TMP:%.*]] = alloca i8, align 1 +; CHECK-NEXT: call void @func(i8* nocapture [[DST:%.*]]) #[[ATTR0:[0-9]+]], !noalias !0 +; CHECK-NEXT: [[V2:%.*]] = load i8, i8* [[DST]], align 1, !alias.scope !0 +; CHECK-NEXT: ret i8 [[V2]] +; + %tmp = alloca i8 + call void @func(i8* nocapture %tmp) nounwind, !noalias !0 + %v = load i8, i8* %tmp, !noalias !0 + store i8 %v, i8* %dst, !alias.scope !0 + %v2 = load i8, i8* %dst, !alias.scope !0 + ret i8 %v2 +} + +!0 = !{!1} +!1 = !{!1, !2} +!2 = !{!2} + -- 2.7.4