Unmodified formals can not point to local variables. It is NOT treated so in
GCC:

Example:

void bar(int* );
int foo(int* p, int *q)
{
   int local, i;
   bar(&local);

   for(i = 0; i < 100; i++)
   {
       *q += local;    // local, *q not hoisted, *q = not sinked
   }

   return local;
}


-- 
           Summary: Conservative aliasing related unmodified formals
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: xinliangli at gmail dot com


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

Reply via email to