Add nvptx_override_options_after_change
authorTom de Vries <tom@codesourcery.com>
Fri, 21 Jul 2017 09:46:05 +0000 (09:46 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Fri, 21 Jul 2017 09:46:05 +0000 (09:46 +0000)
2017-07-21  Tom de Vries  <tom@codesourcery.com>

PR lto/81430
* config/nvptx/nvptx.c (nvptx_override_options_after_change): New
function.
(TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define to
nvptx_override_options_after_change.

From-SVN: r250421

gcc/ChangeLog
gcc/config/nvptx/nvptx.c

index bfc1773..7ff7f10 100644 (file)
@@ -1,3 +1,11 @@
+2017-07-21  Tom de Vries  <tom@codesourcery.com>
+
+       PR lto/81430
+       * config/nvptx/nvptx.c (nvptx_override_options_after_change): New
+       function.
+       (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define to
+       nvptx_override_options_after_change.
+
 2017-07-21  Ulrich Drepper  <drepper@redhat.com>
 
        * dwarf2out.c (output_file_names): Avoid double testing for
index d0aa054..a718054 100644 (file)
@@ -207,6 +207,17 @@ nvptx_option_override (void)
     target_flags |= MASK_SOFT_STACK | MASK_UNIFORM_SIMT;
 }
 
+/* Implement TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE.  */
+
+static void
+nvptx_override_options_after_change (void)
+{
+  /* This is a workaround for PR81430 - nvptx acceleration compilation broken
+     because of running pass_partition_blocks.  This should be dealt with in the
+     common code, not in the target.  */
+  flag_reorder_blocks_and_partition = 0;
+}
+
 /* Return a ptx type for MODE.  If PROMOTE, then use .u32 for QImode to
    deal with ptx ideosyncracies.  */
 
@@ -5505,6 +5516,9 @@ nvptx_data_alignment (const_tree type, unsigned int basic_align)
 #undef TARGET_OPTION_OVERRIDE
 #define TARGET_OPTION_OVERRIDE nvptx_option_override
 
+#undef TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE
+#define TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE nvptx_override_options_after_change
+
 #undef TARGET_ATTRIBUTE_TABLE
 #define TARGET_ATTRIBUTE_TABLE nvptx_attribute_table