http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51834
Bug #: 51834 Summary: -Wsequence-point fails when convoluted expressions with multiple side effects are used 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.c int main() { int i=10; i += (i , i++, i) + i; // also invokes UB } prasoon@Prasoon:~/test_code$ gcc -Wsequence-point ub.c 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 gcc even after using that option.