https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97565

--- Comment #1 from Sergei Trofimovich <slyfox at gcc dot gnu.org> ---
If I change 'abort' name to 'foo' then test works fine:

$ cat abort.cpp
extern "C" void foo(void) {
  foo();
}
$ cat main.cpp
extern "C" void foo(void);

int main(int argc, char * argv[]) {
    foo();
}
$ cat o.res
2
main.o 2
203 3cd4d3b7ff8d0f59 PREVAILING_DEF main
206 3cd4d3b7ff8d0f59 RESOLVED_IR foo
abort.o 1
191 2179600d205ec4af PREVAILING_DEF_IRONLY foo

Looks like 'abort' is considered a builtin of some sort that conflicts with
user's override in a way that breaks LTO streaming of type declaration.

Reply via email to