https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64980
--- Comment #16 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- (In reply to Mikael Morin from comment #14) > Bernd, do you have a reliable way to test a patch, checking for aliasing > violations? No, all I can do is run the test suite on my armv7l-unknown-linux-gnueabihf target. The problem with the alias violations is as big as an ice berg, but it only made one single test case fail on the ARMv7 target: select_type_4.f90, see pr60718. Regarding your patch with TYPE_CANONICAL: interesting idea. Although it is completely invisible on -fdump-tree-original, the problematic assembler section changes on the reduced test case select_type_4a.f90. I have only a cross-compiler at the moment, so I can not tell, if the code would work in reality, but it looks like it should. I am not sure if I find time to test your patch on the real target next week. However there are many test cases failing on x86_64 at the moment: you can ignore the class_alias.f90 failures, because this test case works more or less like a module test for r218584, so if that is removed the test case makes no sense any more. but there are many regressions, which would need to be fixed before it makes sense to test anything on the ARMv7 target: FAIL: gfortran.dg/coarray/coindexed_3.f90 -fcoarray=lib -O2 -lcaf_single -latomic (internal compiler error) FAIL: gfortran.dg/coarray/coindexed_3.f90 -fcoarray=lib -O2 -lcaf_single -latomic (test for excess errors) UNRESOLVED: gfortran.dg/coarray/coindexed_3.f90 -fcoarray=lib -O2 -lcaf_single -latomic compilation failed to produce executable FAIL: gfortran.dg/class_optional_1.f90 -Os execution test FAIL: gfortran.dg/move_alloc_13.f90 -Os execution test FAIL: gfortran.dg/select_type_26.f03 -O2 execution test FAIL: gfortran.dg/select_type_26.f03 -O3 -fomit-frame-pointer execution test FAIL: gfortran.dg/select_type_26.f03 -O3 -fomit-frame-pointer -funroll-loops execution test FAIL: gfortran.dg/select_type_26.f03 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions execution test FAIL: gfortran.dg/select_type_26.f03 -O3 -g execution test FAIL: gfortran.dg/sizeof_4.f90 -O1 (internal compiler error) FAIL: gfortran.dg/sizeof_4.f90 -O1 (test for excess errors) UNRESOLVED: gfortran.dg/sizeof_4.f90 -O1 compilation failed to produce executable FAIL: gfortran.dg/sizeof_4.f90 -O2 (internal compiler error) FAIL: gfortran.dg/sizeof_4.f90 -O2 (test for excess errors) UNRESOLVED: gfortran.dg/sizeof_4.f90 -O2 compilation failed to produce executable FAIL: gfortran.dg/sizeof_4.f90 -O3 -fomit-frame-pointer (internal compiler error) FAIL: gfortran.dg/sizeof_4.f90 -O3 -fomit-frame-pointer (test for excess errors) UNRESOLVED: gfortran.dg/sizeof_4.f90 -O3 -fomit-frame-pointer compilation failed to produce executable FAIL: gfortran.dg/sizeof_4.f90 -O3 -fomit-frame-pointer -funroll-loops (internal compiler error) FAIL: gfortran.dg/sizeof_4.f90 -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) UNRESOLVED: gfortran.dg/sizeof_4.f90 -O3 -fomit-frame-pointer -funroll-loops compilation failed to produce executable FAIL: gfortran.dg/sizeof_4.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (internal compiler error) FAIL: gfortran.dg/sizeof_4.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) UNRESOLVED: gfortran.dg/sizeof_4.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions compilation failed to produce executable FAIL: gfortran.dg/sizeof_4.f90 -O3 -g (internal compiler error) FAIL: gfortran.dg/sizeof_4.f90 -O3 -g (test for excess errors) UNRESOLVED: gfortran.dg/sizeof_4.f90 -O3 -g compilation failed to produce executable FAIL: gfortran.dg/sizeof_4.f90 -Os (internal compiler error) FAIL: gfortran.dg/sizeof_4.f90 -Os (test for excess errors) UNRESOLVED: gfortran.dg/sizeof_4.f90 -Os compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O1 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O1 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_1.f03 -O1 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O2 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O2 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_1.f03 -O2 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -fomit-frame-pointer (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -fomit-frame-pointer (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -fomit-frame-pointer compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -fomit-frame-pointer -funroll-loops (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -fomit-frame-pointer (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -fomit-frame-pointer compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -fomit-frame-pointer -funroll-loops (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -fomit-frame-pointer -funroll-loops compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -g (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -g (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_1.f03 -O3 -g compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -Os (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_1.f03 -Os (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_1.f03 -Os compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -O1 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -O1 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_17.f90 -O1 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -O2 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -O2 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_17.f90 -O2 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -O3 -fomit-frame-pointer (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -O3 -fomit-frame-pointer (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_17.f90 -O3 -fomit-frame-pointer compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -O3 -fomit-frame-pointer -funroll-loops (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_17.f90 -O3 -fomit-frame-pointer -funroll-loops compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_17.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -O3 -g (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -O3 -g (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_17.f90 -O3 -g compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -Os (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_17.f90 -Os (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_17.f90 -Os compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -O1 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -O1 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_18.f90 -O1 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -O2 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -O2 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_18.f90 -O2 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -O3 -fomit-frame-pointer (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -O3 -fomit-frame-pointer (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_18.f90 -O3 -fomit-frame-pointer compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -O3 -fomit-frame-pointer -funroll-loops (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_18.f90 -O3 -fomit-frame-pointer -funroll-loops compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_18.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -O3 -g (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -O3 -g (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_18.f90 -O3 -g compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -Os (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_18.f90 -Os (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_18.f90 -Os compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -O1 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -O1 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_19.f90 -O1 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -O2 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -O2 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_19.f90 -O2 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -O3 -fomit-frame-pointer (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -O3 -fomit-frame-pointer (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_19.f90 -O3 -fomit-frame-pointer compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -O3 -fomit-frame-pointer -funroll-loops (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_19.f90 -O3 -fomit-frame-pointer -funroll-loops compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_19.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -O3 -g (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -O3 -g (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_19.f90 -O3 -g compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -Os (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_19.f90 -Os (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_19.f90 -Os compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -O1 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -O1 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_21.f90 -O1 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -O2 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -O2 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_21.f90 -O2 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -O3 -fomit-frame-pointer (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -O3 -fomit-frame-pointer (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_21.f90 -O3 -fomit-frame-pointer compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -O3 -fomit-frame-pointer -funroll-loops (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_21.f90 -O3 -fomit-frame-pointer -funroll-loops compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_21.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -O3 -g (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -O3 -g (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_21.f90 -O3 -g compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -Os (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_21.f90 -Os (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_21.f90 -Os compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_3.f03 -O1 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_3.f03 -O1 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_3.f03 -O1 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_3.f03 -O2 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_3.f03 -O3 -g (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_3.f03 -O3 -g (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_3.f03 -O3 -g compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_3.f03 -Os (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_3.f03 -Os (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_3.f03 -Os compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -O1 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -O1 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_5.f90 -O1 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -O2 (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -O2 (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_5.f90 -O2 compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -O3 -fomit-frame-pointer (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -O3 -fomit-frame-pointer (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_5.f90 -O3 -fomit-frame-pointer compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -O3 -fomit-frame-pointer -funroll-loops (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_5.f90 -O3 -fomit-frame-pointer -funroll-loops compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_5.f90 -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -O3 -g (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -O3 -g (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_5.f90 -O3 -g compilation failed to produce executable FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -Os (internal compiler error) FAIL: gfortran.dg/unlimited_polymorphic_5.f90 -Os (test for excess errors) UNRESOLVED: gfortran.dg/unlimited_polymorphic_5.f90 -Os compilation failed to produce executable