Hi,

On Thu, Dec 19 2019, Jan Hubicka wrote:
>> On 2019/12/18 23:48, Jan Hubicka wrote:
>> >> The size_info of ipa_size_summary are created by r277424.  It should be
>> >> duplicated for cloned nodes, otherwise self_size and 
>> >> estimated_self_stack_size
>> >> would be 0, causing param large-function-insns and large-function-growth 
>> >> working
>> >> inaccurate when ipa-inline.
>> >>
>> >> gcc/ChangeLog:
>> >>
>> >>   2019-12-18  Luo Xiong Hu  <luo...@linux.ibm.com>
>> >>
>> >>   * ipa-fnsummary.c (ipa_fn_summary_t::duplicate): Copy
>> >>   ipa_size_summary for cloned nodes.
>> >> ---
>> >>   gcc/ipa-fnsummary.c | 5 +++++
>> >>   1 file changed, 5 insertions(+)
>> >>
>> >> diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c
>> >> index a46b1445765..9a01be1708b 100644
>> >> --- a/gcc/ipa-fnsummary.c
>> >> +++ b/gcc/ipa-fnsummary.c
>> >> @@ -868,7 +868,12 @@ ipa_fn_summary_t::duplicate (cgraph_node *src,
>> >>           }
>> >>       }
>> >>     if (!dst->inlined_to)
>> >> +  {
>> >> +    class ipa_size_summary *src_size = ipa_size_summaries->get_create 
>> >> (src);
>> >> +    class ipa_size_summary *dst_size = ipa_size_summaries->get_create 
>> >> (dst);
>> > 
>> > This is intended to happen by the default duplicate method of
>> > ipa_size_summaries via to copy constructor. It seems there is a stupid
>> > pasto and the copy constructor is unused since the default duplicate
>> > implementation does nothing (wonder why).
>> > 
>> > I am testing the attached patch.  Does this help?
>> 
>> Yes, It works.  Thanks for your refine.  The default duplicate 
>> implementation is in
>> symbol-summary.h:template <class T>class function_summary_base::duplicate, I 
>> tried
>> to call duplicate in it, but it will cause a lot of errors as many classes 
>> doesn't
>> implement the virtual duplicate function.  Please commit your patch once 
>> tested pass :)
> Comitted, thanks!

Unfortunately, this has caused Ada LTO bootstrap to fail when the system
compiler is GCC 4.8.5.  Ada LTO bootstrap seems to be fine when the
system compiler is GCC 7.4.1.  I do not know what is the minimal version
which works.

Not sure to what extent this is a problem but we should at least
document it, I guess.  For what it's worth the warnings and errors that
lead to the bootstrap failure are copied below.

Martin


/home/mjambor/gcc/mine/src/gcc/ada/gnatvsn.adb:57:4: warning: type of 
‘gnatvsn__version_string’ does not match original declaration 
[-Wlto-type-mismatch]
   57 |    Version_String : char_array (0 .. Ver_Len_Max - 1);
      |    ^
/home/mjambor/gcc/mine/src/gcc/version.c:34:12: note: array types have 
different bounds
   34 | const char version_string[] = BASEVER DATESTAMP DEVPHASE REVISION;
      |            ^
/home/mjambor/gcc/mine/src/gcc/version.c:34:12: note: ‘version_string’ was 
previously declared here
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-except.adb:1663:17: warning: type 
of ‘ada__exceptions__to_stderr__put_char_stderr__2’ does not match original 
declaration [-Wlto-type-mismatch]
 1663 |       procedure Put_Char_Stderr (C : Character);
      |                 ^
/home/mjambor/gcc/mine/src/gcc/ada/cio.c:126:1: note: type mismatch in 
parameter 1
  126 | put_char_stderr (int c)
      | ^
/home/mjambor/gcc/mine/src/gcc/ada/cio.c:126:1: note: type ‘int’ should match 
type ‘character’
/home/mjambor/gcc/mine/src/gcc/ada/cio.c:126:1: note: ‘put_char_stderr’ was 
previously declared here
/home/mjambor/gcc/mine/src/gcc/ada/raise-gcc.c:542:18: warning: type of 
‘__gnat_others_value’ does not match original declaration [-Wlto-type-mismatch]
  542 | extern const int __gnat_others_value;
      |                  ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:303:4: note: type 
‘character’ should match type ‘const int’
  303 |    Others_Value : constant Character := 'O';
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:303:4: note: 
‘ada__exceptions__exception_propagation__others_valueXn’ was previously 
declared here
/home/mjambor/gcc/mine/src/gcc/ada/raise-gcc.c:545:18: warning: type of 
‘__gnat_all_others_value’ does not match original declaration 
[-Wlto-type-mismatch]
  545 | extern const int __gnat_all_others_value;
      |                  ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:306:4: note: type 
