[llvm] 646e970 - [llvm-stress] Fix dead code preventing us generating per-element vector selects

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 11 02:57:49 PDT 2021


Author: Simon Pilgrim
Date: 2021-06-11T10:56:19+01:00
New Revision: 646e970d44d7eaf4f56e2956fb58b48eb9360cb3

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

LOG: [llvm-stress] Fix dead code preventing us generating per-element vector selects

This has been reported several times by the PVS Studio team as well as coming up in some static analysis.

getRandom() % 1 always returns 0 so we never actually test this codepath, (git blame suggests this has always been like this) - given that we have plenty of other "getRandom() & 1" the typo is pretty obvious, and matches the intention in the comment above - with this change we generate a nice mixture of scalar/vector condition selects of vectors.

I don't know llvm-stress that well - but I don't think we guarantee that the same seed value will always generate the same IR for later versions of the program - just that the same binary would.

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

Added: 
    

Modified: 
    llvm/tools/llvm-stress/llvm-stress.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/tools/llvm-stress/llvm-stress.cpp b/llvm/tools/llvm-stress/llvm-stress.cpp
index e3fdd7821b6a6..b284fbf514a6a 100644
--- a/llvm/tools/llvm-stress/llvm-stress.cpp
+++ b/llvm/tools/llvm-stress/llvm-stress.cpp
@@ -632,7 +632,7 @@ struct SelectModifier: public Modifier {
 
     // If the value type is a vector, and we allow vector select, then in 50%
     // of the cases generate a vector select.
-    if (isa<FixedVectorType>(Val0->getType()) && (getRandom() % 1)) {
+    if (isa<FixedVectorType>(Val0->getType()) && (getRandom() & 1)) {
       unsigned NumElem =
           cast<FixedVectorType>(Val0->getType())->getNumElements();
       CondTy = FixedVectorType::get(CondTy, NumElem);


        


More information about the llvm-commits mailing list