This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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]

[og7, testsuite, committed] Add scan-offload-tree-dump


Hi,

I've ported "Add scan-wpa-ipa-dump" (submitted here: https://gcc.gnu.org/ml/gcc-patches/2018-03/msg01529.html ) to the og7 branch, and committed it. Changes are trivial, so I'm not reposting that patch.

This patch adds the possibility to scan tree dump files generated by the offloading lto1 invocation.

Tested libgomp on x86_64 build with nvptx accelerator.

Committed.

Thanks,
- Tom
[testsuite] Add scan-offload-tree-dump

2018-03-28  Tom de Vries  <tom@codesourcery.com>

	PR testsuite/85106
	* lib/scanoffloadtree.exp: New file.

	* testsuite/lib/libgomp-dg.exp (libgomp-dg-test): Add save-temps to
	extra_tool_flags if it contains an -foffload=-fdump-* flag.
	* testsuite/lib/libgomp.exp: Include scanoffloadtree.exp.

	* doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
	dump files): Add offload-tree.

---
 gcc/doc/sourcebuild.texi              |   4 +-
 gcc/testsuite/lib/scanoffloadtree.exp | 147 ++++++++++++++++++++++++++++++++++
 libgomp/testsuite/lib/libgomp-dg.exp  |   8 ++
 libgomp/testsuite/lib/libgomp.exp     |   1 +
 4 files changed, 158 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index f92ec66..12c7197 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2378,8 +2378,8 @@ assembly output.
 
 @subsubsection Scan optimization dump files
 
-These commands are available for @var{kind} of @code{tree}, @code{rtl},
-@code{ipa}, and @code{wpa-ipa}.
+These commands are available for @var{kind} of @code{tree}, @code{offload-tree},
+@code{rtl}, @code{ipa}, and @code{wpa-ipa}.
 
 @table @code
 @item scan-@var{kind}-dump @var{regex} @var{suffix} [@{ target/xfail @var{selector} @}]
