Commit 776bebcd by Jakub Jelinek Committed by Jakub Jelinek

re PR middle-end/48722 (ICE in df_refs_verify() with -mno-push-args)

	PR middle-end/48722
	* emit-rtl.c (unshare_all_rtl_again): For CALL_INSNs,
	reset_used_flags also in CALL_INSN_FUNCTION_USAGE.
	(verify_rtl_sharing): Likewise and verify_rtx_sharing
	in there too.
	(unshare_all_rtl_in_chain): For CALL_INSNs
	copy_rtx_if_shared also CALL_INSN_FUNCTION_USAGE.

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

From-SVN: r178208
parent 8934a584
2011-08-29 Jakub Jelinek <jakub@redhat.com>
PR middle-end/48722
* emit-rtl.c (unshare_all_rtl_again): For CALL_INSNs,
reset_used_flags also in CALL_INSN_FUNCTION_USAGE.
(verify_rtl_sharing): Likewise and verify_rtx_sharing
in there too.
(unshare_all_rtl_in_chain): For CALL_INSNs
copy_rtx_if_shared also CALL_INSN_FUNCTION_USAGE.
2011-08-29 Richard Guenther <rguenther@suse.de> 2011-08-29 Richard Guenther <rguenther@suse.de>
* gimple-fold.c (gimple_fold_stmt_to_constant_1): Set a location * gimple-fold.c (gimple_fold_stmt_to_constant_1): Set a location
...@@ -2444,6 +2444,8 @@ unshare_all_rtl_again (rtx insn) ...@@ -2444,6 +2444,8 @@ unshare_all_rtl_again (rtx insn)
{ {
reset_used_flags (PATTERN (p)); reset_used_flags (PATTERN (p));
reset_used_flags (REG_NOTES (p)); reset_used_flags (REG_NOTES (p));
if (CALL_P (p))
reset_used_flags (CALL_INSN_FUNCTION_USAGE (p));
} }
/* Make sure that virtual stack slots are not shared. */ /* Make sure that virtual stack slots are not shared. */
...@@ -2611,6 +2613,8 @@ verify_rtl_sharing (void) ...@@ -2611,6 +2613,8 @@ verify_rtl_sharing (void)
{ {
reset_used_flags (PATTERN (p)); reset_used_flags (PATTERN (p));
reset_used_flags (REG_NOTES (p)); reset_used_flags (REG_NOTES (p));
if (CALL_P (p))
reset_used_flags (CALL_INSN_FUNCTION_USAGE (p));
if (GET_CODE (PATTERN (p)) == SEQUENCE) if (GET_CODE (PATTERN (p)) == SEQUENCE)
{ {
int i; int i;
...@@ -2622,6 +2626,8 @@ verify_rtl_sharing (void) ...@@ -2622,6 +2626,8 @@ verify_rtl_sharing (void)
gcc_assert (INSN_P (q)); gcc_assert (INSN_P (q));
reset_used_flags (PATTERN (q)); reset_used_flags (PATTERN (q));
reset_used_flags (REG_NOTES (q)); reset_used_flags (REG_NOTES (q));
if (CALL_P (q))
reset_used_flags (CALL_INSN_FUNCTION_USAGE (q));
} }
} }
} }
...@@ -2631,6 +2637,8 @@ verify_rtl_sharing (void) ...@@ -2631,6 +2637,8 @@ verify_rtl_sharing (void)
{ {
verify_rtx_sharing (PATTERN (p), p); verify_rtx_sharing (PATTERN (p), p);
verify_rtx_sharing (REG_NOTES (p), p); verify_rtx_sharing (REG_NOTES (p), p);
if (CALL_P (p))
verify_rtx_sharing (CALL_INSN_FUNCTION_USAGE (p), p);
} }
timevar_pop (TV_VERIFY_RTL_SHARING); timevar_pop (TV_VERIFY_RTL_SHARING);
...@@ -2647,6 +2655,9 @@ unshare_all_rtl_in_chain (rtx insn) ...@@ -2647,6 +2655,9 @@ unshare_all_rtl_in_chain (rtx insn)
{ {
PATTERN (insn) = copy_rtx_if_shared (PATTERN (insn)); PATTERN (insn) = copy_rtx_if_shared (PATTERN (insn));
REG_NOTES (insn) = copy_rtx_if_shared (REG_NOTES (insn)); REG_NOTES (insn) = copy_rtx_if_shared (REG_NOTES (insn));
if (CALL_P (insn))
CALL_INSN_FUNCTION_USAGE (insn)
= copy_rtx_if_shared (CALL_INSN_FUNCTION_USAGE (insn));
} }
} }
......
2011-08-29 Jakub Jelinek <jakub@redhat.com>
PR middle-end/48722
* gcc.target/i386/pr48722.c: New test.
2011-08-29 Thomas Koenig <tkoenig@gcc.gnu.org> 2011-08-29 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/50192 PR libfortran/50192
......
/* PR middle-end/48722 */
/* { dg-do compile } */
/* { dg-options "-Os -mno-push-args" } */
extern long long a;
extern int b;
void bar (int, long long);
void
foo (void)
{
bar (a > 0x85, b);
}
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