Makes sense. I'll do a follow up patch.<div><br></div><div>Thanks,</div><div>  Filipe<span></span><br><br>On Friday, June 5, 2015, Duncan P. N. Exon Smith <<a href="mailto:dexonsmith@apple.com">dexonsmith@apple.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
> On 2015-Jun-02, at 18:30, Filipe Cabecinhas <<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;me@filcab.net&#39;)">me@filcab.net</a>> wrote:<br>
><br>
> Author: filcab<br>
> Date: Tue Jun  2 20:30:13 2015<br>
> New Revision: 238895<br>
><br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D238895-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=0BUuM6ehVQmuruoY8-RkSC1xnyx8vL9D44QgmUkpLDY&s=gl2--zO50am9FyjKgJWIU0iSzR81TQ3rlTjQaokfaf4&e=" target="_blank">http://llvm.org/viewvc/llvm-project?rev=238895&view=rev</a><br>
> Log:<br>
> [BitcodeReader] Diagnose type mismatches with aliases<br>
><br>
> Bug found with AFL fuzz.<br>
><br>
> Added:<br>
>    llvm/trunk/test/Bitcode/Inputs/invalid-alias-type-mismatch.bc<br>
> Modified:<br>
>    llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp<br>
>    llvm/trunk/test/Bitcode/invalid.test<br>
><br>
> Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_lib_Bitcode_Reader_BitcodeReader.cpp-3Frev-3D238895-26r1-3D238894-26r2-3D238895-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=0BUuM6ehVQmuruoY8-RkSC1xnyx8vL9D44QgmUkpLDY&s=o4BGv4IYeE3KRBG7s0b7YMjY8zmHsCGtK1vleuJL4vE&e=" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=238895&r1=238894&r2=238895&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)<br>
> +++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Tue Jun  2 20:30:13 2015<br>
> @@ -2065,9 +2065,12 @@ std::error_code BitcodeReader::ResolveGl<br>
>     if (ValID >= ValueList.size()) {<br>
>       AliasInits.push_back(AliasInitWorklist.back());<br>
>     } else {<br>
> -      if (Constant *C = dyn_cast_or_null<Constant>(ValueList[ValID]))<br>
> -        AliasInitWorklist.back().first->setAliasee(C);<br>
> -      else<br>
> +      if (Constant *C = dyn_cast_or_null<Constant>(ValueList[ValID])) {<br>
> +        GlobalAlias *Alias = AliasInitWorklist.back().first;<br>
> +        if (C->getType() != Alias->getType())<br>
> +          return Error("Alias and aliasee types don't match");<br>
> +        Alias->setAliasee(C);<br>
> +      } else<br>
>         return Error("Expected a constant");<br>
<br>
There's enough logic in there now, do you think it's worth flipping the<br>
if for an else after the return?<br>
<br>
    Constant *C = ...;<br>
    if (!C)<br>
      return Error(...);<br>
    GlobalAlias *Alias = ...;<br>
    if (...)<br>
      return Error(...);<br>
    Alias->setAliasee(C);<br>
<br>
(At least, I find that easier to follow.)<br>
<br>
>     }<br>
>     AliasInitWorklist.pop_back();<br>
><br>
> Added: llvm/trunk/test/Bitcode/Inputs/invalid-alias-type-mismatch.bc<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_Bitcode_Inputs_invalid-2Dalias-2Dtype-2Dmismatch.bc-3Frev-3D238895-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=0BUuM6ehVQmuruoY8-RkSC1xnyx8vL9D44QgmUkpLDY&s=6pz-PmAILq8NbIG3E1Ul1UBvphiSnyxohb4HhEZaKdA&e=" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/Inputs/invalid-alias-type-mismatch.bc?rev=238895&view=auto</a><br>
> ==============================================================================<br>
> Binary files llvm/trunk/test/Bitcode/Inputs/invalid-alias-type-mismatch.bc (added) and llvm/trunk/test/Bitcode/Inputs/invalid-alias-type-mismatch.bc Tue Jun  2 20:30:13 2015 differ<br>
><br>
> Modified: llvm/trunk/test/Bitcode/invalid.test<br>
> URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_Bitcode_invalid.test-3Frev-3D238895-26r1-3D238894-26r2-3D238895-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=0BUuM6ehVQmuruoY8-RkSC1xnyx8vL9D44QgmUkpLDY&s=sB2kRCEM5gRR9QTepPVxOmZeeldYhePZW2hhIhEMU-g&e=" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/invalid.test?rev=238895&r1=238894&r2=238895&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Bitcode/invalid.test (original)<br>
> +++ llvm/trunk/test/Bitcode/invalid.test Tue Jun  2 20:30:13 2015<br>
> @@ -197,3 +197,8 @@ RUN: not llvm-dis -disable-output %p/Inp<br>
> RUN:   FileCheck --check-prefix=VECTOR-LENGTH %s<br>
><br>
> VECTOR-LENGTH: Invalid vector length<br>
> +<br>
> +RUN: not llvm-dis -disable-output %p/Inputs/invalid-alias-type-mismatch.bc 2>&1 | \<br>
> +RUN:   FileCheck --check-prefix=ALIAS-TYPE-MISMATCH %s<br>
> +<br>
> +ALIAS-TYPE-MISMATCH: Alias and aliasee types don't match<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;llvm-commits@cs.uiuc.edu&#39;)">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;llvm-commits@cs.uiuc.edu&#39;)">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>