[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-06 Thread hkzhang455 at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

--- Comment #13 from Hanke Zhang  ---
(In reply to Andrew Pinski from comment #12)
> (In reply to Hanke Zhang from comment #11)
> > But I have never seen this '_FORTIFY_SOURCE' before. So I'm a confused as
> > well. And when I try gcc@11.4 built in the default ubuntu 22.04, it's the
> > same. So I don't know how to describe now. Thanks for your help anyway.
> 
> Well Ubuntu's compiler defaults to defining _FORTIFY_SOURCE while the
> upstream GCC does not. Ubuntu's compiler also defaults to building PIE
> applications too.

Thanks a lot. The _FORTIFY_SOURCE maybe the problem then.

[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-05 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

--- Comment #12 from Andrew Pinski  ---
(In reply to Hanke Zhang from comment #11)
> But I have never seen this '_FORTIFY_SOURCE' before. So I'm a confused as
> well. And when I try gcc@11.4 built in the default ubuntu 22.04, it's the
> same. So I don't know how to describe now. Thanks for your help anyway.

Well Ubuntu's compiler defaults to defining _FORTIFY_SOURCE while the upstream
GCC does not. Ubuntu's compiler also defaults to building PIE applications too.

[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-05 Thread hkzhang455 at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

--- Comment #11 from Hanke Zhang  ---
(In reply to Andrew Pinski from comment #10)
> The difference between the 2 is the costing of the __printf_chk/puts:
> _FORTIFY_SOURCE case:
>   freq:0.20 size:  3 time:2.43 __printf_chk (1, "Object code generation not
> active! Forgot to call quantum_objcode_start?\n");
> 
> vs without:
>   freq:0.20 size:  2 time:2.23 puts (&"Object code generation not active!
> Forgot to call quantum_objcode_start?"[0]);

But I have never seen this '_FORTIFY_SOURCE' before. So I'm a confused as well.
And when I try gcc@11.4 built in the default ubuntu 22.04, it's the same. So I
don't know how to describe now. Thanks for your help anyway.

[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-04 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

--- Comment #10 from Andrew Pinski  ---
The difference between the 2 is the costing of the __printf_chk/puts:
_FORTIFY_SOURCE case:
  freq:0.20 size:  3 time:2.43 __printf_chk (1, "Object code generation not
active! Forgot to call quantum_objcode_start?\n");

vs without:
  freq:0.20 size:  2 time:2.23 puts (&"Object code generation not active!
Forgot to call quantum_objcode_start?"[0]);

[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-04 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

Andrew Pinski  changed:

   What|Removed |Added

  Attachment #56046|0   |1
is obsolete||

--- Comment #9 from Andrew Pinski  ---
Created attachment 56053
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56053=edit
Real Preprocessed source

So with the preprocessed source you provided still could not reproduce the
issue but Adding `-D_FORTIFY_SOURCE=2` to the original testcase does.
Obvious this was not mentioned and makes it harder to understand what was going
wrong even.

[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-04 Thread hkzhang455 at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

--- Comment #8 from Hanke Zhang  ---
(In reply to Andrew Pinski from comment #5)
> Add -save-temps and attach the resulting .i (or .ii) file.

Thank you. I have attached it.

[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-04 Thread hkzhang455 at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

--- Comment #7 from Hanke Zhang  ---
Created attachment 56046
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56046=edit
preprocessed source

[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-03 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

--- Comment #6 from Andrew Pinski  ---
(In reply to Andrew Pinski from comment #5)
> Add -save-temps and attach the resulting .i (or .ii) file.

This is documented at https://gcc.gnu.org/bugs/ under the section of `What we
need `.

[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-03 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

--- Comment #5 from Andrew Pinski  ---
Add -save-temps and attach the resulting .i (or .ii) file.

[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-03 Thread hkzhang455 at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

--- Comment #4 from Hanke Zhang  ---
(In reply to Andrew Pinski from comment #3)
> Oh I see the compiler you are testing with defaults with fortify turned on.
> That is the difference.
> Maybe also with pie turned on by default tlalso.
> 
> Can you provide the full output of gcc -v and also the preprocessed source?

The full output of gcc -v is shown in my description where you can check. And I
known't get what the preprocessed source means here. The origin source C file
is provided already.

[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-03 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

--- Comment #3 from Andrew Pinski  ---
Oh I see the compiler you are testing with defaults with fortify turned on.
That is the difference.
Maybe also with pie turned on by default tlalso.

Can you provide the full output of gcc -v and also the preprocessed source?

[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-03 Thread hkzhang455 at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

--- Comment #2 from Hanke Zhang  ---
(In reply to Andrew Pinski from comment #1)
> I cannot reproduce this on the trunk (or even in 12.3.0):
> 
> Split point at BB 3
>   header time: 1393.311190 header size: 33
>   split time: 2.226400 split size: 2
>   bbs: 3
>   SSA names to pass:
>   Refused: split size is smaller than call overhead
> found articulation at bb 7
> Split point at BB 7
>   header time: 1395.537590 header size: 35
>   split time: 0.00 split size: 0
>   bbs: 7
>   SSA names to pass:
>   Refused: split size is smaller than call overhead

It's still the same bug in my place, and I'm trying to compile on another
computer, and the same happens. Note that, my host is x86_64-linux-gnu. Here is
part of my output infomation about function splitting optimization.

  gcc -O3 -flto -fdumo-tree-fnsplit test.c
  cat a-test.c.050t.fnsplit

;; Function printf (printf, funcdef_no=15, decl_uid=964, cgraph_uid=16,
symbol_order=15)

Not splitting: disregarding inline limits.
__attribute__((artificial, gnu_inline, always_inline))
__attribute__((nonnull (1), format (printf, 1, 2)))
int printf (const char * restrict __fmt)
{
  int _4;

   [local count: 1073741824]:
  _4 = __printf_chk (1, __fmt_2(D), __builtin_va_arg_pack ());
  return _4;

}



;; Function test_split_write (test_split_write, funcdef_no=39, decl_uid=3184,
cgraph_uid=40, symbol_order=43)



Splitting function at:
Split point at BB 3
  header time: 1393.311190 header size: 33
  split time: 2.428800 split size: 3
  bbs: 3
  SSA names to pass:
;; 1 loops found
;;
;; Loop 0
;;  header 0, latch 1
;;  depth 0, outer -1
;;  nodes: 0 1
Introduced new external node (puts/53).

Symbols to be put in SSA form
{ D.3222 }
Incremental SSA update started at block: 0
Number of blocks in CFG: 5
Number of blocks to update: 4 ( 80%)


;; 1 loops found
;;
;; Loop 0
;;  header 0, latch 1
;;  depth 0, outer -1
;;  nodes: 0 1 4 2 3
;; 4 succs { 2 }
;; 2 succs { 3 }
;; 3 succs { 1 }
int test_split_write.part.0 ()

[Bug ipa/111672] Inappropriate function splitting during pass_split_functions

2023-10-03 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111672

--- Comment #1 from Andrew Pinski  ---
I cannot reproduce this on the trunk (or even in 12.3.0):

Split point at BB 3
  header time: 1393.311190 header size: 33
  split time: 2.226400 split size: 2
  bbs: 3
  SSA names to pass:
  Refused: split size is smaller than call overhead
found articulation at bb 7
Split point at BB 7
  header time: 1395.537590 header size: 35
  split time: 0.00 split size: 0
  bbs: 7
  SSA names to pass:
  Refused: split size is smaller than call overhead