[PATCH] D71736: [X86] Fix a KNL miscompile caused by combineSetCC swapping LHS/RHS variables before a later use.

Sanjay Patel via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 20 08:29:27 PST 2019


spatel accepted this revision.
spatel added a comment.
This revision is now accepted and ready to land.

LGTM. Breaking the function up with helpers/lambdas could be another option for not leaking modified state to other folds.



================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:43341-43342
 
   if (VT.isVector() && VT.getVectorElementType() == MVT::i1 &&
       (CC == ISD::SETNE || CC == ISD::SETEQ || ISD::isSignedIntSetCC(CC))) {
+    SDValue Op0 = LHS;
----------------
Add a comment here to explain. Something like:
  // Make temporary copies of the operands because we may swap
  // them to ease pattern matching, but then fall through without
  // doing the transform.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71736/new/

https://reviews.llvm.org/D71736





More information about the llvm-commits mailing list