summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2018-08-03 11:21:09 +0000
committerTom de Vries <vries@gcc.gnu.org>2018-08-03 11:21:09 +0000
commitd989dba8ef02c2406b7c9e62b352197dffc6b880 (patch)
tree583b687ac4891326b23d1469a5fd735ff85ffff9
parenta77e3a39de3843a8c0a0d59635b2bdd07ee67812 (diff)
[c++] Don't emit exception tables for UI_NONE
If a target does not support exceptions, it can indicate this by returning UI_NONE in TARGET_EXCEPT_UNWIND_INFO. Currently the compiler still emits exception tables for such a target. This patch makes sure that no exception tables are emitted if the target does not support exceptions. This allows us to remove a workaround in TARGET_ASM_BYTE_OP in the nvptx port. Build on x86_64 with nvptx accelerator, and tested libgomp. Build and reg-tested on x86_64. 2018-08-03 Tom de Vries <tdevries@suse.de> * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): Return UI_NONE. * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Remove define. * except.c (output_function_exception_table): Do early exit if targetm_common.except_unwind_info (&global_options) == UI_NONE. From-SVN: r263287
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/common/config/nvptx/nvptx-common.c2
-rw-r--r--gcc/config/nvptx/nvptx.c3
-rw-r--r--gcc/except.c3
4 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 88553407612..8d2814b19b3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2018-08-03 Tom de Vries <tdevries@suse.de>
+
+ * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): Return
+ UI_NONE.
+ * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Remove define.
+ * except.c (output_function_exception_table): Do early exit if
+ targetm_common.except_unwind_info (&global_options) == UI_NONE.
+
2018-08-03 Martin Liska <mliska@suse.cz>
* predict.c (dump_prediction): Change to 2 digits
diff --git a/gcc/common/config/nvptx/nvptx-common.c b/gcc/common/config/nvptx/nvptx-common.c
index f31e0696281..3a124e8844d 100644
--- a/gcc/common/config/nvptx/nvptx-common.c
+++ b/gcc/common/config/nvptx/nvptx-common.c
@@ -33,7 +33,7 @@ along with GCC; see the file COPYING3. If not see
enum unwind_info_type
nvptx_except_unwind_info (struct gcc_options *opts ATTRIBUTE_UNUSED)
{
- return UI_TARGET;
+ return UI_NONE;
}
#undef TARGET_HAVE_NAMED_SECTIONS
diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c
index 62fefda8612..c0b0a2ec3ab 100644
--- a/gcc/config/nvptx/nvptx.c
+++ b/gcc/config/nvptx/nvptx.c
@@ -6051,9 +6051,6 @@ nvptx_can_change_mode_class (machine_mode, machine_mode, reg_class_t)
#undef TARGET_HAVE_SPECULATION_SAFE_VALUE
#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed
-#undef TARGET_ASM_BYTE_OP
-#define TARGET_ASM_BYTE_OP "// .byte "
-
struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-nvptx.h"
diff --git a/gcc/except.c b/gcc/except.c
index 84666d9041e..728b1e1d349 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -3189,7 +3189,8 @@ output_function_exception_table (int section)
rtx personality = get_personality_function (current_function_decl);
/* Not all functions need anything. */
- if (!crtl->uses_eh_lsda)
+ if (!crtl->uses_eh_lsda
+ || targetm_common.except_unwind_info (&global_options) == UI_NONE)
return;
/* No need to emit any boilerplate stuff for the cold part. */