‘character’ should match type ‘const int’
  306 |    All_Others_Value : constant Character := 'A';
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:306:4: note: 
‘ada__exceptions__exception_propagation__all_others_valueXn’ was previously 
declared here
/home/mjambor/gcc/mine/src/gcc/ada/raise-gcc.c:548:18: warning: type of 
‘__gnat_unhandled_others_value’ does not match original declaration 
[-Wlto-type-mismatch]
  548 | extern const int __gnat_unhandled_others_value;
      |                  ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:309:4: note: type 
‘character’ should match type ‘const int’
  309 |    Unhandled_Others_Value : constant Character := 'U';
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:309:4: note: 
‘ada__exceptions__exception_propagation__unhandled_others_valueXn’ was 
previously declared here
/home/mjambor/gcc/mine/src/gcc/ada/init.c:100:13: warning: type of 
‘ada__exceptions__raise_from_signal_handle ’ does not match original 
declaration [-Wlto-type-mismatch]
  100 | extern void Raise_From_Signal_Handler (struct Exception_Data *, const 
char *);
      |             ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-except.adb:1088:4: note: type 
mismatch in parameter 2
 1088 |    procedure Raise_From_Signal_Handler
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-except.adb:1088:4: note: 
‘ada__exceptions__raise_from_signal_handler’ was previously declared here
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-except.adb:1088:4: note: code may 
be misoptimized unless ‘-fno-strict-aliasing’ is used
/home/mjambor/gcc/mine/src/gcc/ada/init.c:89:30: warning: type of 
‘storage_error’ does not match original declaration [-Wlto-type-mismatch]
   89 | extern struct Exception_Data storage_error;
      |                              ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/s-stalib.ads:179:4: note: type 
‘struct exception’ should match type ‘struct Exception_Data’
  179 |    Storage_Error_Def : aliased Exception_Data :=
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/raise.h:38:8: note: the incompatible type is 
defined here
   38 | struct Exception_Data
      |        ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/s-stalib.ads:179:4: note: 
‘system__standard_library__storage_error_def’ was previously declared here
  179 |    Storage_Error_Def : aliased Exception_Data :=
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/s-stalib.ads:179:4: note: code may 
be misoptimized unless ‘-fno-strict-aliasing’ is used
/home/mjambor/gcc/mine/src/gcc/ada/init.c:86:30: warning: type of 
‘constraint_error’ does not match original declaration [-Wlto-type-mismatch]
   86 | extern struct Exception_Data constraint_error;
      |                              ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/s-stalib.ads:152:4: note: type 
‘struct exception’ should match type ‘struct Exception_Data’
  152 |    Constraint_Error_Def : aliased Exception_Data :=
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/raise.h:38:8: note: the incompatible type is 
defined here
   38 | struct Exception_Data
      |        ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/s-stalib.ads:152:4: note: 
‘system__standard_library__constraint_error_def’ was previously declared here
  152 |    Constraint_Error_Def : aliased Exception_Data :=
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/s-stalib.ads:152:4: note: code may 
be misoptimized unless ‘-fno-strict-aliasing’ is used
/home/mjambor/gcc/mine/src/gcc/ada/init.c:88:30: warning: type of 
‘program_error’ does not match original declaration [-Wlto-type-mismatch]
   88 | extern struct Exception_Data program_error;
      |                              ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/s-stalib.ads:170:4: note: type 
‘struct exception’ should match type ‘struct Exception_Data’
  170 |    Program_Error_Def : aliased Exception_Data :=
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/raise.h:38:8: note: the incompatible type is 
defined here
   38 | struct Exception_Data
      |        ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/s-stalib.ads:170:4: note: 
‘system__standard_library__program_error_def’ was previously declared here
  170 |    Program_Error_Def : aliased Exception_Data :=
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/s-stalib.ads:170:4: note: code may 
be misoptimized unless ‘-fno-strict-aliasing’ is used
/home/mjambor/gcc/mine/src/gcc/ada/raise-gcc.c:900:13: warning: type of 
‘__gnat_language_for’ does not match original declaration [-Wlto-type-mismatch]
  900 | extern char Language_For (_Unwind_Ptr eid);
      |             ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:708:4: note: type 
mismatch in parameter 1
  708 |    function Language_For (E : SSL.Exception_Data_Ptr) return Character 
