https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112665
--- Comment #1 from 신재형 <shinwogud12 at gmail dot com> --- (In reply to 신재형 from comment #0) > The provided C code includes a main function and a helper function i(), > along with a struct definition and several global variables. The code > primarily involves conditional logic and a loop to manipulate these global > variables. > > PoC(Proof of Concept) > > #include <stdint.h> > #include <stdio.h> > > struct a { > uint64_t b; > }; > int c = 1; > int d, e, h, f, g, l = 0; > volatile struct a k[1]; > > void i() { > for (; l < 1; l++) > f = d <= 0; > } > > int main() { > for (e = 9; e; --e){ > i(); > c && (g = ((int16_t)(k[0], f)) <= e); > } > printf("g_200 value %d\n", g); > return 0; > } > > > Struct Definition > > > struct a { > uint64_t b; > }; > > - Defines a struct a with a single member b of type > uint64_t. > > Global Variables > > > int c = 1; > int d, e, h, f, g, l = 0; > volatile struct a k[1]; > > > - A loop that runs once, setting **`f`** to 1 if **`d`** is less than or > equal to 0. > > Main Function > > > cCopy code > int main() { > for (e = 9; e; --e){ > i(); > c && (g = ((int16_t)(k[0], f)) <= e); > } > printf("g_200 value %d\n", g); > return 0; > } > > > > - A loop starts with e at 9, decrementing until it reaches 0. > - Calls function i(), which sets f based on the condition d > <= 0 > - The expression c && (g = ((int16_t)(k[0], f)) <= e) uses the comma > operator, resulting in f being evaluated and cast to int16_t. > Since c is always 1, g is set to 1 if f is less than or > equal to e. > - The final value of g is printed. > > ### Expected Result > > - Since d is initialized to 0 and never modified, f will always > be set to 1 in the i() function. > - In the main function, g is set to 1 in each iteration of the loop > because f (which is 1) is always less than or equal to e (which > decrements from 9 to 1). > - The final output of the program will be g_200 value 1. > > Why does optimization level 2 in GCC output 0? > > Godbolt Link: https://www.godbolt.org/z/r6c4oo18a