]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR debug/54694 (internal compiler error: in dwarf2out_frame_debug_expr, at dwarf2o...
authorJakub Jelinek <jakub@redhat.com>
Thu, 16 Jan 2014 19:22:08 +0000 (20:22 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 16 Jan 2014 19:22:08 +0000 (20:22 +0100)
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: r206681

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr9771-1.c

index 23c358b894e8ba6ee132b6001b209270b050443d..c009bf8a0c2a305bcf05f35e33d1b8ff043c25af 100644 (file)
@@ -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  Marek Polacek  <polacek@redhat.com>
 
        Backport from mainline
index 38586fe9725dd990340c26640a2d096fdcc957cc..daad319c379001de9414a06af3e82e41d813d75d 100644 (file)
@@ -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;