http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51836
Bug #: 51836 Summary: -Wsequence-point fails when convoluted expressions with multiple side effects are used (C++03) Classification: Unclassified Product: gcc Version: 4.4.6 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: prasoonsaurav....@gmail.com 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. 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 }