int unused_var = 7; int used_var = 7; int unused_func (int v) { return 3 * unused_var; } int __attribute__((noinline)) used_func (int v) { return 2 * used_var; } int main (void) { return used_func (5); } void dummy_func (void) { /* These are here in case the target prepends an underscore to the start of function names. They are inside a dummy function so that they will appear at the end of gcc's assembler output, after the definitions of main() and used_func(), rather than at the beginning of the file. */ __asm__(".ifndef main\n\ .global main\n\ .set main, _main\n\ .endif"); __asm__(".ifndef used_func\n\ .global used_func\n\ .set used_func, _used_func\n\ .endif"); }