[PATCH] D75804: [InstCombine] Fix known bits handling in SimplifyDemandedUseBits
Nikita Popov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat Mar 7 05:07:04 PST 2020
nikic marked 4 inline comments as done.
nikic added a comment.
Some comments on the intrinsics code, as it did some weird things before...
================
Comment at: lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp:719
-
- // TODO: Could compute known zero/one bits based on the input.
break;
----------------
Despite what the comment says, this was already computing known bits, because the "break" falls through to the call below.
================
Comment at: lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp:752
+ KnownBitsComputed = true;
break;
}
----------------
While known bits were computed explicitly here, this break would still fall through to the known bits call below, and thus recompute the result from scratch.
================
Comment at: lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp:781
+ KnownBitsComputed = true;
+ break;
}
----------------
This `return nullptr` skipped the bit of code for returning a constant integer below.
================
Comment at: lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp:790
+
+ if (!KnownBitsComputed)
+ computeKnownBits(V, Known, Depth, CxtI);
----------------
To avoid the three issues mentioned above, I'm now explicitly tracking whether known bits were computed or not for the call.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D75804/new/
https://reviews.llvm.org/D75804
More information about the llvm-commits
mailing list