<div dir="ltr">Bad copypasta - thanks for catching these. I've fixed them, along with the MCJIT examples they originated in, in 235543.<div><br></div><div>- Lang.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 22, 2015 at 1:49 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Wed, Apr 22, 2015 at 1:41 PM, Lang Hames <<a href="mailto:lhames@gmail.com">lhames@gmail.com</a>> wrote:<br>
> Author: lhames<br>
> Date: Wed Apr 22 15:41:34 2015<br>
> New Revision: 235541<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=235541&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=235541&view=rev</a><br>
> Log:<br>
> [Kaleidoscope] Remove RTTI use from chapters 7 and 8.<br>
><br>
> Modified:<br>
>     llvm/trunk/examples/Kaleidoscope/Chapter7/CMakeLists.txt<br>
>     llvm/trunk/examples/Kaleidoscope/Chapter7/Makefile<br>
>     llvm/trunk/examples/Kaleidoscope/Chapter7/toy.cpp<br>
>     llvm/trunk/examples/Kaleidoscope/Chapter8/CMakeLists.txt<br>
>     llvm/trunk/examples/Kaleidoscope/Chapter8/Makefile<br>
>     llvm/trunk/examples/Kaleidoscope/Chapter8/toy.cpp<br>
><br>
> Modified: llvm/trunk/examples/Kaleidoscope/Chapter7/CMakeLists.txt<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter7/CMakeLists.txt?rev=235541&r1=235540&r2=235541&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter7/CMakeLists.txt?rev=235541&r1=235540&r2=235541&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/examples/Kaleidoscope/Chapter7/CMakeLists.txt (original)<br>
> +++ llvm/trunk/examples/Kaleidoscope/Chapter7/CMakeLists.txt Wed Apr 22 15:41:34 2015<br>
> @@ -11,10 +11,6 @@ set(LLVM_LINK_COMPONENTS<br>
>    native<br>
>    )<br>
><br>
> -set(LLVM_REQUIRES_RTTI 1)<br>
> -<br>
> -set(LLVM_BUILD_EXAMPLES OFF)<br>
> -<br>
>  add_kaleidoscope_chapter(Kaleidoscope-Ch7<br>
>    toy.cpp<br>
>    )<br>
><br>
> Modified: llvm/trunk/examples/Kaleidoscope/Chapter7/Makefile<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter7/Makefile?rev=235541&r1=235540&r2=235541&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter7/Makefile?rev=235541&r1=235540&r2=235541&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/examples/Kaleidoscope/Chapter7/Makefile (original)<br>
> +++ llvm/trunk/examples/Kaleidoscope/Chapter7/Makefile Wed Apr 22 15:41:34 2015<br>
> @@ -9,7 +9,6 @@<br>
>  LEVEL = ../../..<br>
>  TOOLNAME = Kaleidoscope-Ch7<br>
>  EXAMPLE_TOOL = 1<br>
> -REQUIRES_RTTI := 1<br>
><br>
>  LINK_COMPONENTS := core mcjit native<br>
><br>
><br>
> Modified: llvm/trunk/examples/Kaleidoscope/Chapter7/toy.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter7/toy.cpp?rev=235541&r1=235540&r2=235541&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter7/toy.cpp?rev=235541&r1=235540&r2=235541&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/examples/Kaleidoscope/Chapter7/toy.cpp (original)<br>
> +++ llvm/trunk/examples/Kaleidoscope/Chapter7/toy.cpp Wed Apr 22 15:41:34 2015<br>
> @@ -713,7 +713,10 @@ Value *BinaryExprAST::Codegen() {<br>
>    // Special case '=' because we don't want to emit the LHS as an expression.<br>
>    if (Op == '=') {<br>
>      // Assignment requires the LHS to be an identifier.<br>
> -    VariableExprAST *LHSE = dynamic_cast<VariableExprAST *>(LHS);<br>
> +    // This assume we're building without RTTI because LLVM builds that way by<br>
> +    // default.  If you build LLVM with RTTI this can be changed to a<br>
> +    // dynamic_cast for automatic error checking.<br>
> +    VariableExprAST *LHSE = reinterpret_cast<VariableExprAST *>(LHS);<br>
<br>
</div></div>This should probably be static_cast - reinterpret_cast won't account<br>
for base pointer adjustments, etc (eg: if the base object isn't the<br>
first subobject of the derived class (because it derives from more<br>
than one class, for example) - static_cast will adjust the pointer<br>
appropriately, reintepret_cast won't)<br>
<div><div class="h5"><br>
>      if (!LHSE)<br>
>        return ErrorV("destination of '=' must be a variable");<br>
>      // Codegen the RHS.<br>
><br>
> Modified: llvm/trunk/examples/Kaleidoscope/Chapter8/CMakeLists.txt<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter8/CMakeLists.txt?rev=235541&r1=235540&r2=235541&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter8/CMakeLists.txt?rev=235541&r1=235540&r2=235541&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/examples/Kaleidoscope/Chapter8/CMakeLists.txt (original)<br>
> +++ llvm/trunk/examples/Kaleidoscope/Chapter8/CMakeLists.txt Wed Apr 22 15:41:34 2015<br>
> @@ -7,10 +7,6 @@ set(LLVM_LINK_COMPONENTS<br>
>    native<br>
>    )<br>
><br>
> -set(LLVM_REQUIRES_RTTI 1)<br>
> -<br>
> -set(LLVM_BUILD_EXAMPLES OFF)<br>
> -<br>
>  add_kaleidoscope_chapter(Kaleidoscope-Ch8<br>
>    toy.cpp<br>
>    )<br>
><br>
> Modified: llvm/trunk/examples/Kaleidoscope/Chapter8/Makefile<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter8/Makefile?rev=235541&r1=235540&r2=235541&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter8/Makefile?rev=235541&r1=235540&r2=235541&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/examples/Kaleidoscope/Chapter8/Makefile (original)<br>
> +++ llvm/trunk/examples/Kaleidoscope/Chapter8/Makefile Wed Apr 22 15:41:34 2015<br>
> @@ -9,7 +9,6 @@<br>
>  LEVEL = ../../..<br>
>  TOOLNAME = Kaleidoscope-Ch8<br>
>  EXAMPLE_TOOL = 1<br>
> -REQUIRES_RTTI := 1<br>
><br>
>  LINK_COMPONENTS := core mcjit native<br>
><br>
><br>
> Modified: llvm/trunk/examples/Kaleidoscope/Chapter8/toy.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter8/toy.cpp?rev=235541&r1=235540&r2=235541&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Chapter8/toy.cpp?rev=235541&r1=235540&r2=235541&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/examples/Kaleidoscope/Chapter8/toy.cpp (original)<br>
> +++ llvm/trunk/examples/Kaleidoscope/Chapter8/toy.cpp Wed Apr 22 15:41:34 2015<br>
> @@ -908,7 +908,10 @@ Value *BinaryExprAST::Codegen() {<br>
>    // Special case '=' because we don't want to emit the LHS as an expression.<br>
>    if (Op == '=') {<br>
>      // Assignment requires the LHS to be an identifier.<br>
> -    VariableExprAST *LHSE = dynamic_cast<VariableExprAST *>(LHS);<br>
> +    // This assume we're building without RTTI because LLVM builds that way by<br>
> +    // default.  If you build LLVM with RTTI this can be changed to a<br>
> +    // dynamic_cast for automatic error checking.<br>
> +    VariableExprAST *LHSE = reinterpret_cast<VariableExprAST *>(LHS);<br>
<br>
</div></div>Same here<br>
<div class="HOEnZb"><div class="h5"><br>
>      if (!LHSE)<br>
>        return ErrorV("destination of '=' must be a variable");<br>
>      // Codegen the RHS.<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">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>
</div></div></blockquote></div><br></div>