[Bug c/84607] New: Side effects discarded in address computation inside 'if'

2018-02-27 Thread stephen.dolan at cl dot cam.ac.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84607

Bug ID: 84607
   Summary: Side effects discarded in address computation inside
'if'
   Product: gcc
   Version: 7.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: stephen.dolan at cl dot cam.ac.uk
  Target Milestone: ---

This program should print "hello" and "goodbye", but only prints "goodbye":

#include 
int a[10];
int foo() {
  puts("hello");
  return 0;
}
int main() {
  if (&a[foo()])
puts("goodbye");
  return 0;
}

I tested locally with gcc 7.2.0 (Debian 7.2.0-19). I also tried the program
with the various gcc versions on godbolt.org, and the problem seems to exist in
all versions since gcc 6 (gcc 5.5 is unaffected). The presence or absence of
-O3 doesn't seem to make a difference.

[Bug c/84607] [6/7 Regression] Side effects discarded in address computation inside 'if'

2018-02-28 Thread stephen.dolan at cl dot cam.ac.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84607

--- Comment #4 from Stephen Dolan  ---
Thanks for the quick fix!