From: Richard Biener Date: Tue, 13 May 2014 11:04:44 +0000 (+0000) Subject: re PR ipa/60973 (Invalid propagation of a tail call in devirt pass) X-Git-Tag: releases/gcc-5.1.0~7617 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6b77934ee0a2d22031db48fe6ce0f42154ac21dc;p=thirdparty%2Fgcc.git re PR ipa/60973 (Invalid propagation of a tail call in devirt pass) 2014-05-13 Richard Biener PR ipa/60973 * tree-inline.c (remap_gimple_stmt): Clear tail call flag, it needs revisiting whether the call still may be tail-called. From-SVN: r210364 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 210eeb4cc125..663acf16cbfc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-05-13 Richard Biener + + PR ipa/60973 + * tree-inline.c (remap_gimple_stmt): Clear tail call flag, + it needs revisiting whether the call still may be tail-called. + 2014-05-13 Richard Sandiford * rtl.def (SYMBOL_REF): Remove middle "0" field. diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 987e81506b7c..9207e9f7296c 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -1483,6 +1483,11 @@ remap_gimple_stmt (gimple stmt, copy_body_data *id) /* Create a new deep copy of the statement. */ copy = gimple_copy (stmt); + /* Clear flags that need revisiting. */ + if (is_gimple_call (copy) + && gimple_call_tail_p (copy)) + gimple_call_set_tail (copy, false); + /* Remap the region numbers for __builtin_eh_{pointer,filter}, RESX and EH_DISPATCH. */ if (id->eh_map)