[PATCH] D69690: [GlobalsAA] Set KnowNothing when nothing is known about a function.
Alina Sbirlea via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 1 12:50:39 PDT 2019
asbirlea updated this revision to Diff 227508.
asbirlea added a comment.
Set KnowNothing.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D69690/new/
https://reviews.llvm.org/D69690
Files:
llvm/lib/Analysis/GlobalsModRef.cpp
llvm/test/Analysis/GlobalsModRef/intrinsics.ll
Index: llvm/test/Analysis/GlobalsModRef/intrinsics.ll
===================================================================
--- /dev/null
+++ llvm/test/Analysis/GlobalsModRef/intrinsics.ll
@@ -0,0 +1,44 @@
+; RUN: opt -globals-aa -gvn -S < %s | FileCheck %s
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+ at deallocCalled = internal global i8 0, align 1
+
+; CHECK-LABEL: @main()
+define dso_local i32 @main() {
+entry:
+ %tmp0 = call i8* @llvm.objc.autoreleasePoolPush() #1
+ %tmp6 = load i8, i8* @deallocCalled, align 1
+ %tobool = icmp ne i8 %tmp6, 0
+ br i1 %tobool, label %if.else, label %if.end
+
+if.else: ; preds = %entry
+ call void @__assert_fail() #0
+ unreachable
+
+; CHECK-LABEL: if.end:
+; CHECK-NEXT: call void @llvm.objc.autoreleasePoolPop
+; CHECK-NEXT: load i8, i8* @deallocCalled
+if.end: ; preds = %entry
+ call void @llvm.objc.autoreleasePoolPop(i8* %tmp0)
+ %tmp7 = load i8, i8* @deallocCalled, align 1
+ %tobool3 = icmp ne i8 %tmp7, 0
+ br i1 %tobool3, label %if.end6, label %if.else5
+
+if.else5: ; preds = %if.end
+ call void @__assert_fail() #0
+ unreachable
+
+if.end6: ; preds = %if.end
+ store i8 0, i8* @deallocCalled, align 1
+ ret i32 0
+}
+
+declare i8* @llvm.objc.autoreleasePoolPush() #1
+declare dso_local void @__assert_fail() #0
+declare void @llvm.objc.autoreleasePoolPop(i8*) #1
+
+attributes #0 = { noreturn nounwind }
+attributes #1 = { nounwind }
+
Index: llvm/lib/Analysis/GlobalsModRef.cpp
===================================================================
--- llvm/lib/Analysis/GlobalsModRef.cpp
+++ llvm/lib/Analysis/GlobalsModRef.cpp
@@ -525,10 +525,8 @@
// consider every global as possibly being read by this function.
FI.setMayReadAnyGlobal();
} else {
- FI.addModRefInfo(ModRefInfo::ModRef);
- // Can't say anything useful unless it's an intrinsic - they don't
- // read or write global variables of the kind considered here.
- KnowNothing = !F->isIntrinsic();
+ KnowNothing = true;
+ break;
}
continue;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D69690.227508.patch
Type: text/x-patch
Size: 2344 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191101/3a46a4bb/attachment.bin>
More information about the llvm-commits
mailing list