tree 3d8acdeeeaf1b5d0ab2a124f2ecafc5055e10cfa
parent 3596b3838e479164c66ad0b1cbad0b6385ce47a5
author Steven Perron <stevenperron@google.com> 1543859367 -0500
committer GitHub <noreply@github.com> 1543859367 -0500
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJcBWynCRBK7hj4Ov3rIwAAdHIIADX2MU/zi0Frw4YOkmvR4GmJ
 MIWWt7IfubH/jMkAsnryFqg6FXL1XnatLcGPYfjZKygQOmLufudDcyCuI+xT+vhO
 5ywp2f3HH/eRgx0QV5s8HVa759aJWEt/DfIDKSbb5qe/m8/GC0pYDcLf99DImcfQ
 T+gTueQScxTAgiBGbH40Pm53yUzwTJPskrkBCv9JPRbcnxGYe8BgKhmunIBCY+vI
 vk2rInXJXTLtw7My8blVoVsab2qDDzP6fKSNCkuG7ZOuPAV0CXRHV6ELU6CqMVD9
 CqaVM6xKf9Z4TgO6XAeottMT0XUf4iXONSIiteq19pQ/vPnGNJ7EzxyyYArrbSw=
 =o9jj
 -----END PGP SIGNATURE-----
 

Validate uses of ids defined in unreachable blocks. (#2146)

* Validate uses of ids defined in unreachable blocks.

For some reason we do not make sure the uses of ids that are defined
in unreachable blocks are dominated by their def.  This is causing
invalid code to pass the validator.

Fixes #2143

* Add test for unreachable code after a return.

We want to allow code like:

```
void foo() {
  a = ...;
  ...
    return; // for debugging
  <use of a>;
  ...
}
```

I added a test to make sure that something like this is still accepted
by the validator.

* Add test for unreachable def used in phi.
