[LLVMdev] LLVM-GCC generating too much code from inline assembly

Jim Grosbach grosbach at apple.com
Tue Mar 16 08:35:10 PDT 2010


You may find it helpful to reference http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html. In particular, the information regarding clobbers and constraints.

Generally speaking, it's best not to use inline assembly at all. What are you trying to do that you find it necessary?


On Mar 16, 2010, at 12:30 AM, Fred / Kettch wrote:

> Hi,
> 
> I recently switched to LLVM-GCC 4.2 on OS X, to go around a bug caused by gcc with optimized code. Unfortunately, I ran into another weird problem on LLVM-GCC. In my code, there's a file with a bunch of inline assembly blocks, that worked fine with GCC 4.2. Now, when compiling with LLVM-GCC 4.2, weird things happen.
> 
> Here's an example: (the blocks are larger than that, but a single line will do to show you what's happening)
> __asm {
>    mov ebx, iObject
> }
> 
> When compiling in release, everything goes fine, and the produced assembly looks like this :
> ## InlineAsm Start
> .file "... my filename"
> ## InlineAsm End
> ## InlineAsm Start
> .line 1454
> ## InlineAsm End
> ## InlineAsm Start
> movl -20(%ebp), $ebx
> ## InlineAsm End
> 
> The problem occurs in debug, and the code looks like this :
> ## InlineAsm Start
> .file "... my filename"
> ## InlineAsm End
> ## InlineAsm Start
> .line 1454
> ## InlineAsm End
> ## InlineAsm Start
> movl -20(%ebp), $ebx
> ## InlineAsm End
> movl %ebx, %eax
> movl %eax, -52(%ebp)
> 
> Only the last two lines are added, but since I'm using the eax register for other things in the block, the code keeps writing over it, and end up crashing when I try to really use whatever I did put in eax.
> >From the looks of it, those lines must be here for a reason, but I'm wondering how to avoid generating them, as it's causing some major problems in my code (at least in this specific file). Is there some way to disable that ?
> 
> Thanks,
> Fred
> 
> 
> _______________________________________________
> 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