[PATCH] D111829: [Sanitizers] Replaced getMaxPointerSizeInBits with getPointerSizeInBits, which was causing failures for 32bit x86.

Kirill Stoimenov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 18 09:32:07 PDT 2021


This revision was automatically updated to reflect the committed changes.
kstoimenov marked an inline comment as done.
Closed by commit rG62627c721732: [Sanitizers] Replaced getMaxPointerSizeInBits with getPointerSizeInBits, which… (authored by kstoimenov).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D111829/new/

https://reviews.llvm.org/D111829

Files:
  llvm/lib/Analysis/StackSafetyAnalysis.cpp
  llvm/test/Analysis/StackSafetyAnalysis/i386-bug-fix.ll


Index: llvm/test/Analysis/StackSafetyAnalysis/i386-bug-fix.ll
===================================================================
--- /dev/null
+++ llvm/test/Analysis/StackSafetyAnalysis/i386-bug-fix.ll
@@ -0,0 +1,24 @@
+; REQUIRES: i386-pc-linux-gnu
+
+; RUN: opt passes="print-stack-safety" -disable-output -mtriple=i386-pc-linux-gnu %s 2>&1 | FileCheck %s --check-prefixes=CHECK
+
+; CHECK:      @main
+; CHECK-NEXT:   args uses:
+; CHECK-NEXT:     argv[]: empty-set
+; CHECK-NEXT:   allocas uses:
+; CHECK-NEXT:     [4]: [0,4)
+; CHECK-NEXT:     [32]: full-set
+; CHECK-NEXT:   safe accesses:
+
+target datalayout = "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-f64:32:64-f80:32-n8:16:32-S128"
+target triple = "i386-pc-linux-gnu"
+
+; Function Attrs: mustprogress norecurse sanitize_address uwtable
+define dso_local i32 @main(i32 %argc, i8** %argv)  {
+entry:
+  %0 = alloca i32, align 4
+  %1 = alloca i8, i64 32, align 32
+  %2 = ptrtoint i8* %1 to i32
+  store i32 %2, i32* %0, align 4
+  ret i32 0
+}
Index: llvm/lib/Analysis/StackSafetyAnalysis.cpp
===================================================================
--- llvm/lib/Analysis/StackSafetyAnalysis.cpp
+++ llvm/lib/Analysis/StackSafetyAnalysis.cpp
@@ -154,7 +154,7 @@
 ConstantRange getStaticAllocaSizeRange(const AllocaInst &AI) {
   const DataLayout &DL = AI.getModule()->getDataLayout();
   TypeSize TS = DL.getTypeAllocSize(AI.getAllocatedType());
-  unsigned PointerSize = DL.getMaxPointerSizeInBits();
+  unsigned PointerSize = DL.getPointerTypeSizeInBits(AI.getType());
   // Fallback to empty range for alloca size.
   ConstantRange R = ConstantRange::getEmpty(PointerSize);
   if (TS.isScalable())
@@ -752,10 +752,8 @@
         KV.second.Calls.clear();
     }
 
-  uint32_t PointerSize = Copy.begin()
-                             ->first->getParent()
-                             ->getDataLayout()
-                             .getMaxPointerSizeInBits();
+  uint32_t PointerSize =
+      Copy.begin()->first->getParent()->getDataLayout().getPointerSizeInBits();
   StackSafetyDataFlowAnalysis<GlobalValue> SSDFA(PointerSize, std::move(Copy));
 
   for (auto &F : SSDFA.run()) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D111829.380446.patch
Type: text/x-patch
Size: 2164 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211018/15fd82e1/attachment.bin>


More information about the llvm-commits mailing list