llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: None (smanna12)

<details>
<summary>Changes</summary>

In getRVVTypeSize(clang::ASTContext &amp;, clang::BuiltinType const *) 
potential integer overflow occurs on expression VScale-&gt;first * MinElts with 
type unsigned int (32 bits, unsigned) is evaluated using 32-bit arithmetic, and 
then used in a context that expects an expression of type uint64_t (64 bits, 
unsigned).

To avoid integer overflow, this patch changes the types of variables MinElts 
and EltSize to uint64_t instead of the cast.

---
Full diff: https://github.com/llvm/llvm-project/pull/86810.diff


1 Files Affected:

- (modified) clang/lib/AST/ASTContext.cpp (+2-2) 


``````````diff
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index 20a5ecc99e44a7..c90fafb6f653d0 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -9600,11 +9600,11 @@ static uint64_t getRVVTypeSize(ASTContext &Context, 
const BuiltinType *Ty) {
 
   ASTContext::BuiltinVectorTypeInfo Info = 
Context.getBuiltinVectorTypeInfo(Ty);
 
-  unsigned EltSize = Context.getTypeSize(Info.ElementType);
+  uint64_t EltSize = Context.getTypeSize(Info.ElementType);
   if (Info.ElementType == Context.BoolTy)
     EltSize = 1;
 
-  unsigned MinElts = Info.EC.getKnownMinValue();
+  uint64_t MinElts = Info.EC.getKnownMinValue();
   return VScale->first * MinElts * EltSize;
 }
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/86810
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to