int *p; *p; /* has no side effects and should be optimized away, */ /* a warning is justified here as it is probably a */ /* mistake */ (void) *p; /* has no side effects and should be optimized away, */ /* no warning should be generated */ volatile int *p; *p; /* has side effects and must not be optimized away */