From 174f391c129fd81216a876c26323a8ab0b592285 Mon Sep 17 00:00:00 2001 From: Steven Bosscher Date: Tue, 18 May 2010 13:51:50 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 8 ++++++++ gcc/lto-streamer-in.c | 1 + gcc/lto-streamer-out.c | 1 + gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/lto/20100518_0.c | 13 +++++++++++++ 5 files changed, 28 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/lto/20100518_0.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 064e8f1aae0..cc7419b8ab0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2010-05-18 Steven Bosscher + + 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 PR debug/41371 diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c index 5c6658a9f99..123a7a7aebf 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 b90c9daa1ee..4d598320046 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 1711a4986aa..609f84b1395 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-05-18 Steven Bosscher + + PR lto/44184 + * gcc.dg/lto/20100518_0.c: New test. + 2010-05-18 Eric Botcazou * 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 00000000000..5aea2d67288 --- /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; +} -- 2.30.2