From 8c05890538811eaf8a862642359099a8ffce2f80 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Henry=20Linjam=C3=A4ki?= Date: Fri, 4 Aug 2017 15:50:14 +0000 Subject: [PATCH] re PR hsa/81713 (BIT_FIELD_REF produced by Brig FE do not pass new verification) Fix PR 81713 * brigfrontend/brig-basic-inst-handler.cc: replace build_int_cst with bitsize_int in building BIT_FIELD_REF. * brigfrontend/brig-code-entry-handler.cc: likewise. From-SVN: r250874 --- gcc/brig/ChangeLog | 7 ++++++ .../brigfrontend/brig-basic-inst-handler.cc | 7 +++--- .../brigfrontend/brig-code-entry-handler.cc | 22 ++++++++----------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/gcc/brig/ChangeLog b/gcc/brig/ChangeLog index f7c82f44107..08045329eeb 100644 --- a/gcc/brig/ChangeLog +++ b/gcc/brig/ChangeLog @@ -1,3 +1,10 @@ +2017-08-04 Henry Linjamäki + + Fix PR 81713 + * brigfrontend/brig-basic-inst-handler.cc: replace build_int_cst with + bitsize_int in building BIT_FIELD_REF. + * brigfrontend/brig-code-entry-handler.cc: likewise. + 2017-07-05 Richard Sandiford Alan Hayward David Sherwood diff --git a/gcc/brig/brigfrontend/brig-basic-inst-handler.cc b/gcc/brig/brigfrontend/brig-basic-inst-handler.cc index 68d81986f1c..8288d665513 100644 --- a/gcc/brig/brigfrontend/brig-basic-inst-handler.cc +++ b/gcc/brig/brigfrontend/brig-basic-inst-handler.cc @@ -33,6 +33,7 @@ #include "stor-layout.h" #include "diagnostic-core.h" #include "brig-builtins.h" +#include "fold-const.h" brig_basic_inst_handler::brig_basic_inst_handler (brig_to_generic &parent) : brig_code_entry_handler (parent) @@ -112,10 +113,8 @@ brig_basic_inst_handler::build_shuffle (tree arith_type, { tree mask_element = build3 (BIT_FIELD_REF, mask_element_type, mask_operand, - build_int_cst (unsigned_char_type_node, - input_mask_element_size), - build_int_cst (unsigned_char_type_node, - i * input_mask_element_size)); + bitsize_int (input_mask_element_size), + bitsize_int (i * input_mask_element_size)); mask_element = convert (element_type, mask_element); diff --git a/gcc/brig/brigfrontend/brig-code-entry-handler.cc b/gcc/brig/brigfrontend/brig-code-entry-handler.cc index 906f47e76b3..8f07d372796 100644 --- a/gcc/brig/brigfrontend/brig-code-entry-handler.cc +++ b/gcc/brig/brigfrontend/brig-code-entry-handler.cc @@ -1423,9 +1423,8 @@ brig_code_entry_handler::build_output_assignment (const BrigInstBase &brig_inst, tree element_ref = build3 (BIT_FIELD_REF, element_type, input, TYPE_SIZE (element_type), - build_int_cst (uint32_type_node, - i * int_size_in_bytes (element_type) - * BITS_PER_UNIT)); + bitsize_int (i * int_size_in_bytes (element_type) + * BITS_PER_UNIT)); last_assign = build_output_assignment (brig_inst, element, element_ref); @@ -1488,7 +1487,7 @@ brig_code_entry_handler::unpack (tree value, tree_stl_vec &elements) tree element = build3 (BIT_FIELD_REF, input_element_type, value, TYPE_SIZE (input_element_type), - build_int_cst (unsigned_char_type_node, i * element_size)); + bitsize_int(i * element_size)); element = add_temp_var ("scalar", element); elements.push_back (element); @@ -1543,9 +1542,8 @@ tree_element_unary_visitor::operator () (brig_code_entry_handler &handler, { tree element = build3 (BIT_FIELD_REF, input_element_type, operand, TYPE_SIZE (input_element_type), - build_int_cst (unsigned_char_type_node, - i * element_size - * BITS_PER_UNIT)); + bitsize_int (i * element_size + * BITS_PER_UNIT)); tree output = visit_element (handler, element); output_element_type = TREE_TYPE (output); @@ -1594,15 +1592,13 @@ tree_element_binary_visitor::operator () (brig_code_entry_handler &handler, tree element0 = build3 (BIT_FIELD_REF, input_element_type, operand0, TYPE_SIZE (input_element_type), - build_int_cst (unsigned_char_type_node, - i * element_size - * BITS_PER_UNIT)); + bitsize_int (i * element_size + * BITS_PER_UNIT)); tree element1 = build3 (BIT_FIELD_REF, input_element_type, operand1, TYPE_SIZE (input_element_type), - build_int_cst (unsigned_char_type_node, - i * element_size - * BITS_PER_UNIT)); + bitsize_int (i * element_size + * BITS_PER_UNIT)); tree output = visit_element (handler, element0, element1); output_element_type = TREE_TYPE (output); -- 2.30.2