aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Bosscher <steven@gcc.gnu.org>2010-05-18 13:51:50 +0000
committerSteven Bosscher <steven@gcc.gnu.org>2010-05-18 13:51:50 +0000
commit174f391c129fd81216a876c26323a8ab0b592285 (patch)
treef488491cc0db975c3f22826f01c0278277d1185d
parent1307793110d6fc2949011a498e289d817d817426 (diff)
downloadgcc-174f391c129fd81216a876c26323a8ab0b592285.zip
gcc-174f391c129fd81216a876c26323a8ab0b592285.tar.gz
gcc-174f391c129fd81216a876c26323a8ab0b592285.tar.bz2
re PR lto/44184 ("asm goto" does not work with LTO)
gcc/ PR lto/44184 * lto-streamer-out.c (output_gimple_stmt): Output number of labels in a GIMPLE_ASM. * lto-streamer-in.c (input_gimple_stmt): Read number of labels in a GIMPLE_ASM. testsuite/ PR lto/44184 * gcc.dg/lto/20100518_0.c: New test. From-SVN: r159531
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/lto-streamer-in.c1
-rw-r--r--gcc/lto-streamer-out.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/lto/20100518_0.c13
5 files changed, 28 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 064e8f1..cc7419b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2010-05-18 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR lto/44184
+ * lto-streamer-out.c (output_gimple_stmt): Output number of labels
+ in a GIMPLE_ASM.
+ * lto-streamer-in.c (input_gimple_stmt): Read number of labels
+ in a GIMPLE_ASM.
+
2010-05-18 Jakub Jelinek <jakub@redhat.com>
PR debug/41371
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c
index 5c6658a..123a7a7 100644
--- a/gcc/lto-streamer-in.c
+++ b/gcc/lto-streamer-in.c
@@ -1044,6 +1044,7 @@ input_gimple_stmt (struct lto_input_block *ib, struct data_in *data_in,
stmt->gimple_asm.ni = lto_input_uleb128 (ib);
stmt->gimple_asm.no = lto_input_uleb128 (ib);
stmt->gimple_asm.nc = lto_input_uleb128 (ib);
+ stmt->gimple_asm.nl = lto_input_uleb128 (ib);
str = input_string_cst (data_in, ib);
stmt->gimple_asm.string = TREE_STRING_POINTER (str);
}
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index b90c9daa..4d59832 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -1702,6 +1702,7 @@ output_gimple_stmt (struct output_block *ob, gimple stmt)
lto_output_uleb128_stream (ob->main_stream, gimple_asm_ninputs (stmt));
lto_output_uleb128_stream (ob->main_stream, gimple_asm_noutputs (stmt));
lto_output_uleb128_stream (ob->main_stream, gimple_asm_nclobbers (stmt));
+ lto_output_uleb128_stream (ob->main_stream, gimple_asm_nlabels (stmt));
output_string (ob, ob->main_stream, gimple_asm_string (stmt));
/* Fallthru */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1711a49..609f84b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-05-18 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR lto/44184
+ * gcc.dg/lto/20100518_0.c: New test.
+
2010-05-18 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/specs/lto3.ads: Add missing dg-options.
diff --git a/gcc/testsuite/gcc.dg/lto/20100518_0.c b/gcc/testsuite/gcc.dg/lto/20100518_0.c
new file mode 100644
index 0000000..5aea2d6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20100518_0.c
@@ -0,0 +1,13 @@
+/* { dg-lto-do assemble } */
+/* Forgot to steam in/out the number of labels for asm goto. PR44184. */
+
+extern int printf (__const char *__restrict __format, ...);
+
+int x = 1;
+int main ()
+{
+ asm goto ("decl %0; jnz %l[a]" :: "m"(x) : "memory" : a);
+ printf ("Hello world\n");
+a:
+ return 0;
+}