[PATCH] D88519: [NFC][MSAN] Extract llvm.abs handling into a function

Vitaly Buka via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 29 15:34:12 PDT 2020


vitalybuka created this revision.
vitalybuka added a reviewer: eugenis.
Herald added subscribers: llvm-commits, hiraditya.
Herald added a project: LLVM.
vitalybuka requested review of this revision.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D88519

Files:
  llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp


Index: llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
===================================================================
--- llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
+++ llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
@@ -2638,12 +2638,6 @@
       return false;
 
     unsigned NumArgOperands = I.getNumArgOperands();
-    if (I.getIntrinsicID() == Intrinsic::abs) {
-      assert(NumArgOperands == 2);
-      // The last argument is just a boolean flag.
-      NumArgOperands = 1;
-    }
-
     for (unsigned i = 0; i < NumArgOperands; ++i) {
       Type *Ty = I.getArgOperand(i)->getType();
       if (Ty != RetTy)
@@ -2659,6 +2653,22 @@
     return true;
   }
 
+  bool maybeHandleAbsIntrinsic(IntrinsicInst &I) {
+    if (I.getIntrinsicID() != Intrinsic::abs)
+      return false;
+
+    Type *RetTy = I.getType();
+    assert(RetTy->isIntOrIntVectorTy());
+    assert(I.getArgOperand(0)->getType() == RetTy);
+
+    // FIXME: Handle is_int_min_poison.
+    IRBuilder<> IRB(&I);
+    setShadow(&I, getShadow(&I, 0));
+    setOrigin(&I, getOrigin(&I, 0));
+
+    return true;
+  }
+
   /// Heuristically instrument unknown intrinsics.
   ///
   /// The main purpose of this code is to do something reasonable with all
@@ -2691,6 +2701,9 @@
       return handleVectorLoadIntrinsic(I);
     }
 
+    if (maybeHandleAbsIntrinsic(I))
+      return true;
+
     if (I.doesNotAccessMemory())
       if (maybeHandleSimpleNomemIntrinsic(I))
         return true;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D88519.295136.patch
Type: text/x-patch
Size: 1491 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200929/31a11777/attachment.bin>


More information about the llvm-commits mailing list