https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51836
Eric Gallager <egallager at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |diagnostic CC| |egallager at gcc dot gnu.org --- Comment #1 from Eric Gallager <egallager at gcc dot gnu.org> --- (In reply to Prasoon from comment #0) > Consider the following example > > > int main() > { > int i=10; > i += (i , i++, i) + i; // also invokes UB > } > > > prasoon@Prasoon:~/test_code$ cat ub.cpp > int main() > { > int i=10; > i += (i , i++, i) + i; // also invokes UB > } > prasoon@Prasoon:~/test_code$ g++ -Wsequence-point ub.cpp > prasoon@Prasoon:~/test_code$ > > I don't get any warning like 'operation on 'i' may be undefined. > This one now warns: $ /usr/local/bin/g++ -c -Wsequence-point 51836.cc 51836.cc: In function ‘int main()’: 51836.cc:4:13: warning: operation on ‘i’ may be undefined [-Wsequence-point] i += (i , i++, i) + i; // also invokes UB ~^~ $ > Another similar example > > int main() > { > char *str; > char array[100]= "Hello"; > if((str = array)[0] == 'H'){ > //do something > } > } > > As per my understanding (str = array)[0] also invokes UB but no warning is > given by g++ even after using that option. > > Another example is > > int main() > { > int a = 10; > ++a = 100; // UB > } These next ones still don't warn, although I think they might be duplicates of other bugs. Your 3rd example looks like bug 57039 but the example in that one now warns. Gonna leave this UNCONFIRMED until I finish searching for duplicates.