From 2af4ea89e5630063b961c4d026412bb7d5aa8832 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 16 Jan 2014 20:15:46 +0100 Subject: [PATCH] re PR debug/54694 (internal compiler error: in dwarf2out_frame_debug_expr, at dwarf2out.c:2387) PR debug/54694 * gcc.target/i386/pr9771-1.c (main): Rename to... (real_main): ... this. Add __asm name "main". (ASMNAME, ASMNAME2, STRING): Define. From-SVN: r206679 --- gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/gcc.target/i386/pr9771-1.c | 12 +++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 868593b1133..b874c5756ac 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2014-01-16 Jakub Jelinek + + PR debug/54694 + * gcc.target/i386/pr9771-1.c (main): Rename to... + (real_main): ... this. Add __asm name "main". + (ASMNAME, ASMNAME2, STRING): Define. + 2014-01-16 Nick Clifton PR middle-end/28865 diff --git a/gcc/testsuite/gcc.target/i386/pr9771-1.c b/gcc/testsuite/gcc.target/i386/pr9771-1.c index 520259c965c..9fa21ff0fa0 100644 --- a/gcc/testsuite/gcc.target/i386/pr9771-1.c +++ b/gcc/testsuite/gcc.target/i386/pr9771-1.c @@ -45,7 +45,17 @@ void test(void) exit(0); } -int main() +/* main usually performs dynamic realignment of the stack in case + _start would fail to properly align the stack, but for dynamic + stack realignment we need frame pointer which is incompatible + with -ffixed-ebp and the global register var. So, cheat here + and hide from the compiler that main is really main. */ +#define ASMNAME(cname) ASMNAME2 (__USER_LABEL_PREFIX__, cname) +#define ASMNAME2(prefix, cname) STRING (prefix) cname +#define STRING(x) #x +int real_main() __asm (ASMNAME ("main")); + +int real_main() { test(); return 0; -- 2.30.2