I found a bug in gcc. Reproducible using:

Code:
#include <stdio.h>

const char *usage(int test)
{
    char s[15];
    
    sprintf(s, "%d\n", test);
    return s;
}

void main(void)
{
    int a;
    
    a += 100;
    printf("a is %s\n", usage(a));
}
Expected result is "a is 100" but instead it prints "a is"