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

           Summary: g++ calls without optimisation incorrectly from
                    explicitly optimised code
           Product: gcc
           Version: 4.4.5
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: vas.gurev...@gmail.com


Created attachment 23116
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23116
preprocessed source

When build this code without optimisation, like that,
g++ -o optimizetest optimizetest.cpp
looks like function call from optimised function passes wrong parameters to
static inline function

#include <stdio.h>

static inline void bar(int a)
{
    printf("%d\n", a);
}

void foo() __attribute__((optimize("O2")));

void foo()
{
    int a = 10;
    bar(a);
}

int main(int, char**)
{
    foo();
    return 0;
}

If compile with more than 0 optimisation level this works fine and prints 10,
otherwise when compile without optimisation this produces garbage instead of
10.

Reply via email to