[LLVMdev] Can't create "main" function?

Duncan Sands baldrick at free.fr
Thu Apr 11 08:34:18 PDT 2013


Hi,

On 10/04/13 20:23, edA-qa mort-ora-y wrote:
> Got it. I had a global_variable also with the name "main". Perhaps
> getOrInsertFuntion needs an assert to check this (it was returning a
> variable I guess rather than a function, and thus static_cast was broken).

if you use LLVM's cast rather than static_cast then you will get an
assertion failure if the cast is wrong.

Ciao, Duncan.

>
> On 10/04/13 20:15, edA-qa mort-ora-y wrote:
>> I'm getting a strange behaviour when I attempt to create my main function:
>>
>>
>> auto func = static_cast<llvm::Function*>(module->getOrInsertFunction(
>> "main",
>> 	types->type_void(), (llvm::Type*)0 ) );
>> ASSERT( func );
>> auto block = llvm::BasicBlock::Create( *context, "entry", func );
>>
>> The "BasicBlock::Create" function is causing a segfault. This only
>> happens if the function is called "main", any other function and it
>> works fine.  Prior to this call I also do this assert to ensure "main"
>> doesn't actually exist:
>> 	ASSERT( !module->getFunction("main" ) );
>>
>> I must be missing something trivial, but I'm not sure what.
>>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>




More information about the llvm-dev mailing list