--- /dev/null
+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");
+}