------- Comment #26 from rguenth at gcc dot gnu dot org 2008-11-22 20:41 ------- Even with ref-all pointers we end up with
<bb 5>: # addr.0{0}_1 = PHI <&va_arg_tmp.3(3), addr.0{0}_22(4)> # ap_38 = PHI <ap_56(3), ap_57(4)> # va_arg_tmp.3_39 = PHI <va_arg_tmp.3_55(3), va_arg_tmp.3_50(4)> addr.8_25 = (struct S2848 * {ref-all}) addr.0{0}_1; # VUSE <fails_48, ap_38, SMT.26_53> # arg_59 = VDEF <arg_58(D)> arg = *addr.8_25; where the last stmt misses a VUSE of va_arg_tmp.3. This looks like a bug in alias computation. I have a fix for that parts. The gimplify_va_arg still needs to use ref-all pointers properly. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38151