From b50002c4ef663659fcdf8c7b7bad2f3aaa710fea Mon Sep 17 00:00:00 2001 From: Andrew Stubbs Date: Thu, 17 Jan 2019 12:36:49 +0000 Subject: [PATCH] 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 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 --- gcc/ChangeLog | 5 +++++ gcc/doc/sourcebuild.texi | 6 ++++++ gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/lib/file-format.exp | 3 +++ gcc/testsuite/lib/gcc-dg.exp | 2 +- gcc/testsuite/lib/target-supports.exp | 13 +++++++++++++ 6 files changed, 35 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2a4130e9193..bf3146d3257 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2019-01-17 Andrew Stubbs + + * doc/sourcebuild.texi: Document dg-require-effective-target + llvm_binutils and offload_gcn. + 2019-01-17 Andrew Stubbs Kwok Cheung Yeung Julian Brown diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index c93a516f966..b2e6aa42cd7 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 e57b7ee5cea..cf4aa8086cb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2019-01-17 Andrew Stubbs + + * 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 * gcc.dg/graphite/scop-19.c: Check pie_enabled. diff --git a/gcc/testsuite/lib/file-format.exp b/gcc/testsuite/lib/file-format.exp index d2495ed5389..25e0888f8b3 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 0b0afe2ea0c..d4e2d97ee5b 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 03b5cd5e6b6..ec8c67f4f41 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] } ] +} -- 2.30.2