aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2018-09-20 19:34:30 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2018-09-20 19:34:30 +0000
commit894f597f8fb8693a5d0f5834e98a8ccebbbb9106 (patch)
treeaa13ba0a1197e59239ebf0dab931b47a5b780549 /gcc
parent2eb3745a7bcd7f326b44f784d2f0ca6a2fd4080d (diff)
downloadgcc-894f597f8fb8693a5d0f5834e98a8ccebbbb9106.zip
gcc-894f597f8fb8693a5d0f5834e98a8ccebbbb9106.tar.gz
gcc-894f597f8fb8693a5d0f5834e98a8ccebbbb9106.tar.bz2
[PR87013] check for .loc is_stmt support in the assembler
Back when we had the logic to output is_stmt but never exercised it, it didn't matter that we didn't test for assembler support for it. But there are still assemblers out there that do not support it, so now that we enable the formerly latent is_stmt logic, we'd better make sure the assembler can deal with it. for gcc/ChangeLog PR bootstrap/87013 * configure.ac: Check for .loc is_stmt support. * configure, config.in: Rebuilt. * dwarf2out.c (dwarf2out_source_line): Skip is_stmt if not supported. From-SVN: r264449
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config.in6
-rwxr-xr-xgcc/configure38
-rw-r--r--gcc/configure.ac9
-rw-r--r--gcc/dwarf2out.c2
5 files changed, 63 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 80794e3..641e359 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2018-09-20 Alexandre Oliva <aoliva@redhat.com>
+
+ PR bootstrap/87013
+ * configure.ac: Check for .loc is_stmt support.
+ * configure, config.in: Rebuilt.
+ * dwarf2out.c (dwarf2out_source_line): Skip is_stmt
+ if not supported.
+
2018-09-20 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.opt (misel=no, misel=yes): Delete.
diff --git a/gcc/config.in b/gcc/config.in
index 2856e72..775536e 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -1297,6 +1297,12 @@
#endif
+/* Define if your assembler supports the .loc is_stmt sub-directive. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_GAS_LOC_STMT
+#endif
+
+
/* Define if your assembler supports specifying the maximum number of bytes to
skip when using the GAS .p2align command. */
#ifndef USED_FOR_TARGET
diff --git a/gcc/configure b/gcc/configure
index 5ae43ec..b3205ad 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -23942,6 +23942,44 @@ _ACEOF
;;
esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for line table is_stmt support" >&5
+$as_echo_n "checking assembler for line table is_stmt support... " >&6; }
+if test "${gcc_cv_as_is_stmt+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ gcc_cv_as_is_stmt=no
+ if test $in_tree_gas = yes; then
+ if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 16 \) \* 1000 + 92`
+ then gcc_cv_as_is_stmt=yes
+fi
+ elif test x$gcc_cv_as != x; then
+ $as_echo ' .text
+ .file 1 "conf.c"
+ .loc 1 1 0 is_stmt 1' > conftest.s
+ if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+ then
+ gcc_cv_as_is_stmt=yes
+ else
+ echo "configure: failed program was" >&5
+ cat conftest.s >&5
+ fi
+ rm -f conftest.o conftest.s
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_is_stmt" >&5
+$as_echo "$gcc_cv_as_is_stmt" >&6; }
+if test $gcc_cv_as_is_stmt = yes; then
+
+$as_echo "#define HAVE_GAS_LOC_STMT 1" >>confdefs.h
+
+fi
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for line table discriminator support" >&5
$as_echo_n "checking assembler for line table discriminator support... " >&6; }
if test "${gcc_cv_as_discriminator+set}" = set; then :
diff --git a/gcc/configure.ac b/gcc/configure.ac
index fceab2f..92cecbd 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3146,6 +3146,15 @@ case "${target}" in
;;
esac
+gcc_GAS_CHECK_FEATURE([line table is_stmt support],
+ gcc_cv_as_is_stmt,
+ [2,16,92],,
+[ .text
+ .file 1 "conf.c"
+ .loc 1 1 0 is_stmt 1],,
+[AC_DEFINE(HAVE_GAS_LOC_STMT, 1,
+ [Define if your assembler supports the .loc is_stmt sub-directive.])])
+
gcc_GAS_CHECK_FEATURE([line table discriminator support],
gcc_cv_as_discriminator,
[2,19,51],,
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 48c5037..55fcb7b 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -27931,8 +27931,10 @@ dwarf2out_source_line (unsigned int line, unsigned int column,
if (is_stmt != table->is_stmt)
{
+#if HAVE_GAS_LOC_STMT
fputs (" is_stmt ", asm_out_file);
putc (is_stmt ? '1' : '0', asm_out_file);
+#endif
}
if (SUPPORTS_DISCRIMINATOR && discriminator != 0)
{