[Bug ipa/108226] __restrict on inlined function parameters does not function as expected
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108226 --- Comment #2 from Martin Jambor --- (In reply to Richard Biener from comment #1) > > so somehow the restrict qualification pessimizes IPA-CP?! Martin? > Well, funny thing. Without restrict, IPA-CP sees (from release_ssa dump): void Func3 (char * p1, int * p2) { [local count: 1073741824]: *p1_3(D) = 123; *p2_2(D) = 1; Func1 (p1_3(D), p2_2(D)); return; } But with restrict in Func2 parameters, Func3 becomes: void Func3 (char * p1, int * p2) { [local count: 1073741824]: *p2_2(D) = 1; *p1_4(D) = 123; Func1 (p1_4(D), p2_2(D)); return; } And the different ordering of the two stores is the problem, even when p1 is not a char pointer, because we dont't trust the types of the actual/formal parameters for TBAA (we would need to know in what types they are read in Func1).
[Bug ipa/108226] __restrict on inlined function parameters does not function as expected
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108226 Richard Biener changed: What|Removed |Added CC||jamborm at gcc dot gnu.org Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Component|tree-optimization |ipa Last reconfirmed||2023-01-09 --- Comment #1 from Richard Biener --- For the first case it's the order of inlining - we first inline Func2 into Func3 early and only then inline Func1 at IPA time which fails to put the Func1 accesses under __restrict. For the second case it's with __restrict: > ./cc1 -quiet t.c -O2 -fopt-info -fdump-tree-all t.c:27:3: optimized: Inlining Func2/2 into Func3/3. t.c:22:3: optimized: Inlined Func1.isra/5 into Func3/3 which now has time 12.50 and size 21, net change of -7. vs without > ./cc1 -quiet t.c -O2 -fopt-info -fdump-tree-all t.c:27:3: optimized: Inlining Func2/2 into Func3/3. t.c:22:3: optimized: Inlined Func1.constprop.isra/6 into Func3/3 which now has time 4.375000 and size 7, net change of -21. so somehow the restrict qualification pessimizes IPA-CP?! Martin? Note with restrict it's again the first issue. -fno-early-inlining helps there.