diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/s390/s390.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/s390/hotpatch-compile-8.c | 23 |
4 files changed, 35 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c31875d0903..e0293c5096f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-02-13 Dominik Vogt <vogt@linux.vnet.ibm.com> + + * config/s390/s390.c (s390_asm_output_function_label): Fix crash + caused by bad second argument to warning_at() with -mhotpatch and + nested functions (e.g. with gfortran). + 2014-02-13 Richard Sandiford <rdsandiford@googlemail.com> * opts.c (option_name): Remove "enabled by default" rider. diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 993ed8434f6..7a79286c9b4 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -5305,9 +5305,8 @@ s390_asm_output_function_label (FILE *asm_out_file, const char *fname, if (hotpatch_trampoline_halfwords >= 0 && decl_function_context (decl) != NULL_TREE) { - warning_at (0, DECL_SOURCE_LOCATION (decl), - "hotpatch_prologue is not compatible with nested" - " function"); + warning_at (DECL_SOURCE_LOCATION (decl), OPT_mhotpatch, + "hotpatching is not compatible with nested functions"); hotpatch_trampoline_halfwords = -1; } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 803207cfc64..392986f4f8f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-02-13 Dominik Vogt <vogt@linux.vnet.ibm.com> + + * gcc.target/s390/hotpatch-compile-8.c: New test. + 2014-02-13 Richard Sandiford <rdsandiford@googlemail.com> * gcc.dg/pr59605.c: Convert to a compile test. Protect MAX_COPY diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-compile-8.c b/gcc/testsuite/gcc.target/s390/hotpatch-compile-8.c new file mode 100644 index 00000000000..489fc5dd9f0 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/hotpatch-compile-8.c @@ -0,0 +1,23 @@ +/* Functional tests for the function hotpatching feature. */ + +/* { dg-do run } */ +/* { dg-options "-O3 -mzarch -mhotpatch" } */ + +#include <stdio.h> + +int hp1(void) +{ + int nested1(void) /* { dg-warning "hotpatching is not compatible with nested functions" } */ + { return 1; } + + __attribute__ ((hotpatch)) + int nested2(void) /* { dg-warning "hotpatching is not compatible with nested functions" } */ + { return 1; } + + return nested1() - nested2(); +} + +int main (void) +{ + return hp1(); +} |