Hi,
this patch adds nvptx_override_options_after_change, containing a
workaround for PR81430.
Tested on x86_64 with nvptx accelerator.
Committed.
Thanks,
- Tom
Add nvptx_override_options_after_change
2017-07-21 Tom de Vries <t...@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.
---
gcc/config/nvptx/nvptx.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c
index d0aa054..a718054 100644
--- a/gcc/config/nvptx/nvptx.c
+++ b/gcc/config/nvptx/nvptx.c
@@ -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