[PATCH] D73395: Support zero size types in StackSafetyAnalysis.

Evgenii Stepanov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 24 16:45:16 PST 2020


eugenis created this revision.
eugenis added a reviewer: vitalybuka.
Herald added a subscriber: hiraditya.
Herald added a project: LLVM.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D73395

Files:
  llvm/lib/Analysis/StackSafetyAnalysis.cpp
  llvm/test/Analysis/StackSafetyAnalysis/local.ll


Index: llvm/test/Analysis/StackSafetyAnalysis/local.ll
===================================================================
--- llvm/test/Analysis/StackSafetyAnalysis/local.ll
+++ llvm/test/Analysis/StackSafetyAnalysis/local.ll
@@ -368,3 +368,20 @@
   store <vscale x 4 x i32> %v, <vscale x 4 x i32>* %p, align 4
   ret void
 }
+
+%zerosize_type = type {}
+
+define void @ZeroSize(%zerosize_type *%p)  {
+; CHECK-LABEL: @ZeroSize dso_preemptable{{$}}
+; CHECK-NEXT: args uses:
+; CHECK-NEXT:   p[]: empty-set
+; CHECK-NEXT: allocas uses:
+; CHECK-NEXT:   x[0]: empty-set
+; CHECK-NOT: ]:
+entry:
+  %x = alloca %zerosize_type, align 4
+  store %zerosize_type undef, %zerosize_type* %x, align 4
+  store %zerosize_type undef, %zerosize_type* undef, align 4
+  %val = load %zerosize_type, %zerosize_type* %p, align 4
+  ret void
+}
Index: llvm/lib/Analysis/StackSafetyAnalysis.cpp
===================================================================
--- llvm/lib/Analysis/StackSafetyAnalysis.cpp
+++ llvm/lib/Analysis/StackSafetyAnalysis.cpp
@@ -252,6 +252,10 @@
 ConstantRange
 StackSafetyLocalAnalysis::getAccessRange(Value *Addr, const Value *AllocaPtr,
                                          ConstantRange SizeRange) {
+  // Zero-size loads and stores do not access memory.
+  if (SizeRange.isEmptySet())
+    return ConstantRange::getEmpty(PointerSize);
+
   if (!SE.isSCEVable(Addr->getType()))
     return UnknownRange;
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73395.240331.patch
Type: text/x-patch
Size: 1428 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200125/8dce92d9/attachment.bin>


More information about the llvm-commits mailing list