Oleg Endo <oleg.e...@t-online.de> wrote: > Kaz, could you please test the patch on your sh4-linux setup and report > your findings? Even though it's a bit late, I'd like to get this in for > GCC 5, if it doesn't break too many things.
Looks wrong code problem for tls and atomic constructs. Here is the result of compare_tests for unpatched/patched sh4-unknown-linux-gnu compilers: New tests that FAIL: g++.dg/tls/static-1.C -std=gnu++11 execution test g++.dg/tls/static-1.C -std=gnu++14 execution test g++.dg/tls/static-1.C -std=gnu++98 execution test g++.dg/tls/thread_local-cse.C -std=gnu++11 execution test g++.dg/tls/thread_local-cse.C -std=gnu++14 execution test gcc.dg/atomic/stdatomic-op-1.c -O1 execution test gcc.dg/atomic/stdatomic-op-1.c -O2 execution test gcc.dg/atomic/stdatomic-op-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test gcc.dg/atomic/stdatomic-op-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test gcc.dg/atomic/stdatomic-op-1.c -O3 -fomit-frame-pointer execution test gcc.dg/atomic/stdatomic-op-1.c -O3 -g execution test gcc.dg/atomic/stdatomic-op-1.c -Os execution test gcc.dg/tls/pr24428.c execution test gcc.dg/torture/tls/run-le.c -O1 -fPIC execution test gcc.dg/torture/tls/run-le.c -O1 -fpic execution test gcc.dg/torture/tls/run-le.c -O2 -fPIC execution test gcc.dg/torture/tls/run-le.c -O2 -fpic execution test gcc.dg/torture/tls/run-le.c -O3 -fomit-frame-pointer -fPIC execution test gcc.dg/torture/tls/run-le.c -O3 -fomit-frame-pointer -fpic execution test gcc.dg/torture/tls/run-le.c -O3 -g -fPIC execution test gcc.dg/torture/tls/run-le.c -O3 -g -fpic execution test gcc.dg/torture/tls/run-le.c -Os -fPIC execution test gcc.dg/torture/tls/run-le.c -Os -fpic execution test gcc.dg/torture/tls/thr-init-1.c -O1 execution test gcc.dg/torture/tls/thr-init-1.c -O2 execution test gcc.dg/torture/tls/thr-init-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test gcc.dg/torture/tls/thr-init-1.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test gcc.dg/torture/tls/thr-init-1.c -O3 -fomit-frame-pointer execution test gcc.dg/torture/tls/thr-init-1.c -O3 -g execution test gcc.dg/torture/tls/thr-init-1.c -Os execution test gcc.dg/torture/tls/thr-init-2.c -O1 execution test gcc.dg/torture/tls/thr-init-2.c -O2 execution test gcc.dg/torture/tls/thr-init-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test gcc.dg/torture/tls/thr-init-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test gcc.dg/torture/tls/thr-init-2.c -O3 -fomit-frame-pointer execution test gcc.dg/torture/tls/thr-init-2.c -O3 -g execution test gcc.dg/torture/tls/thr-init-2.c -Os execution test gcc.dg/torture/tls/tls-reload-1.c -O1 execution test gcc.dg/torture/tls/tls-test.c -O1 execution test gcc.dg/torture/tls/tls-test.c -O2 execution test gcc.dg/torture/tls/tls-test.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test gcc.dg/torture/tls/tls-test.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test gcc.dg/torture/tls/tls-test.c -O3 -fomit-frame-pointer execution test gcc.dg/torture/tls/tls-test.c -O3 -g execution test gcc.dg/torture/tls/tls-test.c -Os execution test gcc.target/sh/pr51244-4.c scan-assembler-times not 1 libgomp.c/copyin-1.c execution test libgomp.c/copyin-2.c execution test libgomp.fortran/allocatable11.f90 -O1 execution test libgomp.fortran/allocatable11.f90 -O2 execution test libgomp.fortran/allocatable11.f90 -O3 -fomit-frame-pointer execution test libgomp.fortran/allocatable11.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/allocatable11.f90 -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/allocatable11.f90 -O3 -g execution test libgomp.fortran/allocatable11.f90 -Os execution test libgomp.fortran/allocatable2.f90 -O1 execution test libgomp.fortran/allocatable2.f90 -O2 execution test libgomp.fortran/allocatable2.f90 -O3 -fomit-frame-pointer execution test libgomp.fortran/allocatable2.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/allocatable2.f90 -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/allocatable2.f90 -O3 -g execution test libgomp.fortran/allocatable2.f90 -Os execution test libgomp.fortran/allocatable8.f90 -O1 execution test libgomp.fortran/allocatable8.f90 -O2 execution test libgomp.fortran/allocatable8.f90 -O3 -fomit-frame-pointer execution test libgomp.fortran/allocatable8.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/allocatable8.f90 -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/allocatable8.f90 -O3 -g execution test libgomp.fortran/allocatable8.f90 -Os execution test libgomp.fortran/appendix-a/a.22.7.f90 -O1 execution test libgomp.fortran/appendix-a/a.22.7.f90 -O2 execution test libgomp.fortran/appendix-a/a.22.7.f90 -O3 -fomit-frame-pointer execution test libgomp.fortran/appendix-a/a.22.7.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/appendix-a/a.22.7.f90 -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/appendix-a/a.22.7.f90 -O3 -g execution test libgomp.fortran/appendix-a/a.22.7.f90 -Os execution test libgomp.fortran/appendix-a/a.22.8.f90 -O1 execution test libgomp.fortran/appendix-a/a.22.8.f90 -O2 execution test libgomp.fortran/appendix-a/a.22.8.f90 -O3 -fomit-frame-pointer execution test libgomp.fortran/appendix-a/a.22.8.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/appendix-a/a.22.8.f90 -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/appendix-a/a.22.8.f90 -O3 -g execution test libgomp.fortran/appendix-a/a.22.8.f90 -Os execution test libgomp.fortran/crayptr2.f90 -O2 execution test libgomp.fortran/crayptr2.f90 -O3 -fomit-frame-pointer execution test libgomp.fortran/crayptr2.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/crayptr2.f90 -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/crayptr2.f90 -O3 -g execution test libgomp.fortran/crayptr2.f90 -Os execution test libgomp.fortran/omp_parse3.f90 -O1 execution test libgomp.fortran/omp_parse3.f90 -O2 execution test libgomp.fortran/omp_parse3.f90 -O3 -fomit-frame-pointer execution test libgomp.fortran/omp_parse3.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/omp_parse3.f90 -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/omp_parse3.f90 -O3 -g execution test libgomp.fortran/pointer2.f90 -O1 execution test libgomp.fortran/pointer2.f90 -O2 execution test libgomp.fortran/pointer2.f90 -O3 -fomit-frame-pointer execution test libgomp.fortran/pointer2.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/pointer2.f90 -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/pointer2.f90 -O3 -g execution test libgomp.fortran/pointer2.f90 -Os execution test libgomp.fortran/pr25162.f -O1 execution test libgomp.fortran/pr25162.f -O2 execution test libgomp.fortran/pr25162.f -O3 -fomit-frame-pointer execution test libgomp.fortran/pr25162.f -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/pr25162.f -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/pr25162.f -O3 -g execution test libgomp.fortran/pr25162.f -Os execution test libgomp.fortran/threadprivate1.f90 -O1 execution test libgomp.fortran/threadprivate1.f90 -O2 execution test libgomp.fortran/threadprivate1.f90 -O3 -fomit-frame-pointer execution test libgomp.fortran/threadprivate1.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/threadprivate1.f90 -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/threadprivate1.f90 -O3 -g execution test libgomp.fortran/threadprivate1.f90 -Os execution test libgomp.fortran/threadprivate2.f90 -O1 execution test libgomp.fortran/threadprivate2.f90 -O2 execution test libgomp.fortran/threadprivate2.f90 -O3 -fomit-frame-pointer execution test libgomp.fortran/threadprivate2.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/threadprivate2.f90 -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/threadprivate2.f90 -O3 -g execution test libgomp.fortran/threadprivate2.f90 -Os execution test libgomp.fortran/threadprivate3.f90 -O1 execution test libgomp.fortran/threadprivate3.f90 -O2 execution test libgomp.fortran/threadprivate3.f90 -O3 -fomit-frame-pointer execution test libgomp.fortran/threadprivate3.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/threadprivate3.f90 -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/threadprivate3.f90 -O3 -g execution test libgomp.fortran/threadprivate3.f90 -Os execution test libgomp.fortran/threadprivate4.f90 -O1 execution test libgomp.fortran/threadprivate4.f90 -O2 execution test libgomp.fortran/threadprivate4.f90 -O3 -fomit-frame-pointer execution test libgomp.fortran/threadprivate4.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test libgomp.fortran/threadprivate4.f90 -O3 -fomit-frame-pointer -funroll-loops execution test libgomp.fortran/threadprivate4.f90 -O3 -g execution test libgomp.fortran/threadprivate4.f90 -Os execution test libgomp.fortran/udr14.f90 -O3 -g (internal compiler error) libgomp.fortran/udr14.f90 -O3 -g (test for excess errors) objc.dg/torture/tls/thr-init-2.m -O1 -fgnu-runtime execution test objc.dg/torture/tls/thr-init-3.m -O1 -fgnu-runtime execution test objc.dg/torture/tls/thr-init-3.m -O2 -fgnu-runtime execution test objc.dg/torture/tls/thr-init-3.m -O2 -flto -fno-use-linker-plugin -flto-partition=none -fgnu-runtime execution test objc.dg/torture/tls/thr-init-3.m -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -fgnu-runtime execution test objc.dg/torture/tls/thr-init-3.m -O3 -fomit-frame-pointer -fgnu-runtime execution test objc.dg/torture/tls/thr-init-3.m -O3 -g -fgnu-runtime execution test objc.dg/torture/tls/thr-init-3.m -Os -fgnu-runtime execution test objc.dg/torture/tls/thr-init.m -O1 -fgnu-runtime execution test objc.dg/torture/tls/thr-init.m -O2 -fgnu-runtime execution test objc.dg/torture/tls/thr-init.m -O2 -flto -fno-use-linker-plugin -flto-partition=none -fgnu-runtime execution test objc.dg/torture/tls/thr-init.m -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -fgnu-runtime execution test objc.dg/torture/tls/thr-init.m -O3 -fomit-frame-pointer -fgnu-runtime execution test objc.dg/torture/tls/thr-init.m -O3 -g -fgnu-runtime execution test objc.dg/torture/tls/thr-init.m -Os -fgnu-runtime execution test Old tests that passed, that have disappeared: (Eeek!) gcc.target/sh/pr49263-1.c scan-assembler-not bclr gcc.target/sh/pr49263-1.c scan-assembler-times extu 1 gcc.target/sh/pr49263-2.c scan-assembler-times -129 2 gcc.target/sh/pr49263-2.c scan-assembler-times extu 1 Regards, kaz