[llvm] c1a9dd9 - [AbstractCallSite] Check that callback callee index is within call arguments

Sergey Dmitriev via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 14 09:24:18 PDT 2020


Author: Sergey Dmitriev
Date: 2020-04-14T09:24:00-07:00
New Revision: c1a9dd9aea498dd78d6583f29f15a690ddd5466a

URL: https://github.com/llvm/llvm-project/commit/c1a9dd9aea498dd78d6583f29f15a690ddd5466a
DIFF: https://github.com/llvm/llvm-project/commit/c1a9dd9aea498dd78d6583f29f15a690ddd5466a.diff

LOG: [AbstractCallSite] Check that callback callee index is within call arguments

Summary:
AbstractCallSite::getCallbackUses() does not check that callback callee index from
the callback metadata does not exceed the total number of call arguments. This patch
add such validation check.

Reviewers: jdoerfert, sstefan1

Reviewed By: jdoerfert

Subscribers: hiraditya, arphaman, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D78112

Added: 
    

Modified: 
    llvm/lib/IR/AbstractCallSite.cpp
    llvm/test/Transforms/OpenMP/rtf_type_checking.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/IR/AbstractCallSite.cpp b/llvm/lib/IR/AbstractCallSite.cpp
index 19b35665c3fa..e415c48fefe5 100644
--- a/llvm/lib/IR/AbstractCallSite.cpp
+++ b/llvm/lib/IR/AbstractCallSite.cpp
@@ -48,7 +48,8 @@ void AbstractCallSite::getCallbackUses(ImmutableCallSite ICS,
     auto *CBCalleeIdxAsCM = cast<ConstantAsMetadata>(OpMD->getOperand(0));
     uint64_t CBCalleeIdx =
         cast<ConstantInt>(CBCalleeIdxAsCM->getValue())->getZExtValue();
-    CBUses.push_back(ICS.arg_begin() + CBCalleeIdx);
+    if (CBCalleeIdx < ICS.arg_size())
+      CBUses.push_back(ICS.arg_begin() + CBCalleeIdx);
   }
 }
 

diff  --git a/llvm/test/Transforms/OpenMP/rtf_type_checking.ll b/llvm/test/Transforms/OpenMP/rtf_type_checking.ll
index 57c09bcc7e06..6c392e75b4c4 100644
--- a/llvm/test/Transforms/OpenMP/rtf_type_checking.ll
+++ b/llvm/test/Transforms/OpenMP/rtf_type_checking.ll
@@ -1,4 +1,5 @@
 ; RUN: opt -S -openmpopt -stats < %s 2>&1 | FileCheck %s
+; RUN: opt -S -attributor -attributor-disable=false -openmpopt -stats < %s 2>&1 | FileCheck %s
 ; REQUIRES: asserts
 
 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"


        


More information about the llvm-commits mailing list