aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-01-16 20:15:46 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2014-01-16 20:15:46 +0100
commit2af4ea89e5630063b961c4d026412bb7d5aa8832 (patch)
treed66a8149ead9cde238739a294f2a0fb1b04f8493 /gcc
parente4e6a4af0b6dca48bb0d7207da651c5be4ff8256 (diff)
downloadgcc-2af4ea89e5630063b961c4d026412bb7d5aa8832.zip
gcc-2af4ea89e5630063b961c4d026412bb7d5aa8832.tar.gz
gcc-2af4ea89e5630063b961c4d026412bb7d5aa8832.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.target/i386/pr9771-1.c12
2 files changed, 18 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 868593b..b874c57 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2014-01-16 Jakub Jelinek <jakub@redhat.com>
+
+ 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 <nickc@redhat.com>
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 520259c..9fa21ff 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;