re PR target/85984 (ICE in create_pseudo_cfg, at dwarf2cfi.c:2874)

PR target/85984
	* bb-reorder.c (pass_partition_blocks::gate): Return false for
	functions with naked attribute.

	* gcc.target/i386/pr85984.c: New test.

From-SVN: r261037
This commit is contained in:
Jakub Jelinek 2018-05-31 21:49:54 +02:00 committed by Jakub Jelinek
parent 8b8003ed54
commit 28c84b6247
4 changed files with 32 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2018-05-31 Jakub Jelinek <jakub@redhat.com>
PR target/85984
* bb-reorder.c (pass_partition_blocks::gate): Return false for
functions with naked attribute.
2018-05-31 Uros Bizjak <ubizjak@gmail.com>
* config/i386/sse.md (avx_vec_concat<mode>):

View file

@ -2928,8 +2928,8 @@ pass_partition_blocks::gate (function *fun)
{
/* The optimization to partition hot/cold basic blocks into separate
sections of the .o file does not work well with linkonce or with
user defined section attributes. Don't call it if either case
arises. */
user defined section attributes or with naked attribute. Don't call
it if either case arises. */
return (flag_reorder_blocks_and_partition
&& optimize
/* See pass_reorder_blocks::gate. We should not partition if
@ -2937,6 +2937,7 @@ pass_partition_blocks::gate (function *fun)
&& optimize_function_for_speed_p (fun)
&& !DECL_COMDAT_GROUP (current_function_decl)
&& !lookup_attribute ("section", DECL_ATTRIBUTES (fun->decl))
&& !lookup_attribute ("naked", DECL_ATTRIBUTES (fun->decl))
/* Workaround a bug in GDB where read_partial_die doesn't cope
with DIEs with DW_AT_ranges, see PR81115. */
&& !(in_lto_p && MAIN_NAME_P (DECL_NAME (fun->decl))));

View file

@ -1,3 +1,8 @@
2018-05-31 Jakub Jelinek <jakub@redhat.com>
PR target/85984
* gcc.target/i386/pr85984.c: New test.
2018-05-31 Martin Sebor <msebor@redhat.com>
PR c/82063

View file

@ -0,0 +1,18 @@
/* PR target/85984 */
/* { dg-do compile } */
/* { dg-options "-O2" } */
int foo (void);
void __attribute__((naked))
bar (void)
{
if (!foo ())
__builtin_abort ();
}
void
baz (void)
{
bar ();
}