From 2ac70237d2458fb2eb5e73de6bb02a396b5bada0 Mon Sep 17 00:00:00 2001
From: Tom de Vries <tdevries@suse.de>
Date: Sat, 14 Mar 2020 10:41:46 +0100
Subject: [PATCH] [gdb/testsuite] Fix unrecognized debug output level
 'statement-frontiers' message

When running testcase gdb.cp/step-and-next-inline.exp, I get:
...
 Running src/gdb/testsuite/gdb.cp/step-and-next-inline.exp ...
 gdb compile failed, g++: error: unrecognized debug output level \
   'statement-frontiers'
 gdb compile failed, g++: error: unrecognized debug output level \
   'statement-frontiers'

                 === gdb Summary ===

 # of untested testcases         2
...

Fix this by using a new gdb_caching_proc supports_statement_frontiers.

Tested on x86_64-linux, with gcc 7.5.0 (which does not support
-gstatement-frontiers) and with gcc 8.4.0 (which does support
-gstatement-frontiers).

gdb/testsuite/ChangeLog:

2020-03-14  Tom de Vries  <tdevries@suse.de>

	* lib/gdb.exp (supports_statement_frontiers): New proc.
	* gdb.cp/step-and-next-inline.exp: Use supports_statement_frontiers.
---
 gdb/testsuite/ChangeLog                       |  5 +++++
 gdb/testsuite/gdb.cp/step-and-next-inline.exp |  4 ++++
 gdb/testsuite/lib/gdb.exp                     | 11 +++++++++++
 3 files changed, 20 insertions(+)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 9f65a4eaa82..a9c28522511 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2020-03-14  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (supports_statement_frontiers): New proc.
+	* gdb.cp/step-and-next-inline.exp: Use supports_statement_frontiers.
+
 2020-03-14  Tom de Vries  <tdevries@suse.de>
 
 	* gdb.base/printcmds.exp: Add missing quoting for "print
diff --git a/gdb/testsuite/gdb.cp/step-and-next-inline.exp b/gdb/testsuite/gdb.cp/step-and-next-inline.exp
index acec48ba81d..3733fa75570 100644
--- a/gdb/testsuite/gdb.cp/step-and-next-inline.exp
+++ b/gdb/testsuite/gdb.cp/step-and-next-inline.exp
@@ -15,6 +15,10 @@
 
 standard_testfile .cc
 
+if { ![supports_statement_frontiers] } {
+    return -1
+}
+
 # Compile the test source with USE_NEXT_INLINE_H defined (when
 # use_header is true), or not defined.
 proc do_test { use_header } {
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index ae2d810a1eb..b14b3a968e1 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -6947,5 +6947,16 @@ gdb_caching_proc skip_ctf_tests {
     } executable "additional_flags=-gt"]
 }
 
+# Return 1 if compiler supports -gstatement-frontiers.  Otherwise,
+# return 0.
+
+gdb_caching_proc supports_statement_frontiers {
+    return [gdb_can_simple_compile supports_statement_frontiers {
+	int main () {
+	    return 0;
+	}
+    } executable "additional_flags=-gstatement-frontiers"]
+}
+
 # Always load compatibility stuff.
 load_lib future.exp