[PATCH] D25849: [GVN] Prevent load coercion with irregular vector types

Philip Reames via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 20 17:48:49 PDT 2016


reames added inline comments.


================
Comment at: lib/Transforms/Scalar/GVN.cpp:721
+  // going to crash later anyway.
+  if (llvm::alignTo(StoreSize, 8) != StoreSize)
+    return false;
----------------
StoreSize % 8 == 0 would seem to be a more standard way to express this check.

Also, checking only the StoreSize seems suspect.  Why do we not need to test the load size?


================
Comment at: lib/Transforms/Scalar/GVN.cpp:783
          "CanCoerceMustAliasedValueToLoad fail");
 
   // Convert source pointers to integers, which can be manipulated.
----------------
Have you looked at what's required to fix this code path?  This should be the only logic protected by the predicate you're modifying.


================
Comment at: test/Transforms/GVN/i7vector.ll:7
+  store <7 x i1> undef, <7 x i1>* %a, align 2
+  %0 = getelementptr inbounds <7 x i1>, <7 x i1>* %a, i64 0, i64 0
+  %val = load i1, i1* %0, align 2
----------------
Using a bitcast might be more canonical here.


https://reviews.llvm.org/D25849





More information about the llvm-commits mailing list