https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99324
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #3) > Wouldn't it be better to remove the mark_addressable call from build_va_arg > and call {c,cxx}_mark_addressable in the callers instead. Sure, or make it a langhook so c-common code can call the "correct" mark_addresable (there's also c_common_mark_addressable_vec which might suggest that splitting out common c_common_mark_addressable from {c,cxx}_mark_addressable should be viable and use that). > That way we'd also e.g. diagnose invalid (on i686-linux): > register __builtin_va_list ap __asm ("%ebx"); > > void > foo (int a, ...) > { > __builtin_va_arg (ap, int); > }