http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55646

             Bug #: 55646
           Summary: Array of data as argument
    Classification: Unclassified
           Product: gcc
           Version: 4.7.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: bratsi...@gmail.com


If wrote this:
> fwrite("\xAA\xBB\xCC\x0A", 1, 4, stdout);
gcc put in .data/.text section one piece of data, something like that:
> .string       "\252\273\314\n"

But if wrote this:
> fwrite((uint8_t[]){0xAA,0xBB,0xCC,0x0A}, 1, 4, stdout);
gcc will put the data bit by bit in stack, something like that:
> movb  $-86, (%rsp)
> movb  $-69, 1(%rsp)
> movb  $-52, 2(%rsp)
> movb  $10, 3(%rsp)

P.S. Build with -O3

Reply via email to