[dataflow] Avoid copying environment
This appears to be just an accidental copy rather than move from a scratch variable. As well as doing redundant work, these copies introduce extra SAT variables which make debugging harder (each Enviroment has a unique FC token). Example flow condition before: ``` (B0:1 = V15) (B1:1 = V8) (B2:1 = V10) (B3:1 = (V4 & (!V7 => V6))) (V10 = (B3:1 & !V7)) (V12 = B1:1) (V13 = B2:1) (V15 = (V12 | V13)) (V3 = V2) (V4 = V3) (V8 = (B3:1 & !!V7)) B0:1 V2 ``` after: ``` (B0:1 = (V9 | V10)) (B1:1 = (B3:1 & !!V6)) (B2:1 = (B3:1 & !V6)) (B3:1 = (V3 & (!V6 => V5))) (V10 = B2:1) (V3 = V2) (V9 = B1:1) B0:1 V2 ``` (with labelling from D153488) There are also some more copies that can be avoided here (when multiple blocks without terminating statements are joined), but they're less trivial, so I'll put those in another patch. Differential Revision: https://reviews.llvm.org/D153491
parent
8ed7aa59
Please register or sign in to comment