In struct barstruct { char const* some_string; };
void changethepointer(struct barstruct***); void baz() { struct barstruct bar1; struct barstruct* barptr = &bar1; struct barstruct** barptr2 = &barptr; changethepointer(&barptr2); barptr->some_string = "Everything OK"; } the store to barptr->some_string is removed because points-to figures that barptr points to bar1, which it doesn't necessarily do after the call to changethepointer - it should point to anything. -- Summary: points-to results wrong Product: gcc Version: 4.3.1 Status: UNCONFIRMED Keywords: wrong-code, alias Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rguenth at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36400