[c++] Don't emit exception tables for UI_NONE
authorTom de Vries <tdevries@suse.de>
Fri, 3 Aug 2018 11:21:09 +0000 (11:21 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Fri, 3 Aug 2018 11:21:09 +0000 (11:21 +0000)
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

gcc/ChangeLog
gcc/common/config/nvptx/nvptx-common.c
gcc/config/nvptx/nvptx.c
gcc/except.c

index 885534076120207f41b62ab2eb1e7519813ad9d2..8d2814b19b30476495e6510cbf673bbdf30a6b4d 100644 (file)
@@ -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
index f31e0696281d25600017b20247e99fafa02e115a..3a124e8844d180bcb663c8d1ff5250011a149064 100644 (file)
@@ -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
index 62fefda8612037ef1dbcada6aeae25c1548521f0..c0b0a2ec3ab95f71132d3f49134ac6b2128b4b63 100644 (file)
@@ -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"
index 84666d9041ea7a0c055dd2371ba7119da2af98e5..728b1e1d349cfba5b76e575ad04ebe3d245b6e53 100644 (file)
@@ -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.  */