is
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:708:4: note: type 
‘struct system__standard_library__exception_data *’ should match type 
‘_Unwind_Ptr’
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:708:4: note: 
‘ada__exceptions__exception_propagation__language_forXn’ was previously 
declared here
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:708:4: note: code may 
be misoptimized unless ‘-fno-strict-aliasing’ is used
/home/mjambor/gcc/mine/src/gcc/ada/raise-gcc.c:899:13: warning: type of 
‘__gnat_is_handled_by_others’ does not match original declaration 
[-Wlto-type-mismatch]
  899 | extern bool Is_Handled_By_Others (_Unwind_Ptr eid);
      |             ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:699:4: note: return 
value type mismatch
  699 |    function Is_Handled_By_Others (E : SSL.Exception_Data_Ptr) return 
Boolean is
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:699:4: note: type 
‘boolean’ should match type ‘bool’
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:699:4: note: 
‘ada__exceptions__exception_propagation__is_handled_by_othersXn’ was previously 
declared here
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:699:4: note: code may 
be misoptimized unless ‘-fno-strict-aliasing’ is used
/home/mjambor/gcc/mine/src/gcc/ada/raise-gcc.c:902:14: warning: type of 
‘__gnat_foreign_data_for’ does not match original declaration 
[-Wlto-type-mismatch]
  902 | extern void *Foreign_Data_For (_Unwind_Ptr eid);
      |              ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:688:4: note: type 
mismatch in parameter 1
  688 |    function Foreign_Data_For
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:688:4: note: type 
‘struct system__standard_library__exception_data *’ should match type 
‘_Unwind_Ptr’
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:688:4: note: 
‘ada__exceptions__exception_propagation__foreign_data_forXn’ was previously 
declared here
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/a-exexpr.adb:688:4: note: code may 
be misoptimized unless ‘-fno-strict-aliasing’ is used
/home/mjambor/gcc/mine/src/gcc/ada/raise-gcc.c:907:30: warning: type of 
‘system__exceptions__foreign_exceptio ’ does not match original declaration 
[-Wlto-type-mismatch]
  907 | extern struct Exception_Data Foreign_Exception;
      |                              ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/s-except.ads:61:4: note: type 
‘struct exception’ should match type ‘struct Exception_Data’
   61 |    Foreign_Exception : exception;
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/raise.h:38:8: note: the incompatible type is 
defined here
   38 | struct Exception_Data
      |        ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/s-except.ads:61:4: note: 
‘system__exceptions__foreign_exception’ was previously declared here
   61 |    Foreign_Exception : exception;
      |    ^
/home/mjambor/gcc/mine/src/gcc/ada/libgnat/s-except.ads:61:4: note: code may be 
misoptimized unless ‘-fno-strict-aliasing’ is used
/home/mjambor/gcc/mine/src/gcc/ada/bindo-diagnostics.adb: In function 
‘bindo__diagnostics__diagnose_cycle’:
/home/mjambor/gcc/mine/src/gcc/ada/bindo-diagnostics.adb:395:7: warning: 
‘current_edge’ may be used uninitialized in this function 
[-Wmaybe-uninitialized]
  395 |       Output_Transition
      |       ^
/home/mjambor/gcc/mine/src/gcc/ada/bindo-diagnostics.adb:346:7: note: 
‘current_edge’ was declared here
  346 |       Current_Edge : Library_Graph_Edge_Id;
      |       ^
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: 
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: 
DWARF error: could not find abbrev number 13216
/tmp/gnatbind.Y7G8bN.ltrans9.ltrans.o: in function 
`system__assertions__raise_assert_failure':
<artificial>:(.text+0x4c8e): undefined reference to 
`__gnat_debug_raise_assert_failure'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: 
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: 
DWARF error: could not find abbrev number 10781
/tmp/gnatbind.Y7G8bN.ltrans0.ltrans.o: in function 
`ada__exceptions__complete_occurrence':
<artificial>:(.text+0x2019): undefined reference to 
`__gnat_debug_raise_exception'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: 
/tmp/gnatbind.Y7G8bN.ltrans0.ltrans.o: in function 
`__gnat_notify_unhandled_exception':
<artificial>:(.text+0x764b): undefined reference to `__gnat_unhandled_exception'
collect2: error: ld returned 1 exit status
/home/mjambor/gcc/mine/src/gcc/ada/gcc-interface/Make-lang.in:677: recipe for 
target 'gnatbind' failed
make[2]: *** [gnatbind] Error 1
make[2]: Leaving directory '/home/mjambor/gcc/mine/b-obj/gcc'
Makefile:4744: recipe for target 'all-stage2-gcc' failed
make[1]: *** [all-stage2-gcc] Error 2
make[1]: Leaving directory '/home/mjambor/gcc/mine/b-obj'
Makefile:23726: recipe for target 'stage2-bubble' failed
make: *** [stage2-bubble] Error 2

Reply via email to