How can I turn this optimization off?

Phung

On Wed, Oct 6, 2010 at 10:04 PM, Jakub Jelinek <ja...@redhat.com> wrote:
> On Wed, Oct 06, 2010 at 09:59:29PM +0700, Phung Nguyen wrote:
>> When porting GCC on xc16x, I met a problem with a constant string. The
>> following is the C code:
>> #include "stdio.h"
>>
>> int main () {
>>
>>       printf ("c\n");
>> }
>> And the following is the generated assembly:
>>       .xc16x
>>
>>       .section .rodata
>>
>> .LC0:
>>       .ascii "c\0"
>>       .section .text
>>       .align 1
>>       .global _main
>> _main:
>>        mov  [-r0],r1
>>        mov  r1,r0
>>
>>       mov r8,#SOF:.LC0
>>       calla cc_UC,_puts
>>        mov  r1,[r0+]
>> ret
>>
>> where there is no '\n' in the constant string .LC0 any more. However,
>> when I change the string into "%c\n" (with a character passed), the
>> constant string .LC0 becomes .ascii "c\12\0"
>>
>> Is there any idea about this kind of problem? Where did I got the mistake?
>
> Why do you think there is any problem?  printf ("c\n") is quivalent
> to cheaper puts ("c"), so when optimizing gcc uses the latter instead of
> former.
>
>        Jakub
>

Reply via email to