[LLVMdev] Unreachable code executed crash

Nick Lewycky nicholas at mxc.ca
Thu May 6 21:02:55 PDT 2010


Adarsh Yoga wrote:
> I was able to solve that

What was wrong? I wasn't able to reproduce it and would still like to 
teach the verifier whatever it missed.

  but still crashing with the same error saying
> "Unreachable executed". I have attached the output with this mail.

This time you've got:

   %1 = load i32** getelementptr inbounds ({ i32* }* @structobj, i64 0, 
i32 0)

in @temp0 but @structobj is nowhere in the file, which implies that you 
created the GlobalValue but never inserted it.

You can figure this out for yourself by taking the module dump (be sure 
to remove "The Module: " from the beginning) and running llvm-as on it. 
It finds these errors.

Nick

>
> Thanks in advance.
>
> On Thu, May 6, 2010 at 2:38 AM, Nick Lewycky <nicholas at mxc.ca
> <mailto:nicholas at mxc.ca>> wrote:
>
>     Adarsh Yoga wrote:
>
>         Yes. Intially the pass was crashing when the module when the module
>         verifier was running. I was able to solve that and now it is
>         crashing
>         when the bit writer pass is running.
>
>
>     The output is wrong in @thread_pool_init:
>
>     <stdin>:44:27: error: '%4' defined with type 'i1'
>       %5 = getelementptr i32* %4, i64 %indvar         ; <i32*> [#uses=1]
>                               ^
>     where
>
>       %4 = icmp slt i32 %threadnumber, 1              ; <i1> [#uses=2]
>
>     meaning that %4 is an i1 not an i32*. I'm not sure how you managed
>     to do this, and how the verifier didn't catch it. Maybe the %4
>     operand is actually an instruction in another function?
>
>     I'll try to reproduce this and fix the verifier to catch it.
>
>     Nick
>
>         On Wed, May 5, 2010 at 8:39 PM, Nick Lewycky
>         <nlewycky at google.com <mailto:nlewycky at google.com>
>         <mailto:nlewycky at google.com <mailto:nlewycky at google.com>>> wrote:
>
>             On 5 May 2010 17:12, Adarsh Yoga <ayoga at umail.iu.edu
>         <mailto:ayoga at umail.iu.edu>
>         <mailto:ayoga at umail.iu.edu <mailto:ayoga at umail.iu.edu>>> wrote:
>
>                 Hi,
>
>                    I've written a pass that basically does some code
>                 transformations to enable parallel execution of loops.
>         After the
>                 transformation llvm runs BitCode Writer pass , which is
>         aborting
>                 with Unreachable Executed error.
>                 I have attached the input llvm code and the output llvm
>         code for
>                 reference. I am stuck at this problem for a few days
>         now. Please
>                 let me know if you are able to find anything unusual.
>
>
>             Have you tried running the module verifier after your transform,
>             before writing out to bitcode?
>
>             Nick
>
>                 Regards,
>                 Adarsh
>
>                 --
>                 Adarsh Yoga
>                 Graduate Student, Computer Science
>                 Indiana University, Bloomington
>
>                 _______________________________________________
>                 LLVM Developers mailing list
>         LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>
>         <mailto:LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>>
>
>         http://llvm.cs.uiuc.edu
>         http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>
>
>
>         --
>         Adarsh Yoga
>         Graduate Student, Computer Science
>         Indiana University, Bloomington
>
>
>
>         _______________________________________________
>         LLVM Developers mailing list
>         LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>
>         http://llvm.cs.uiuc.edu
>         http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>
>
>
> --
> Adarsh Yoga
> Graduate Student, Computer Science
> Indiana University, Bloomington




More information about the llvm-dev mailing list