aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Stubbs <ams@codesourcery.com>2019-01-17 12:36:49 +0000
committerAndrew Stubbs <ams@gcc.gnu.org>2019-01-17 12:36:49 +0000
commitb50002c4ef663659fcdf8c7b7bad2f3aaa710fea (patch)
tree1ba31db0ac2a49e75a4db2ed1929691922672a0d /gcc
parent90eb9be6eb4a7286cf2864d7846103a66c7e3741 (diff)
downloadgcc-b50002c4ef663659fcdf8c7b7bad2f3aaa710fea.zip
gcc-b50002c4ef663659fcdf8c7b7bad2f3aaa710fea.tar.gz
gcc-b50002c4ef663659fcdf8c7b7bad2f3aaa710fea.tar.bz2
Ignore LLVM's blank lines.
The GCN toolchain must use the LLVM assembler and linker because there's no binutils port. The LLVM tools do not have the same diagnostic style as binutils, so the "blank line(s) in output" tests are inappropriate (and very noisy). The LLVM tools also have different command line options, so it's not possible to autodetect object formats in the same way. This patch addresses both issues. 2019-01-17 Andrew Stubbs <ams@codesourcery.com> gcc/ * doc/sourcebuild.texi: Document dg-require-effective-target llvm_binutils and offload_gcn. gcc/testsuite/ * lib/file-format.exp (gcc_target_object_format): Handle AMD GCN. * lib/gcc-dg.exp (gcc-dg-prune): Ignore blank lines from the LLVM linker. * lib/target-supports.exp (check_effective_target_llvm_binutils): New. From-SVN: r268027
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/doc/sourcebuild.texi6
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/lib/file-format.exp3
-rw-r--r--gcc/testsuite/lib/gcc-dg.exp2
-rw-r--r--gcc/testsuite/lib/target-supports.exp13
6 files changed, 35 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2a4130e..bf3146d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,9 @@
2019-01-17 Andrew Stubbs <ams@codesourcery.com>
+
+ * doc/sourcebuild.texi: Document dg-require-effective-target
+ llvm_binutils and offload_gcn.
+
+2019-01-17 Andrew Stubbs <ams@codesourcery.com>
Kwok Cheung Yeung <kcy@codesourcery.com>
Julian Brown <julian@codesourcery.com>
Tom de Vries <tom@codesourcery.com>
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index c93a516..b2e6aa4 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2265,6 +2265,9 @@ Target uses GNU @command{ld}.
Target keeps null pointer checks, either due to the use of
@option{-fno-delete-null-pointer-checks} or hardwired into the target.
+@item llvm_binutils
+Target is using an LLVM assembler and/or linker, instead of GNU Binutils.
+
@item lto
Compiler has been configured to support link-time optimization (LTO).
@@ -2289,6 +2292,9 @@ Target uses natural alignment (aligned to type size) for types of
@item nonpic
Target does not generate PIC by default.
+@item offload_gcn
+Target has been configured for OpenACC/OpenMP offloading on AMD GCN.
+
@item pie_enabled
Target generates PIE by default.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e57b7ee..cf4aa80 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,12 @@
2019-01-17 Andrew Stubbs <ams@codesourcery.com>
+ * lib/file-format.exp (gcc_target_object_format): Handle AMD GCN.
+ * lib/gcc-dg.exp (gcc-dg-prune): Ignore blank lines from the LLVM
+ linker.
+ * lib/target-supports.exp (check_effective_target_llvm_binutils): New.
+
+2019-01-17 Andrew Stubbs <ams@codesourcery.com>
+
* gcc.dg/graphite/scop-19.c: Check pie_enabled.
* gcc.dg/pic-1.c: Disable on amdgcn.
* gcc.dg/pic-2.c: Disable on amdgcn.
diff --git a/gcc/testsuite/lib/file-format.exp b/gcc/testsuite/lib/file-format.exp
index d2495ed..25e0888 100644
--- a/gcc/testsuite/lib/file-format.exp
+++ b/gcc/testsuite/lib/file-format.exp
@@ -41,6 +41,9 @@ proc gcc_target_object_format { } {
} elseif { [istarget *-*-aix*] } {
# AIX doesn't necessarily have objdump, so hand-code it.
set gcc_target_object_format_saved coff
+ } elseif { [istarget *-*-amdhsa*] } {
+ # AMD GCN uses LLVM objdump which is not CLI-compatible
+ set gcc_target_object_format_saved elf
} else {
set objdump_name [find_binutils_prog objdump]
set open_file [open objfmtst.c w]
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index 0b0afe2..d4e2d97 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -363,7 +363,7 @@ proc gcc-dg-prune { system text } {
# Complain about blank lines in the output (PR other/69006)
global allow_blank_lines
- if { !$allow_blank_lines } {
+ if { !$allow_blank_lines && ![check_effective_target_llvm_binutils]} {
set num_blank_lines [llength [regexp -all -inline "\n\n" $text]]
if { $num_blank_lines } {
global testname_with_flags
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 03b5cd5..ec8c67f 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -8779,6 +8779,14 @@ proc check_effective_target_offload_hsa { } {
} "-foffload=hsa" ]
}
+# Return 1 if the compiler has been configured with hsa offloading.
+
+proc check_effective_target_offload_gcn { } {
+ return [check_no_compiler_messages offload_gcn assembly {
+ int main () {return 0;}
+ } "-foffload=amdgcn-unknown-amdhsa" ]
+}
+
# Return 1 if the target support -fprofile-update=atomic
proc check_effective_target_profile_update_atomic {} {
return [check_no_compiler_messages profile_update_atomic assembly {
@@ -9183,3 +9191,8 @@ foreach N {df} {
}]
}
+# Return 1 if this target uses an LLVM assembler and/or linker
+proc check_effective_target_llvm_binutils { } {
+ return [expr { [istarget amdgcn*-*-*]
+ || [check_effective_target_offload_gcn] } ]
+}