Re: beta gfortran 14.x.y (using -march=native and intrinsic repeat) gives a signal SIGILL
Hi Paul, - Mensaje original - > De: "Paul Richard Thomas" > Para: "Jerry" > CC: "Jorge D'Elia" , "Gfortran List" > , "Jorge D'Elia" > > Enviado: Sábado, 12 de Agosto 2023 3:56:44 > Asunto: Re: beta gfortran 14.x.y (using -march=native and intrinsic repeat) > gives a signal SIGILL > > Hi Jorge, > >> There were some recent patches in this area IIRC. >> >> Jerry > > The tree dump is identical to mine, obtained with GNU Fortran (GCC) > 14.0.0 20230809 (experimental), so I doubt that any recent patches are > responsible. It seems so. Furthermore, I have the feeling that the problem is outside GFortran, between the use of -mtune=native versus -march=native. For example, $ gfortran --version GNU Fortran (GCC) 14.0.0 20230808 (experimental) $ ls -all total 4 drwxr-xr-x. 1 jdelia jdelia 16 Aug 12 10:06 . drwxr-xr-x. 1 jdelia jdelia 2782 Aug 12 10:05 .. -rwxr-xr-x. 1 jdelia jdelia 223 Aug 11 08:28 test.f90 $ gfortran -mtune=native -fcheck=all -std=f2018 -Wall -Werror -Wextra -g -fdump-tree-original -o test-mtune.exe test.f90 $ ls -all total 36 drwxr-xr-x. 1 jdelia jdelia 110 Aug 12 10:17 . drwxr-xr-x. 1 jdelia jdelia 2782 Aug 12 10:05 .. -rwxr-xr-x. 1 jdelia jdelia 223 Aug 11 08:28 test.f90 -rwxr-xr-x. 1 jdelia jdelia 26856 Aug 12 10:17 test-mtune.exe -rw-r--r--. 1 jdelia jdelia 1405 Aug 12 10:17 test-mtune-test.f90.005t.original $ mv test-mtune-test.f90.005t.original test-mtune.f90.005t.original $ ls -all total 36 drwxr-xr-x. 1 jdelia jdelia 100 Aug 12 10:19 . drwxr-xr-x. 1 jdelia jdelia 2782 Aug 12 10:05 .. -rwxr-xr-x. 1 jdelia jdelia 223 Aug 11 08:28 test.f90 -rwxr-xr-x. 1 jdelia jdelia 26856 Aug 12 10:17 test-mtune.exe -rw-r--r--. 1 jdelia jdelia 1405 Aug 12 10:17 test-mtune.f90.005t.original $ gfortran -march=native -fcheck=all -std=f2018 -Wall -Werror -Wextra -g -fdump-tree-original -o test-march.exe test.f90 $ ls -all total 68 drwxr-xr-x. 1 jdelia jdelia 194 Aug 12 10:19 . drwxr-xr-x. 1 jdelia jdelia 2782 Aug 12 10:05 .. -rwxr-xr-x. 1 jdelia jdelia 223 Aug 11 08:28 test.f90 -rwxr-xr-x. 1 jdelia jdelia 28064 Aug 12 10:19 test-march.exe -rw-r--r--. 1 jdelia jdelia 1405 Aug 12 10:19 test-march-test.f90.005t.original -rwxr-xr-x. 1 jdelia jdelia 26856 Aug 12 10:17 test-mtune.exe -rw-r--r--. 1 jdelia jdelia 1405 Aug 12 10:17 test-mtune.f90.005t.original $ mv test-march-test.f90.005t.original test-march.f90.005t.original $ ls -all total 68 drwxr-xr-x. 1 jdelia jdelia 184 Aug 12 10:19 . drwxr-xr-x. 1 jdelia jdelia 2782 Aug 12 10:05 .. -rwxr-xr-x. 1 jdelia jdelia 223 Aug 11 08:28 test.f90 -rwxr-xr-x. 1 jdelia jdelia 28064 Aug 12 10:19 test-march.exe -rw-r--r--. 1 jdelia jdelia 1405 Aug 12 10:19 test-march.f90.005t.original -rwxr-xr-x. 1 jdelia jdelia 26856 Aug 12 10:17 test-mtune.exe -rw-r--r--. 1 jdelia jdelia 1405 Aug 12 10:17 test-mtune.f90.005t.original $ diff test-mtune.f90.005t.original test-march.f90.005t.original # (nothing is shown, thus both tree dumps ares identical). $ test-mtune.exe cc : $ test-march.exe Program received signal SIGILL: Illegal instruction. Backtrace for this error: #0 0x15268845fb1f in ??? #1 0x4011c2 in test at /home/jdelia/TEST/test.f90:6 #2 0x4012ae in main at /home/jdelia/TEST/test.f90:8 Illegal instruction (core dumped) > Being unable to reproduce the error, there is not much that I can do. > Sorry Non problem. To avoid this error, for now we exclude the use of -march=native in our makefiles, and just use -mtune=native. > Paul Thanks for your time. Regards. Jorge. --
Re: beta gfortran 14.x.y (using -march=native and intrinsic repeat) gives a signal SIGILL
On Sat, Aug 12, 2023 at 10:41:10AM -0300, Jorge D'Elia via Fortran wrote: > > $ test-march.exe > > Program received signal SIGILL: Illegal instruction. > This, to me, suggests that the backend is emitting a wrong assembly language code. I suspect that you'll need to compare the generated assembly code between a working gfortran and the bad gfortran. It is also possible to get a listing of the actually options that -march=native activates. For example, % gfcx -o z -O -march=native --verbose a.f90 It is the options that begin with -m that matter. For my hardware I see 108 such options. With patients you can determine if one of these triggers the issues. One can also scan gcc/gcc/ChangeLog for changes to config/i386/i386.md. For example 2023-08-07 Jan Beulich * config/i386/i386.md (sse4_1_round2): Make "length_immediate" uniformly 1. * config/i386/mmx.md (mmx_pblendvb_v8qi): Likewise. (mmx_pblendvb_): Likewise. There are at least 10 commits on 2023-08-07 to this file. Finally, as a non-git user, you can always try git's bisection feature to identify where things go left. -- Steve
Re: beta gfortran 14.x.y (using -march=native and intrinsic repeat) gives a signal SIGILL
On 8/12/23 6:41 AM, Jorge D'Elia wrote: Hi Paul, - Mensaje original - De: "Paul Richard Thomas" Para: "Jerry" CC: "Jorge D'Elia" , "Gfortran List" , "Jorge D'Elia" Enviado: Sábado, 12 de Agosto 2023 3:56:44 Asunto: Re: beta gfortran 14.x.y (using -march=native and intrinsic repeat) gives a signal SIGILL Hi Jorge, There were some recent patches in this area IIRC. Jerry The tree dump is identical to mine, obtained with GNU Fortran (GCC) 14.0.0 20230809 (experimental), so I doubt that any recent patches are responsible. It seems so. Furthermore, I have the feeling that the problem is outside GFortran, between the use of -mtune=native versus -march=native. For example, $ gfortran --version GNU Fortran (GCC) 14.0.0 20230808 (experimental) $ ls -all total 4 drwxr-xr-x. 1 jdelia jdelia 16 Aug 12 10:06 . drwxr-xr-x. 1 jdelia jdelia 2782 Aug 12 10:05 .. -rwxr-xr-x. 1 jdelia jdelia 223 Aug 11 08:28 test.f90 $ gfortran -mtune=native -fcheck=all -std=f2018 -Wall -Werror -Wextra -g -fdump-tree-original -o test-mtune.exe test.f90 $ ls -all total 36 drwxr-xr-x. 1 jdelia jdelia 110 Aug 12 10:17 . drwxr-xr-x. 1 jdelia jdelia 2782 Aug 12 10:05 .. -rwxr-xr-x. 1 jdelia jdelia 223 Aug 11 08:28 test.f90 -rwxr-xr-x. 1 jdelia jdelia 26856 Aug 12 10:17 test-mtune.exe -rw-r--r--. 1 jdelia jdelia 1405 Aug 12 10:17 test-mtune-test.f90.005t.original $ mv test-mtune-test.f90.005t.original test-mtune.f90.005t.original $ ls -all total 36 drwxr-xr-x. 1 jdelia jdelia 100 Aug 12 10:19 . drwxr-xr-x. 1 jdelia jdelia 2782 Aug 12 10:05 .. -rwxr-xr-x. 1 jdelia jdelia 223 Aug 11 08:28 test.f90 -rwxr-xr-x. 1 jdelia jdelia 26856 Aug 12 10:17 test-mtune.exe -rw-r--r--. 1 jdelia jdelia 1405 Aug 12 10:17 test-mtune.f90.005t.original $ gfortran -march=native -fcheck=all -std=f2018 -Wall -Werror -Wextra -g -fdump-tree-original -o test-march.exe test.f90 $ ls -all total 68 drwxr-xr-x. 1 jdelia jdelia 194 Aug 12 10:19 . drwxr-xr-x. 1 jdelia jdelia 2782 Aug 12 10:05 .. -rwxr-xr-x. 1 jdelia jdelia 223 Aug 11 08:28 test.f90 -rwxr-xr-x. 1 jdelia jdelia 28064 Aug 12 10:19 test-march.exe -rw-r--r--. 1 jdelia jdelia 1405 Aug 12 10:19 test-march-test.f90.005t.original -rwxr-xr-x. 1 jdelia jdelia 26856 Aug 12 10:17 test-mtune.exe -rw-r--r--. 1 jdelia jdelia 1405 Aug 12 10:17 test-mtune.f90.005t.original $ mv test-march-test.f90.005t.original test-march.f90.005t.original $ ls -all total 68 drwxr-xr-x. 1 jdelia jdelia 184 Aug 12 10:19 . drwxr-xr-x. 1 jdelia jdelia 2782 Aug 12 10:05 .. -rwxr-xr-x. 1 jdelia jdelia 223 Aug 11 08:28 test.f90 -rwxr-xr-x. 1 jdelia jdelia 28064 Aug 12 10:19 test-march.exe -rw-r--r--. 1 jdelia jdelia 1405 Aug 12 10:19 test-march.f90.005t.original -rwxr-xr-x. 1 jdelia jdelia 26856 Aug 12 10:17 test-mtune.exe -rw-r--r--. 1 jdelia jdelia 1405 Aug 12 10:17 test-mtune.f90.005t.original $ diff test-mtune.f90.005t.original test-march.f90.005t.original # (nothing is shown, thus both tree dumps ares identical). $ test-mtune.exe cc : $ test-march.exe Program received signal SIGILL: Illegal instruction. Backtrace for this error: #0 0x15268845fb1f in ??? #1 0x4011c2 in test at /home/jdelia/TEST/test.f90:6 #2 0x4012ae in main at /home/jdelia/TEST/test.f90:8 Illegal instruction (core dumped) Being unable to reproduce the error, there is not much that I can do. Sorry Non problem. To avoid this error, for now we exclude the use of -march=native in our makefiles, and just use -mtune=native. Paul Thanks for your time. Regards. Jorge. -- I have not been able to reproduce it here. I tried on: gcc version 14.0.0 20230804 (experimental) (GCC) and gcc version 14.0.0 20230812 (experimental) (GCC) I wonder if you caught a version in between changes happening? $ lscpu Architecture:x86_64 CPU op-mode(s):32-bit, 64-bit Address sizes: 48 bits physical, 48 bits virtual Byte Order:Little Endian I started to draft a PR this morning, not sure. I know it is a pain to do, can you build a later version of gfortran and see if your results are different? Also, I have seen times where the libgfortran files were out of sync with the build because LD_LIBRARY_PATH was not pointing in the correct place. So check these things. Regards, Jerry