This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Build gdb.opt/inline-*.exp tests at -O0, rely on __attribute__((always_inline))


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1f960ced9a3e4aa0823dcc234d9de49aebaee055

commit 1f960ced9a3e4aa0823dcc234d9de49aebaee055
Author: Pedro Alves <palves@redhat.com>
Date:   Tue Jul 19 17:51:05 2016 +0100

    Build gdb.opt/inline-*.exp tests at -O0, rely on __attribute__((always_inline))
    
    A test recently added to gdb.opt/inline-cmds.exp fails for
    arm-none-eabi targets because -O2 leads to instructions to be
    reordered widely.
    
    I guess it might have made sense years ago to enable optimization in
    these tests, but I fail to see the need for that nowadays.
    
    Using -O0 while relying on __attribute__((always_inline)), which is
    already used in the tests [1] [2], avoids this sort of trouble, while
    still exercising the inlining-related use cases that are the focus of
    these tests.
    
    I think that nowadays we can safely assume that all compilers we care
    about support __attribute__((always_inline)) or similar.
    
    [1] - Except one spot that missed it.
    
    [2] - Note that the .exp files make sure the frames that should have
          been inlined are indeed inlined, with "info frame".
    
    gdb/testsuite/ChangeLog:
    2016-07-19  Pedro Alves  <palves@redhat.com>
    
    	* gdb.opt/inline-break.exp: Remove optimize=-O2.
    	* gdb.opt/inline-bt.exp: Likewise.
    	* gdb.opt/inline-cmds.exp: Remove optimize=-O2 and add
    	additional_flags=-Winline.
    	* gdb.opt/inline-locals.exp: Likewise.
    	* gdb.opt/inline-markers.c (ATTR): Define.
    	(inlined_fn): Use it.

Diff:
---
 gdb/testsuite/ChangeLog                 | 10 ++++++++++
 gdb/testsuite/gdb.opt/inline-break.exp  |  2 +-
 gdb/testsuite/gdb.opt/inline-bt.exp     |  2 +-
 gdb/testsuite/gdb.opt/inline-cmds.exp   |  2 +-
 gdb/testsuite/gdb.opt/inline-locals.exp |  2 +-
 gdb/testsuite/gdb.opt/inline-markers.c  |  8 +++++++-
 6 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index c92264f..fb1f3b1 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2016-07-19  Pedro Alves  <palves@redhat.com>
+
+	* gdb.opt/inline-break.exp: Remove optimize=-O2.
+	* gdb.opt/inline-bt.exp: Likewise.
+	* gdb.opt/inline-cmds.exp: Remove optimize=-O2 and add
+	additional_flags=-Winline.
+	* gdb.opt/inline-locals.exp: Likewise.
+	* gdb.opt/inline-markers.c (ATTR): Define.
+	(inlined_fn): Use it.
+
 2016-07-19  Yao Qi  <yao.qi@linaro.org>
 
 	* gdb.gdb/selftest.exp: Remove checks on is_remote and isnative.
diff --git a/gdb/testsuite/gdb.opt/inline-break.exp b/gdb/testsuite/gdb.opt/inline-break.exp
index b2aa22e..ac56b04 100644
--- a/gdb/testsuite/gdb.opt/inline-break.exp
+++ b/gdb/testsuite/gdb.opt/inline-break.exp
@@ -20,7 +20,7 @@
 standard_testfile
 
 if { [prepare_for_testing $testfile.exp $testfile $srcfile \
-          {debug optimize=-O2 additional_flags=-Winline}] } {
+          {debug additional_flags=-Winline}] } {
     return -1
 }
 
diff --git a/gdb/testsuite/gdb.opt/inline-bt.exp b/gdb/testsuite/gdb.opt/inline-bt.exp
index 63d76e2..13c6993 100644
--- a/gdb/testsuite/gdb.opt/inline-bt.exp
+++ b/gdb/testsuite/gdb.opt/inline-bt.exp
@@ -17,7 +17,7 @@ standard_testfile .c inline-markers.c
 
 if {[prepare_for_testing $testfile.exp $testfile \
 	 [list $srcfile $srcfile2] \
-	 {debug optimize=-O2 additional_flags=-Winline}]} {
+	 {debug additional_flags=-Winline}]} {
     return -1
 }
 
diff --git a/gdb/testsuite/gdb.opt/inline-cmds.exp b/gdb/testsuite/gdb.opt/inline-cmds.exp
index 684f4dd..6c84848 100644
--- a/gdb/testsuite/gdb.opt/inline-cmds.exp
+++ b/gdb/testsuite/gdb.opt/inline-cmds.exp
@@ -19,7 +19,7 @@ set MIFLAGS "-i=mi"
 standard_testfile .c inline-markers.c
 
 if {[prepare_for_testing $testfile.exp $testfile \
-	 [list $srcfile $srcfile2] {debug optimize=-O2}]} {
+	 [list $srcfile $srcfile2] {debug additional_flags=-Winline}]} {
     return -1
 }
 
diff --git a/gdb/testsuite/gdb.opt/inline-locals.exp b/gdb/testsuite/gdb.opt/inline-locals.exp
index df2253a..36f7ed2 100644
--- a/gdb/testsuite/gdb.opt/inline-locals.exp
+++ b/gdb/testsuite/gdb.opt/inline-locals.exp
@@ -16,7 +16,7 @@
 standard_testfile .c inline-markers.c
 
 if {[prepare_for_testing $testfile.exp $testfile \
-	 [list $srcfile $srcfile2] {debug optimize=-O2}]} {
+	 [list $srcfile $srcfile2] {debug additional_flags=-Winline}]} {
     return -1
 }
 
diff --git a/gdb/testsuite/gdb.opt/inline-markers.c b/gdb/testsuite/gdb.opt/inline-markers.c
index cf92e79..41f8a38 100644
--- a/gdb/testsuite/gdb.opt/inline-markers.c
+++ b/gdb/testsuite/gdb.opt/inline-markers.c
@@ -13,6 +13,12 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#ifdef __GNUC__
+# define ATTR __attribute__((always_inline))
+#else
+# define ATTR
+#endif
+
 extern int x, y;
 extern volatile int z;
 
@@ -26,7 +32,7 @@ void marker(void)
   x += y - z; /* set breakpoint 2 here */
 }
 
-inline void inlined_fn(void)
+inline ATTR void inlined_fn(void)
 {
   x += y + z;
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]