https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126712
Iain Buclaw <ibuclaw at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ibuclaw at gcc dot gnu.org
--- Comment #3 from Iain Buclaw <ibuclaw at gcc dot gnu.org> ---
If you want to test equivalent C program, created one here.
https://compiler-explorer.com/z/dMWMYv75n
---
int counter;
int never;
__attribute__((weak)) int firstFunction(int) __asm__("__start");
int firstFunction(int value)
{
counter += value;
return counter;
}
__attribute__((weak)) int secondFunction(int);
int secondFunction(int value)
{
counter += value;
return counter;
}
__attribute__((nothrow)) int callLocal(int);
int callLocal(int value)
{
if (never)
return firstFunction(value);
return secondFunction(value);
}
int main(void)
{
return callLocal(1) != 1;
}