Commit 8b316874 by Jakub Jelinek Committed by Jakub Jelinek

re PR middle-end/49675 (ICE (segfault) with -finstrument-functions)

	PR middle-end/49675
	* tree.c (build_common_builtin_nodes): Register
	__builtin_return_address, __cyg_profile_func_enter
	and __cyg_profile_func_exit.

	* gfortran.dg/pr49675.f90: New test.

From-SVN: r176417
parent 9f68560b
2011-07-18 Jakub Jelinek <jakub@redhat.com>
PR middle-end/49675
* tree.c (build_common_builtin_nodes): Register
__builtin_return_address, __cyg_profile_func_enter
and __cyg_profile_func_exit.
2011-07-18 Richard Henderson <rth@redhat.com> 2011-07-18 Richard Henderson <rth@redhat.com>
* bb-reorder.c (emit_barrier_after_bb): Split out of ... * bb-reorder.c (emit_barrier_after_bb): Split out of ...
......
2011-07-18 Jakub Jelinek <jakub@redhat.com>
PR middle-end/49675
* gfortran.dg/pr49675.f90: New test.
2011-07-18 Richard Guenther <rguenther@suse.de> 2011-07-18 Richard Guenther <rguenther@suse.de>
* gcc.dg/torture/20110718-1.c: New testcase. * gcc.dg/torture/20110718-1.c: New testcase.
......
! PR middle-end/49675
! { dg-do compile }
! { dg-options "-finstrument-functions" }
end
! { dg-final { scan-assembler "__cyg_profile_func_enter" } }
! { dg-final { scan-assembler "__cyg_profile_func_exit" } }
...@@ -9546,6 +9546,31 @@ build_common_builtin_nodes (void) ...@@ -9546,6 +9546,31 @@ build_common_builtin_nodes (void)
? "_Unwind_SjLj_Resume" : "_Unwind_Resume"), ? "_Unwind_SjLj_Resume" : "_Unwind_Resume"),
ECF_NORETURN); ECF_NORETURN);
if (built_in_decls[BUILT_IN_RETURN_ADDRESS] == NULL_TREE)
{
ftype = build_function_type_list (ptr_type_node, integer_type_node,
NULL_TREE);
local_define_builtin ("__builtin_return_address", ftype,
BUILT_IN_RETURN_ADDRESS,
"__builtin_return_address",
ECF_NOTHROW);
}
if (built_in_decls[BUILT_IN_PROFILE_FUNC_ENTER] == NULL_TREE
|| built_in_decls[BUILT_IN_PROFILE_FUNC_EXIT] == NULL_TREE)
{
ftype = build_function_type_list (void_type_node, ptr_type_node,
ptr_type_node, NULL_TREE);
if (built_in_decls[BUILT_IN_PROFILE_FUNC_ENTER] == NULL_TREE)
local_define_builtin ("__cyg_profile_func_enter", ftype,
BUILT_IN_PROFILE_FUNC_ENTER,
"__cyg_profile_func_enter", 0);
if (built_in_decls[BUILT_IN_PROFILE_FUNC_EXIT] == NULL_TREE)
local_define_builtin ("__cyg_profile_func_exit", ftype,
BUILT_IN_PROFILE_FUNC_EXIT,
"__cyg_profile_func_exit", 0);
}
/* The exception object and filter values from the runtime. The argument /* The exception object and filter values from the runtime. The argument
must be zero before exception lowering, i.e. from the front end. After must be zero before exception lowering, i.e. from the front end. After
exception lowering, it will be the region number for the exception exception lowering, it will be the region number for the exception
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment