mirror of git://gcc.gnu.org/git/gcc.git
re PR ipa/64146 (ipa-icf breaks gold dynamic_test_2 test)
Fix for PR ipa/64146 PR ipa/64146 * ipa-icf.c (sem_function::merge): Check for decl_binds_to_current_def_p is newly added to merge operation. * g++.dg/ipa/pr64146.C: New test. From-SVN: r218860
This commit is contained in:
parent
72c122a20e
commit
544dafa696
|
|
@ -1,3 +1,9 @@
|
|||
2014-12-18 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR ipa/64146
|
||||
* ipa-icf.c (sem_function::merge): Check for
|
||||
decl_binds_to_current_def_p is newly added to merge operation.
|
||||
|
||||
2014-12-18 Bin Cheng <bin.cheng@arm.com>
|
||||
|
||||
PR tree-optimization/62178
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include <list>
|
||||
#include "ipa-icf-gimple.h"
|
||||
#include "ipa-icf.h"
|
||||
#include "varasm.h"
|
||||
|
||||
using namespace ipa_icf_gimple;
|
||||
|
||||
|
|
@ -624,6 +625,13 @@ sem_function::merge (sem_item *alias_item)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!decl_binds_to_current_def_p (alias->decl))
|
||||
{
|
||||
if (dump_file)
|
||||
fprintf (dump_file, "Declaration does not bind to currect definition.\n\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (redirect_callers)
|
||||
{
|
||||
/* If alias is non-overwritable then
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
2014-12-18 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* g++.dg/ipa/pr64146.C: New test.
|
||||
|
||||
2014-12-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* lib/mpx-dg.exp (check_effective_target_mpx): Change into link test.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-require-alias "" } */
|
||||
/* { dg-options "-fpic -fdump-ipa-icf-details -fipa-icf" } */
|
||||
|
||||
extern "C" const char*
|
||||
foo()
|
||||
{
|
||||
return "original";
|
||||
}
|
||||
|
||||
const char*
|
||||
test_foo()
|
||||
{
|
||||
return foo();
|
||||
}
|
||||
|
||||
extern "C" const char*
|
||||
bar()
|
||||
{
|
||||
return "original";
|
||||
}
|
||||
|
||||
const char*
|
||||
test_bar()
|
||||
{
|
||||
return bar();
|
||||
}
|
||||
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
test_foo ();
|
||||
test_bar ();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-ipa-dump-times "Declaration does not bind to currect definition." 2 "icf" } } */
|
||||
/* { dg-final { scan-ipa-dump "Equal symbols: 2" "icf" } } */
|
||||
Loading…
Reference in New Issue