https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103465
--- Comment #4 from Tomas Kalibera <tomas.kalibera at gmail dot com> ---
(In reply to Martin Liška from comment #3)
> Let's speak about the current master:
>
> > With "12.0" (5e5f880d0452ef2cffb94f4a686d56833c9f4215), the note is not
> > emitted with -fno-reorder-blocks-and-partition, however, the other problem
> > remains. The note is still not emitted when the optimization is enabled
> > implicitly via -O2.
>
> I see:
>
> /xgcc -B. /home/marxin/Programming/testcases/pr103465.c -c -O2
> -freorder-blocks-and-partition
> /home/marxin/Programming/testcases/pr103465.c:2:9: note:
> ‘-freorder-blocks-and-partition’ does not support unwind info on this
> architecture
> 2 | #pragma GCC optimize ("unroll-loops")
> | ^~~
> /home/marxin/Programming/testcases/pr103465.c:4:1: note:
> ‘-freorder-blocks-and-partition’ does not support unwind info on this
> architecture
> 4 | int main(int argc, char **argv) {
> | ^~~
>
> which seems correct to me. With only -O2 there's no note emitted and the
> flags are properly dropped (same in -freorder-blocks-and-partition):
>
> $ cat -n gcc/opts.c
> ...
> 1133 if (opts->x_flag_unwind_tables
> 1134 && !targetm_common.unwind_tables_default
> 1135 && opts->x_flag_reorder_blocks_and_partition
> 1136 && (ui_except == UI_SJLJ || ui_except >= UI_TARGET))
> 1137 {
> 1138 if (opts_set->x_flag_reorder_blocks_and_partition)
> 1139 inform (loc,
> 1140 "%<-freorder-blocks-and-partition%> does not support
> "
> 1141 "unwind info on this architecture");
> 1142 opts->x_flag_reorder_blocks_and_partition = 0;
> 1143 opts->x_flag_reorder_blocks = 1;
> 1144 }
>
> So what's wrong with that, please?
Thanks for looking into this. I didn't realize an optimization can be dropped
silently - I only checked
x86_64-w64-mingw32-gcc -O2 -Q --help=optimizers
and that said "enabled". Sorry for that.
However, still talking about the current master only, I see a difference with
-O3, when I try on the repro example from Bug 103274 and -O3:
x86_64-w64-mingw32-gcc -c -S -O3 -fno-reorder-blocks-and-partition a.c -o
nropt.s
x86_64-w64-mingw32-gcc -c -S -O3 -freorder-blocks-and-partition a.c -o ropt.s
x86_64-w64-mingw32-gcc -c -S -O3 a.c -o noopt.s
All of these assembler files are different (and from my non-expert reading,
noopt.s uses the optimization and does have the invalid unwind information as
reported in Bug 103274). Is the optimization correctly dropped also with -O3
only?