Hi! On Wed, 11 Feb 2015 15:50:20 +0100, I wrote: > On Wed, 11 Feb 2015 15:44:26 +0100, I wrote: > > If -freorder-blocks-and-partition is active, this results in PTX code > > such as: [...]
> Such partitioning might not make a lot of sense for the virtual ISA that > PTX is, but disabling it in nvptx.c:nvptx_option_override does not work. > (Because that is not invoked in the offloading code path?) I see x86 has > a ix86_option_override_internal (but I don't know how that options > processing works) -- is something like that needed for nvptx, too, and > how to interconnect that with the offloading code path? Sounds a bit > like what Jakub suggests in <https://gcc.gnu.org/PR64374#c8>? Am I on the right track with my assumption that it is correct that nvptx.c:nvptx_option_override is not invoked in the offloading code path, so we'd need a new target hook (?) to consolidate/override the options in this scenario? Using this to forcefully disable -fvar-tracking (as done in nvptx_option_override), should then allow me to drop the following beautiful specimen of a patch (which I didn't commit anywhere, so far): commit ab5a010357f4c7347dd892f3666cdeecd08cc083 Author: Thomas Schwinge <tho...@codesourcery.com> Date: Mon Feb 16 13:57:08 2015 +0100 libgomp Fortran testing: for -g torture testing, disable variable tracking. Otherwise, the nvptx-none offloading compiler will run into issues such as: source-gcc/libgomp/testsuite/libgomp.fortran/examples-4/e.50.1.f90: In function '__e_50_1_mod_MOD_vec_mult._omp_fn.1': source-gcc/libgomp/testsuite/libgomp.fortran/examples-4/e.50.1.f90:31:0: internal compiler error: in use_type, at var-tracking.c:5442 p(i) = v1(i) * v2(i) ^ 0xc4dc72 use_type source-gcc/gcc/var-tracking.c:5442 0xc504b3 add_stores source-gcc/gcc/var-tracking.c:5869 0xc4cd28 add_with_sets source-gcc/gcc/var-tracking.c:6553 0x5e9b7d cselib_record_sets source-gcc/gcc/cselib.c:2574 0x5ea8a7 cselib_process_insn(rtx_insn*) source-gcc/gcc/cselib.c:2686 0xc586a3 vt_initialize source-gcc/gcc/var-tracking.c:10126 0xc65a8e variable_tracking_main_1 source-gcc/gcc/var-tracking.c:10322 0xc65a8e variable_tracking_main source-gcc/gcc/var-tracking.c:10375 0xc65a8e execute source-gcc/gcc/var-tracking.c:10412 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. mkoffload: fatal error: install/offload-nvptx-none/bin//x86_64-unknown-linux-gnu-accel-nvptx-none-gcc returned 1 exit status --- libgomp/testsuite/libgomp.fortran/fortran.exp | 3 +++ libgomp/testsuite/libgomp.oacc-fortran/fortran.exp | 3 +++ 2 files changed, 6 insertions(+) diff --git libgomp/testsuite/libgomp.fortran/fortran.exp libgomp/testsuite/libgomp.fortran/fortran.exp index 9e6b643..0b597e6 100644 --- libgomp/testsuite/libgomp.fortran/fortran.exp +++ libgomp/testsuite/libgomp.fortran/fortran.exp @@ -21,6 +21,9 @@ dg-init # Turn on OpenMP. lappend ALWAYS_CFLAGS "additional_flags=-fopenmp" +# TODO: for -g torture testing, disable variable tracking. +regsub -all -- { -g[^ ]*} $DG_TORTURE_OPTIONS {& -fno-var-tracking} DG_TORTURE_OPTIONS + if { $blddir != "" } { set lang_source_re {^.*\.[fF](|90|95|03|08)$} set lang_include_flags "-fintrinsic-modules-path=${blddir}" diff --git libgomp/testsuite/libgomp.oacc-fortran/fortran.exp libgomp/testsuite/libgomp.oacc-fortran/fortran.exp index a8f62e8..080a7b9 100644 --- libgomp/testsuite/libgomp.oacc-fortran/fortran.exp +++ libgomp/testsuite/libgomp.oacc-fortran/fortran.exp @@ -23,6 +23,9 @@ dg-init # Turn on OpenACC. lappend ALWAYS_CFLAGS "additional_flags=-fopenacc" +# TODO: for -g torture testing, disable variable tracking. +regsub -all -- { -g[^ ]*} $DG_TORTURE_OPTIONS {& -fno-var-tracking} DG_TORTURE_OPTIONS + if { $blddir != "" } { set lang_source_re {^.*\.[fF](|90|95|03|08)$} set lang_include_flags "-fintrinsic-modules-path=${blddir}" Grüße, Thomas
signature.asc
Description: PGP signature