s390.c (s390_asm_output_function_label): Fix crash caused by bad second argument to warning_at() with -mhotpatch and...

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  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* gcc.target/s390/hotpatch-compile-8.c: New test.

From-SVN: r207753
This commit is contained in:
Dominik Vogt 2014-02-13 12:38:52 +00:00 committed by Andreas Krebbel
parent 37eb01c282
commit e697d1191c
4 changed files with 35 additions and 3 deletions

View file

@ -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.

View file

@ -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;
}
}

View file

@ -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

View file

@ -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();
}