diff --git a/gcc/testsuite/lib/scanoffloadtree.exp b/gcc/testsuite/lib/scanoffloadtree.exp
new file mode 100644
index 0000000..26c98d3
--- /dev/null
+++ b/gcc/testsuite/lib/scanoffloadtree.exp
@@ -0,0 +1,147 @@
+#   Copyright (C) 2018 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# Various utilities for scanning offloading tree dump output, used by
+# libgomp.exp.
+
+load_lib scandump.exp
+
+# Utility for scanning compiler result, invoked via dg-final.
+# Call pass if pattern is present, otherwise fail.
+#
+# Argument 0 is the regexp to match
+# Argument 1 is the name of the dumped tree pass
+# Argument 2 handles expected failures and the like
+proc scan-offload-tree-dump { args } {
+
+    if { [llength $args] < 2 } {
+	error "scan-offload-tree-dump: too few arguments"
+	return
+    }
+    if { [llength $args] > 3 } {
+	error "scan-offload-tree-dump: too many arguments"
+	return
+    }
+    if { [llength $args] >= 3 } {
+	scan-dump "offload-tree" [lindex $args 0] \
+		  "\[0-9\]\[0-9\]\[0-9]t.[lindex $args 1]" ".o" \
+		  [lindex $args 2]
+    } else {
+	scan-dump "offload-tree" [lindex $args 0] \
+		  "\[0-9\]\[0-9\]\[0-9]t.[lindex $args 1]" ".o"
+    }
+}
+
+# Call pass if pattern is present given number of times, otherwise fail.
+# Argument 0 is the regexp to match
+# Argument 1 is number of times the regexp must be found
+# Argument 2 is the name of the dumped tree pass
+# Argument 3 handles expected failures and the like
+proc scan-offload-tree-dump-times { args } {
+
+    if { [llength $args] < 3 } {
+	error "scan-offload-tree-dump: too few arguments"
+	return
+    }
+    if { [llength $args] > 4 } {
+	error "scan-offload-tree-dump: too many arguments"
+	return
+    }
+    if { [llength $args] >= 4 } {
+	scan-dump-times "offload-tree" [lindex $args 0] [lindex $args 1] \
+			"\[0-9\]\[0-9\]\[0-9]t.[lindex $args 2]" ".o" \
+			[lindex $args 3]
+    } else {
+	scan-dump-times "offload-tree" [lindex $args 0] [lindex $args 1] \
+			"\[0-9\]\[0-9\]\[0-9]t.[lindex $args 2]" ".o"
+    }
+}
+
+# Call pass if pattern is not present, otherwise fail.
+#
+# Argument 0 is the regexp to match
+# Argument 1 is the name of the dumped tree pass
+# Argument 2 handles expected failures and the like
+proc scan-offload-tree-dump-not { args } {
+
+    if { [llength $args] < 2 } {
+	error "scan-offload-tree-dump-not: too few arguments"
+	return
+    }
+    if { [llength $args] > 3 } {
+	error "scan-offload-tree-dump-not: too many arguments"
+	return
+    }
+    if { [llength $args] >= 3 } {
+	scan-dump-not "offload-tree" [lindex $args 0] \
+		      "\[0-9\]\[0-9\]\[0-9]t.[lindex $args 1]" ".o" \
+		      [lindex $args 2]
+    } else {
+	scan-dump-not "offload-tree" [lindex $args 0] \
+		      "\[0-9\]\[0-9\]\[0-9]t.[lindex $args 1]" ".o"
+    }
+}
+
+# Utility for scanning demangled compiler result, invoked via dg-final.
+# Call pass if pattern is present, otherwise fail.
+#
+# Argument 0 is the regexp to match
+# Argument 1 is the name of the dumped tree pass
+# Argument 2 handles expected failures and the like
+proc scan-offload-tree-dump-dem { args } {
+
+    if { [llength $args] < 2 } {
+	error "scan-offload-tree-dump-dem: too few arguments"
+	return
+    }
+    if { [llength $args] > 3 } {
+	error "scan-offload-tree-dump-dem: too many arguments"
+	return
+    }
+    if { [llength $args] >= 3 } {
+	scan-dump-dem "offload-tree" [lindex $args 0] \
+		      "\[0-9\]\[0-9\]\[0-9]t.[lindex $args 1]" ".o" \
+		      [lindex $args 2]
+    } else {
+	scan-dump-dem "offload-tree" [lindex $args 0] \
+		      "\[0-9\]\[0-9\]\[0-9]t.[lindex $args 1]" ".o"
+    }
+}
+
+# Call pass if demangled pattern is not present, otherwise fail.
+#
+# Argument 0 is the regexp to match
+# Argument 1 is the name of the dumped tree pass
+# Argument 2 handles expected failures and the like
+proc scan-offload-tree-dump-dem-not { args } {
+
+    if { [llength $args] < 2 } {
+	error "scan-offload-tree-dump-dem-not: too few arguments"
+	return
+    }
+    if { [llength $args] > 3 } {
+	error "scan-offload-tree-dump-dem-not: too many arguments"
+	return
+    }
+    if { [llength $args] >= 3 } {
+	scan-dump-dem-not "offload-tree" [lindex $args 0] \
+			  "\[0-9\]\[0-9\]\[0-9]t.[lindex $args 1]" ".o" \
+			  [lindex $args 2]
+    } else {
+	scan-dump-dem-not "offload-tree" [lindex $args 0] \
+			  "\[0-9\]\[0-9\]\[0-9]t.[lindex $args 1]" ".o"
+    }
+}
diff --git a/libgomp/testsuite/lib/libgomp-dg.exp b/libgomp/testsuite/lib/libgomp-dg.exp
index ebf78e1..726b924 100644
--- a/libgomp/testsuite/lib/libgomp-dg.exp
+++ b/libgomp/testsuite/lib/libgomp-dg.exp
@@ -1,4 +1,12 @@
 proc libgomp-dg-test { prog do_what extra_tool_flags } {
+    # Force the dumpbase for test.c to test.o, such that scan-offload-*-dump
+    # will work.
+    foreach opt $extra_tool_flags {
+	if { [regexp ^-foffload=-fdump- $opt] } {
+	    lappend extra_tool_flags "-save-temps"
+	}
+    }
+
     return [gcc-dg-test-1 libgomp_target_compile $prog $do_what $extra_tool_flags]
 }
 
diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp
index 3678e12..7d7a358 100644
--- a/libgomp/testsuite/lib/libgomp.exp
+++ b/libgomp/testsuite/lib/libgomp.exp
@@ -28,6 +28,7 @@ load_gcc_lib scanasm.exp
 load_gcc_lib scandump.exp
 load_gcc_lib scanrtl.exp
 load_gcc_lib scantree.exp
+load_gcc_lib scanoffloadtree.exp
 load_gcc_lib scanipa.exp
 load_gcc_lib scanwpaipa.exp
 load_gcc_lib timeout-dg.exp

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