Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Does gcc make any kind of assumptions about signed-overflow? For example, would it eliminate the comparison in this code:

  int8_t i;

  /* ... */

  i += 1;

  if (i == 0) {
    /* ... */
  }


Yes, it'll exploit the fact that signed overflow is undefined.

    int incr(int i) {
      int old = i;
      i += 1;
      if (i < old) return 1;
      return 0;
    }
GCC optimizes this to 'return 0;'.

EDIT: Updated to a better example.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: