This code works fine when no optimization flag are set:
#include <cstdio>
int main(){
float *ptr = ({float var[10] = {1,2,3,4,5,6,7,8,9,10}; var;});
float *ptr1 = ({float var[10]; for(int i_=0;i_<10;i_++)var[i_]=i_+1; var;});
float *ptr2 = ({float var[10]; var[4]=5; var;});
printf("\n value = %f %f %f",ptr[4],ptr1[4],ptr2[4]);
}
It returns 5 5 5 as expected.
But when optimization flag are set, it returns 5 0 5.
ptr1 have problem something related to the loop. Why?
Maybe its a bug?
I'm using the latest, 4.8.0, tested x64, x86 as well other builds. All same behaviour.
-pedanticis off by default on Coliru. - chris