[LLVMdev] llc with -march=mips failed to compile va_start()/va_end()/va_arg()

Jim Grosbach grosbach at apple.com
Mon Aug 15 10:52:24 PDT 2011


On Aug 15, 2011, at 9:42 AM, Eli Friedman wrote:

> On Mon, Aug 15, 2011 at 2:18 AM, Leo Chen. <leo.q.chen at gmail.com> wrote:
>> Hi,
>> 
>> I am using llc (llvm 2.9) to generate the MIPS assembly
> 
> I would suggest trying trunk; there have been a lot of improvements
> recently to the MIPS backend.
> 

I agree. Also, make sure you're using a MIPS targeted llvm-gcc build. It's unclear from your usage example how llvm-gcc was configured. You can't reliably use an x86 llvm-gcc to generate bitcode and pass that to llc targeting a difference arch.

-Jim

> -Eli
> 
>> but failed
>> when compile any codes
>> with va_start()/va_end()/va_arg().
>> 
>> Here is the minimal step to reproduce the failure:
>> llvm-gcc-4.2 -emit-llvm hello.c -c -o hello.bc
>> llc -march=mips hello.bc -o hello.s
>> 
>> llc show this erroe message:
>> LLVM ERROR: Cannot select: 0xa1873a0: ch = vaend 0xa187290:1,
>> 0xa185ae0, 0xa187318 [ID=38]
>>  0xa185ae0: i32 = FrameIndex<1> [ORD=3] [ID=10]
>> 
>> I try the same thing on arch x86/ARM like this, and they just work fine:
>> llc hello.bc -o hello.s  //x86
>> llc -march=arm hello.bc -o hello.s  //ARM
>> 
>> Can anyone tell me whether it's a bug so that I could submit the bug
>> on Bugzilla?
>> And any suggestion about how to fix this problem is appreciated.
>> 
>> ----------- hello.c --------------------------
>> #include <stdio.h>
>> #include <stdarg.h>
>> void print_msg( const char *fmt, ... )
>> {
>>    va_list ap;
>>    va_start( ap, fmt );
>>    vprintf( fmt, ap );
>>    va_end( ap );
>> }
>> int main()
>> {
>>    print_msg( "hello\n" );
>>    return 0;
>> }
>> -----------------------------------------------
>> 
>> 
>> Regards,
>> Leo
>> _______________________________________________
>> 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