[LLVMdev] Jump Theading/GVN bug - moving discussion to llvm-dev

Daniel Berlin dberlin at dberlin.org
Mon Feb 23 22:14:55 PST 2015


>
>
> One is essentially covering input diversity, the other has to cover
>> *output* diversity, and must prove the negative. We fundamentally must gain
>> confidence that the pass *never* produces unreachable IR. This seems much
>> harder than demonstrating that it does handle unreachable IR.
>>
>> Missed a spot :)

Except, in this case, output diversity is finite (each pass has a limited
set of ways it can produce unreachable code, and unreachable code is not
valid input to the next pass) , but input diversity is pretty much
infinite, because you need to know *all* possible unreachable code that
could be produced by all passes combined (since unreachable code is a valid
input into each pass, you are testing the combination of all possible
unreachable code transforms by any order of passes that could possibly
exist up to that point).

I would much rather have the former than the latter.

You are also "proving the negative" either way.
"There is no unreachable code this does not handle vs This does not produce
unreachable code"

BTW, one is formally verifiable, the other is pretty much not.

(IE i can formally verify that a pass removes all dead blocks it creates,
whereas you pretty much cannot formally verify there is no set of dead
input cfgs that affects an algorithm)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150223/fe4be0a2/attachment.html>


More information about the llvm-dev mailing list