https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64796
Bug ID: 64796 Summary: effective target bswap64 globally caches target-specific use of lp64 Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: trivial Priority: P3 Component: testsuite Assignee: unassigned at gcc dot gnu.org Reporter: vries at gcc dot gnu.org 1. unix/: supported $ make -k -j5 -d check-gcc 'RUNTESTFLAGS=dg.exp=optimize-bswapdi-1.c -v -v --target_board=unix/' ... Schedule of variations: unix/ Running target unix/ Running /home/vries/gcc_versions/devel/master/src/gcc/testsuite/gcc.dg/dg.exp PASS: gcc.dg/optimize-bswapdi-1.c (test for excess errors) PASS: gcc.dg/optimize-bswapdi-1.c scan-tree-dump-times bswap "64 bit bswap implementation found at" 3 ... 2. unix/-m32: unsupported $ make -k -j5 -d check-gcc 'RUNTESTFLAGS=dg.exp=optimize-bswapdi-1.c -v -v --target_board=unix/-m32': ... Schedule of variations: unix/-m32 Running target unix/-m32 Running /home/vries/gcc_versions/devel/master/src/gcc/testsuite/gcc.dg/dg.exp UNSUPPORTED: gcc.dg/optimize-bswapdi-1.c ... 3. unix/ unix/-m32: supported $ make -k -j5 -d check-gcc 'RUNTESTFLAGS=dg.exp=optimize-bswapdi-1.c -v -v --target_board=unix/\ unix/-m32' ... Schedule of variations: unix/ unix/-m32 Running target unix/ Running /home/vries/gcc_versions/devel/master/src/gcc/testsuite/gcc.dg/dg.exp PASS: gcc.dg/optimize-bswapdi-1.c (test for excess errors) PASS: gcc.dg/optimize-bswapdi-1.c scan-tree-dump-times bswap "64 bit bswap implementation found at" 3 Running target unix/-m32 Running /home/vries/gcc_versions/devel/master/src/gcc/testsuite/gcc.dg/dg.exp PASS: gcc.dg/optimize-bswapdi-1.c (test for excess errors) PASS: gcc.dg/optimize-bswapdi-1.c scan-tree-dump-times bswap "64 bit bswap implementation found at" 3 ... The bswap64 effective target is cached globally, so it caches the target-specific use of lp64: ... Return 1 if the target supports 64-bit byte swap instructions. proc check_effective_target_bswap64 { } { global et_bswap64_saved if [info exists et_bswap64_saved] { verbose "check_effective_target_bswap64: using cached result" 2 } else { set et_bswap64_saved 0 if { [is-effective-target bswap] && [is-effective-target lp64] } { set et_bswap64_saved 1 } } verbose "check_effective_target_bswap64: returning $et_bswap64_saved" 2 return $et_bswap64_saved } ... Note that the test passes with -m32, so maybe the effective target bswap64 is not needed, or the wrong one.