The gcc.dg/hierarchical-discriminator-loop-version.c etc. tests FAIL on
Solaris with the native assembler:
FAIL: gcc.dg/hierarchical-discriminator-loop-version.c scan-assembler \\\\.loc
1 (9|10) [0-9]+ is_stmt 0 discriminator [0-9]+
FAIL: gcc.dg/hierarchical-discriminator-unroll.c scan-assembler \\\\.loc 1 17 7
is_stmt 0 discriminator ([1-9][0-9]*|0x[1-9a-fA-F][0-9a-fA-F]*)
FAIL: gcc.dg/hierarchical-discriminator-vect-version.c scan-assembler \\\\.loc
1 13 [0-9]+ is_stmt 0 discriminator ([1-9][0-9]*|0x[1-9a-fA-F][0-9a-fA-F]*)
When using Solaris as, the .loc directives aren't present. Their use is
guarded by dwarf2out.cc (dwarf2out_default_as_loc_support), which
ultimately depends on HAVE_AS_DWARF2_DEBUG_LINE
To avoid this, this patch restricts the scans to gas targets, which is
better than what we currently have.
Tested on i386-pc-solaris2.11 and sparc-sun-solaris2.11 (as and gas),
and x86_64-pc-linux-gnu.
Committed to trunk.
Given that target gas is only an approximation for
HAVE_AS_DWARF2_DEBUG_LINE, it would be better to have an effective
target for the latter. I'm working on a patch to automatically create
those from auto-host.h at build time, but that's stage 1 material and
probably overkill for just those three tests.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
2026-02-17 Rainer Orth <[email protected]>
gcc/testsuite:
* gcc.dg/hierarchical-discriminator-loop-version.c
(scan-assembler): Require gas.
* gcc.dg/hierarchical-discriminator-unroll.c: Likewise.
* gcc.dg/hierarchical-discriminator-vect-version.c: Likewise.
# HG changeset patch
# Parent 9e92e1e29ce526680dc3105793c6eedd062b9b00
testsuite: xfail gcc.dg/hierarchical-discriminator-loop-version.c etc. without gas
diff --git a/gcc/testsuite/gcc.dg/hierarchical-discriminator-loop-version.c b/gcc/testsuite/gcc.dg/hierarchical-discriminator-loop-version.c
--- a/gcc/testsuite/gcc.dg/hierarchical-discriminator-loop-version.c
+++ b/gcc/testsuite/gcc.dg/hierarchical-discriminator-loop-version.c
@@ -17,4 +17,4 @@ test_loop_versioning (double *x, int ste
/* Check that loop versioning occurred and discriminators are present on the loop body. */
/* { dg-final { scan-tree-dump "versioned this loop for when certain strides are 1" "lversion" } } */
-/* { dg-final { scan-assembler "\\.loc 1 (9|10) \[0-9\]+ is_stmt 0 discriminator \[0-9\]+" } } */
+/* { dg-final { scan-assembler "\\.loc 1 (9|10) \[0-9\]+ is_stmt 0 discriminator \[0-9\]+" { target gas } } } */
diff --git a/gcc/testsuite/gcc.dg/hierarchical-discriminator-unroll.c b/gcc/testsuite/gcc.dg/hierarchical-discriminator-unroll.c
--- a/gcc/testsuite/gcc.dg/hierarchical-discriminator-unroll.c
+++ b/gcc/testsuite/gcc.dg/hierarchical-discriminator-unroll.c
@@ -27,4 +27,4 @@ test_unroll (void)
The exact values depend on what other passes have run, but all should be non-zero. */
/* Check that unrolled iterations have non-zero discriminators on the asm statement line. */
-/* { dg-final { scan-assembler "\\.loc 1 17 7 is_stmt 0 discriminator (\[1-9\]\[0-9\]*|0x\[1-9a-fA-F\]\[0-9a-fA-F\]*)" } } */
+/* { dg-final { scan-assembler "\\.loc 1 17 7 is_stmt 0 discriminator (\[1-9\]\[0-9\]*|0x\[1-9a-fA-F\]\[0-9a-fA-F\]*)" { target gas } } } */
diff --git a/gcc/testsuite/gcc.dg/hierarchical-discriminator-vect-version.c b/gcc/testsuite/gcc.dg/hierarchical-discriminator-vect-version.c
--- a/gcc/testsuite/gcc.dg/hierarchical-discriminator-vect-version.c
+++ b/gcc/testsuite/gcc.dg/hierarchical-discriminator-vect-version.c
@@ -16,4 +16,4 @@ test_vectorize (int *a, int *b, int *c,
/* Check that vectorized code has discriminators on the main loop body line.
The discriminator should be non-zero to distinguish vector vs scalar versions. */
-/* { dg-final { scan-assembler "\\.loc 1 13 \[0-9\]+ is_stmt 0 discriminator (\[1-9\]\[0-9\]*|0x\[1-9a-fA-F\]\[0-9a-fA-F\]*)" } } */
+/* { dg-final { scan-assembler "\\.loc 1 13 \[0-9\]+ is_stmt 0 discriminator (\[1-9\]\[0-9\]*|0x\[1-9a-fA-F\]\[0-9a-fA-F\]*)" { target gas } } } */