You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Remove the verification of cttz & ctlz from the SIL verifier.
This change is related to the effort of enabling the SIL verifier by default in
debug builds.
This commit removes the code that verifies that the second argument of the cttz
and ctlz intrinsics is a constant. The SIL verifier needs to be able to verify
SIL in its early stages before optimizations clean it up. The SIL Verifier
complains that the value 'false' that we pass to ctlz is non-constant. Right now
we don't have a way to pass boolean values to the second parameter of cttz and
ctlz without creating SIL-level control flow. This control flow prevents the
verifier from detecting that the argument is a constant and
verification fails.
I tried to re-write our uses of ctlz using builtins, but the result was cryptic.
I am removing this check from the verifier mainly because it does not contribute
to the safety of our programs. LLVM already verifies that the last argument is
a constant and I believe that its okay not to verify this trait at SIL level.
0 commit comments