public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Store_bit_field_1: Use SUBREG instead of REG if possible
@ 2023-07-19  4:14 YunQiang Su
  0 siblings, 0 replies; only message in thread
From: YunQiang Su @ 2023-07-19  4:14 UTC (permalink / raw)
  To: gcc-patches; +Cc: pinskia, jeffreyalaw, ian, rguenther, YunQiang Su

PR #104914

When work with
  int val;
  ((unsigned char*)&val)[3] = *buf;
  if (val > 0) ...
The RTX mode is obtained from REG instead of SUBREG, which make
D<INS> is used instead of <INS>.  Thus something wrong happens
on sign-extend default architectures, like MIPS64.

Let's use str_rtx and mode of str_rtx as the parameters for
store_integral_bit_field if:
  modes of op0 and str_rtx are INT;
  length of op0 is greater than str_rtx.

This patch has been tested on aarch64-linux-gnu, x86_64-linux-gnu,
mips64el-linux-gnuabi64 without regression.

gcc/ChangeLog:
        PR: 104914.
        * expmed.cc(store_bit_field_1): Pass str_rtx and its mode
	to store_integral_bit_field if the length of op0 is greater
	than str_rtx.

gcc/testsuite/ChangeLog:
        PR: 104914.
	* gcc.target/mips/pr104914.c: New testcase.
---
 gcc/expmed.cc                            |  20 +-
 gcc/testsuite/gcc.target/mips/pr104914.c |  17 ++
 gcc/xx                                   | 233 +++++++++++++++++++++++
 gcc/xx.log                               |   1 +
 4 files changed, 268 insertions(+), 3 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/mips/pr104914.c
 create mode 100644 gcc/xx
 create mode 100644 gcc/xx.log

diff --git a/gcc/expmed.cc b/gcc/expmed.cc
index fbd4ce2d42f..5531c19e891 100644
--- a/gcc/expmed.cc
+++ b/gcc/expmed.cc
@@ -850,6 +850,7 @@ store_bit_field_1 (rtx str_rtx, poly_uint64 bitsize, poly_uint64 bitnum,
      since that case is valid for any mode.  The following cases are only
      valid for integral modes.  */
   opt_scalar_int_mode op0_mode = int_mode_for_mode (GET_MODE (op0));
+  opt_scalar_int_mode str_mode = int_mode_for_mode (GET_MODE (str_rtx));
   scalar_int_mode imode;
   if (!op0_mode.exists (&imode) || imode != GET_MODE (op0))
     {
@@ -881,9 +882,22 @@ store_bit_field_1 (rtx str_rtx, poly_uint64 bitsize, poly_uint64 bitnum,
 	op0 = gen_lowpart (op0_mode.require (), op0);
     }
 
-  return store_integral_bit_field (op0, op0_mode, ibitsize, ibitnum,
-				   bitregion_start, bitregion_end,
-				   fieldmode, value, reverse, fallback_p);
+  /* If MODEs of str_rtx and op0 are INT, and the length of op0 is greater than
+     str_rtx, it means that str_rtx has a shorter SUBREG: int32 on 64 mach/ABI
+     is an example.  For this case, we should use the mode of SUBREG, otherwise
+     bad code will generate for sign-extension ports, like MIPS.  */
+  bool use_str_mode = false;
+  if (GET_MODE_CLASS (GET_MODE (str_rtx)) == MODE_INT
+      && GET_MODE_CLASS (GET_MODE (op0)) == MODE_INT
+      && known_gt (GET_MODE_SIZE (GET_MODE (op0)),
+		   GET_MODE_SIZE (GET_MODE (str_rtx))))
+    use_str_mode = true;
+
+  return store_integral_bit_field (use_str_mode ? str_rtx : op0,
+				   use_str_mode ? str_mode : op0_mode,
+				   ibitsize, ibitnum, bitregion_start,
+				   bitregion_end, fieldmode, value,
+				   reverse, fallback_p);
 }
 
 /* Subroutine of store_bit_field_1, with the same arguments, except
diff --git a/gcc/testsuite/gcc.target/mips/pr104914.c b/gcc/testsuite/gcc.target/mips/pr104914.c
new file mode 100644
index 00000000000..fd6ef6af446
--- /dev/null
+++ b/gcc/testsuite/gcc.target/mips/pr104914.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-march=mips64r2 -mabi=64" } */
+
+/* { dg-final { scan-assembler-not "\tdins\t" } } */
+
+NOMIPS16 int test (const unsigned char *buf)
+{
+  int val;
+  ((unsigned char*)&val)[0] = *buf++;
+  ((unsigned char*)&val)[1] = *buf++;
+  ((unsigned char*)&val)[2] = *buf++;
+  ((unsigned char*)&val)[3] = *buf++;
+  if(val > 0)
+    return 1;
+  else
+    return 0;
+}
diff --git a/gcc/xx b/gcc/xx
new file mode 100644
index 00000000000..664e8ba8b25
--- /dev/null
+++ b/gcc/xx
@@ -0,0 +1,233 @@
+DEFTREECODE (ERROR_MARK, "error_mark", tcc_exceptional, 0)
+DEFTREECODE (IDENTIFIER_NODE, "identifier_node", tcc_exceptional, 0)
+DEFTREECODE (TREE_LIST, "tree_list", tcc_exceptional, 0)
+DEFTREECODE (TREE_VEC, "tree_vec", tcc_exceptional, 0)
+DEFTREECODE (BLOCK, "block", tcc_exceptional, 0)
+DEFTREECODE (OFFSET_TYPE, "offset_type", tcc_type, 0)
+DEFTREECODE (ENUMERAL_TYPE, "enumeral_type", tcc_type, 0)
+DEFTREECODE (BOOLEAN_TYPE, "boolean_type", tcc_type, 0)
+DEFTREECODE (INTEGER_TYPE, "integer_type", tcc_type, 0)
+DEFTREECODE (REAL_TYPE, "real_type", tcc_type, 0)
+DEFTREECODE (POINTER_TYPE, "pointer_type", tcc_type, 0)
+DEFTREECODE (REFERENCE_TYPE, "reference_type", tcc_type, 0)
+DEFTREECODE (NULLPTR_TYPE, "nullptr_type", tcc_type, 0)
+DEFTREECODE (FIXED_POINT_TYPE, "fixed_point_type", tcc_type, 0)
+DEFTREECODE (COMPLEX_TYPE, "complex_type", tcc_type, 0)
+DEFTREECODE (VECTOR_TYPE, "vector_type", tcc_type, 0)
+DEFTREECODE (ARRAY_TYPE, "array_type", tcc_type, 0)
+DEFTREECODE (RECORD_TYPE, "record_type", tcc_type, 0)
+DEFTREECODE (UNION_TYPE, "union_type", tcc_type, 0)	/* C union type */
+DEFTREECODE (QUAL_UNION_TYPE, "qual_union_type", tcc_type, 0)
+DEFTREECODE (VOID_TYPE, "void_type", tcc_type, 0)
+DEFTREECODE (FUNCTION_TYPE, "function_type", tcc_type, 0)
+DEFTREECODE (METHOD_TYPE, "method_type", tcc_type, 0)
+DEFTREECODE (LANG_TYPE, "lang_type", tcc_type, 0)
+DEFTREECODE (OPAQUE_TYPE, "opaque_type", tcc_type, 0)
+DEFTREECODE (VOID_CST, "void_cst", tcc_constant, 0)
+DEFTREECODE (INTEGER_CST, "integer_cst", tcc_constant, 0)
+DEFTREECODE (POLY_INT_CST, "poly_int_cst", tcc_constant, 0)
+DEFTREECODE (REAL_CST, "real_cst", tcc_constant, 0)
+DEFTREECODE (FIXED_CST, "fixed_cst", tcc_constant, 0)
+DEFTREECODE (COMPLEX_CST, "complex_cst", tcc_constant, 0)
+DEFTREECODE (VECTOR_CST, "vector_cst", tcc_constant, 0)
+DEFTREECODE (STRING_CST, "string_cst", tcc_constant, 0)
+DEFTREECODE (FUNCTION_DECL, "function_decl", tcc_declaration, 0)
+DEFTREECODE (LABEL_DECL, "label_decl", tcc_declaration, 0)
+DEFTREECODE (FIELD_DECL, "field_decl", tcc_declaration, 0)
+DEFTREECODE (VAR_DECL, "var_decl", tcc_declaration, 0)
+DEFTREECODE (CONST_DECL, "const_decl", tcc_declaration, 0)
+DEFTREECODE (PARM_DECL, "parm_decl", tcc_declaration, 0)
+DEFTREECODE (TYPE_DECL, "type_decl", tcc_declaration, 0)
+DEFTREECODE (RESULT_DECL, "result_decl", tcc_declaration, 0)
+DEFTREECODE (DEBUG_EXPR_DECL, "debug_expr_decl", tcc_declaration, 0)
+DEFTREECODE (DEBUG_BEGIN_STMT, "debug_begin_stmt", tcc_statement, 0)
+DEFTREECODE (NAMESPACE_DECL, "namespace_decl", tcc_declaration, 0)
+DEFTREECODE (IMPORTED_DECL, "imported_decl", tcc_declaration, 0)
+DEFTREECODE (NAMELIST_DECL, "namelist_decl", tcc_declaration, 0)
+DEFTREECODE (TRANSLATION_UNIT_DECL, "translation_unit_decl",\
+DEFTREECODE (COMPONENT_REF, "component_ref", tcc_reference, 3)
+DEFTREECODE (BIT_FIELD_REF, "bit_field_ref", tcc_reference, 3)
+DEFTREECODE (ARRAY_REF, "array_ref", tcc_reference, 4)
+DEFTREECODE (ARRAY_RANGE_REF, "array_range_ref", tcc_reference, 4)
+DEFTREECODE (REALPART_EXPR, "realpart_expr", tcc_reference, 1)
+DEFTREECODE (IMAGPART_EXPR, "imagpart_expr", tcc_reference, 1)
+DEFTREECODE (VIEW_CONVERT_EXPR, "view_convert_expr", tcc_reference, 1)
+DEFTREECODE (INDIRECT_REF, "indirect_ref", tcc_reference, 1)
+DEFTREECODE (OBJ_TYPE_REF, "obj_type_ref", tcc_expression, 3)
+DEFTREECODE (CONSTRUCTOR, "constructor", tcc_exceptional, 0)
+DEFTREECODE (COMPOUND_EXPR, "compound_expr", tcc_expression, 2)
+DEFTREECODE (MODIFY_EXPR, "modify_expr", tcc_expression, 2)
+DEFTREECODE (INIT_EXPR, "init_expr", tcc_expression, 2)
+DEFTREECODE (TARGET_EXPR, "target_expr", tcc_expression, 4)
+DEFTREECODE (COND_EXPR, "cond_expr", tcc_expression, 3)
+DEFTREECODE (VEC_DUPLICATE_EXPR, "vec_duplicate_expr", tcc_unary, 1)
+DEFTREECODE (VEC_SERIES_EXPR, "vec_series_expr", tcc_binary, 2)
+DEFTREECODE (VEC_COND_EXPR, "vec_cond_expr", tcc_expression, 3)
+DEFTREECODE (VEC_PERM_EXPR, "vec_perm_expr", tcc_expression, 3)
+DEFTREECODE (BIND_EXPR, "bind_expr", tcc_expression, 3)
+DEFTREECODE (CALL_EXPR, "call_expr", tcc_vl_exp, 3)
+DEFTREECODE (WITH_CLEANUP_EXPR, "with_cleanup_expr", tcc_expression, 1)
+DEFTREECODE (CLEANUP_POINT_EXPR, "cleanup_point_expr", tcc_expression, 1)
+DEFTREECODE (PLACEHOLDER_EXPR, "placeholder_expr", tcc_exceptional, 0)
+DEFTREECODE (PLUS_EXPR, "plus_expr", tcc_binary, 2)
+DEFTREECODE (MINUS_EXPR, "minus_expr", tcc_binary, 2)
+DEFTREECODE (MULT_EXPR, "mult_expr", tcc_binary, 2)
+DEFTREECODE (POINTER_PLUS_EXPR, "pointer_plus_expr", tcc_binary, 2)
+DEFTREECODE (POINTER_DIFF_EXPR, "pointer_diff_expr", tcc_binary, 2)
+DEFTREECODE (MULT_HIGHPART_EXPR, "mult_highpart_expr", tcc_binary, 2)
+DEFTREECODE (TRUNC_DIV_EXPR, "trunc_div_expr", tcc_binary, 2)
+DEFTREECODE (CEIL_DIV_EXPR, "ceil_div_expr", tcc_binary, 2)
+DEFTREECODE (FLOOR_DIV_EXPR, "floor_div_expr", tcc_binary, 2)
+DEFTREECODE (ROUND_DIV_EXPR, "round_div_expr", tcc_binary, 2)
+DEFTREECODE (TRUNC_MOD_EXPR, "trunc_mod_expr", tcc_binary, 2)
+DEFTREECODE (CEIL_MOD_EXPR, "ceil_mod_expr", tcc_binary, 2)
+DEFTREECODE (FLOOR_MOD_EXPR, "floor_mod_expr", tcc_binary, 2)
+DEFTREECODE (ROUND_MOD_EXPR, "round_mod_expr", tcc_binary, 2)
+DEFTREECODE (RDIV_EXPR, "rdiv_expr", tcc_binary, 2)
+DEFTREECODE (EXACT_DIV_EXPR, "exact_div_expr", tcc_binary, 2)
+DEFTREECODE (FIX_TRUNC_EXPR, "fix_trunc_expr", tcc_unary, 1)
+DEFTREECODE (FLOAT_EXPR, "float_expr", tcc_unary, 1)
+DEFTREECODE (NEGATE_EXPR, "negate_expr", tcc_unary, 1)
+DEFTREECODE (MIN_EXPR, "min_expr", tcc_binary, 2)
+DEFTREECODE (MAX_EXPR, "max_expr", tcc_binary, 2)
+DEFTREECODE (ABS_EXPR, "abs_expr", tcc_unary, 1)
+DEFTREECODE (ABSU_EXPR, "absu_expr", tcc_unary, 1)
+DEFTREECODE (LSHIFT_EXPR, "lshift_expr", tcc_binary, 2)
+DEFTREECODE (RSHIFT_EXPR, "rshift_expr", tcc_binary, 2)
+DEFTREECODE (LROTATE_EXPR, "lrotate_expr", tcc_binary, 2)
+DEFTREECODE (RROTATE_EXPR, "rrotate_expr", tcc_binary, 2)
+DEFTREECODE (BIT_IOR_EXPR, "bit_ior_expr", tcc_binary, 2)
+DEFTREECODE (BIT_XOR_EXPR, "bit_xor_expr", tcc_binary, 2)
+DEFTREECODE (BIT_AND_EXPR, "bit_and_expr", tcc_binary, 2)
+DEFTREECODE (BIT_NOT_EXPR, "bit_not_expr", tcc_unary, 1)
+DEFTREECODE (TRUTH_ANDIF_EXPR, "truth_andif_expr", tcc_expression, 2)
+DEFTREECODE (TRUTH_ORIF_EXPR, "truth_orif_expr", tcc_expression, 2)
+DEFTREECODE (TRUTH_AND_EXPR, "truth_and_expr", tcc_expression, 2)
+DEFTREECODE (TRUTH_OR_EXPR, "truth_or_expr", tcc_expression, 2)
+DEFTREECODE (TRUTH_XOR_EXPR, "truth_xor_expr", tcc_expression, 2)
+DEFTREECODE (TRUTH_NOT_EXPR, "truth_not_expr", tcc_expression, 1)
+DEFTREECODE (LT_EXPR, "lt_expr", tcc_comparison, 2)
+DEFTREECODE (LE_EXPR, "le_expr", tcc_comparison, 2)
+DEFTREECODE (GT_EXPR, "gt_expr", tcc_comparison, 2)
+DEFTREECODE (GE_EXPR, "ge_expr", tcc_comparison, 2)
+DEFTREECODE (LTGT_EXPR, "ltgt_expr", tcc_comparison, 2)
+DEFTREECODE (EQ_EXPR, "eq_expr", tcc_comparison, 2)
+DEFTREECODE (NE_EXPR, "ne_expr", tcc_comparison, 2)
+DEFTREECODE (UNORDERED_EXPR, "unordered_expr", tcc_comparison, 2)
+DEFTREECODE (ORDERED_EXPR, "ordered_expr", tcc_comparison, 2)
+DEFTREECODE (UNLT_EXPR, "unlt_expr", tcc_comparison, 2)
+DEFTREECODE (UNLE_EXPR, "unle_expr", tcc_comparison, 2)
+DEFTREECODE (UNGT_EXPR, "ungt_expr", tcc_comparison, 2)
+DEFTREECODE (UNGE_EXPR, "unge_expr", tcc_comparison, 2)
+DEFTREECODE (UNEQ_EXPR, "uneq_expr", tcc_comparison, 2)
+DEFTREECODE (RANGE_EXPR, "range_expr", tcc_binary, 2)
+DEFTREECODE (PAREN_EXPR, "paren_expr", tcc_unary, 1)
+DEFTREECODE (CONVERT_EXPR, "convert_expr", tcc_unary, 1)
+DEFTREECODE (ADDR_SPACE_CONVERT_EXPR, "addr_space_convert_expr", tcc_unary, 1)
+DEFTREECODE (FIXED_CONVERT_EXPR, "fixed_convert_expr", tcc_unary, 1)
+DEFTREECODE (NOP_EXPR, "nop_expr", tcc_unary, 1)
+DEFTREECODE (NON_LVALUE_EXPR, "non_lvalue_expr", tcc_unary, 1)
+DEFTREECODE (COMPOUND_LITERAL_EXPR, "compound_literal_expr", tcc_expression, 1)
+DEFTREECODE (SAVE_EXPR, "save_expr", tcc_expression, 1)
+DEFTREECODE (ADDR_EXPR, "addr_expr", tcc_expression, 1)
+DEFTREECODE (FDESC_EXPR, "fdesc_expr", tcc_expression, 2)
+DEFTREECODE (BIT_INSERT_EXPR, "bit_insert_expr", tcc_expression, 3)
+DEFTREECODE (COMPLEX_EXPR, "complex_expr", tcc_binary, 2)
+DEFTREECODE (CONJ_EXPR, "conj_expr", tcc_unary, 1)
+DEFTREECODE (PREDECREMENT_EXPR, "predecrement_expr", tcc_expression, 2)
+DEFTREECODE (PREINCREMENT_EXPR, "preincrement_expr", tcc_expression, 2)
+DEFTREECODE (POSTDECREMENT_EXPR, "postdecrement_expr", tcc_expression, 2)
+DEFTREECODE (POSTINCREMENT_EXPR, "postincrement_expr", tcc_expression, 2)
+DEFTREECODE (VA_ARG_EXPR, "va_arg_expr", tcc_expression, 1)
+DEFTREECODE (TRY_CATCH_EXPR, "try_catch_expr", tcc_statement, 2)
+DEFTREECODE (TRY_FINALLY_EXPR, "try_finally_expr", tcc_statement, 2)
+DEFTREECODE (EH_ELSE_EXPR, "eh_else_expr", tcc_statement, 2)
+DEFTREECODE (DECL_EXPR, "decl_expr", tcc_statement, 1)
+DEFTREECODE (LABEL_EXPR, "label_expr", tcc_statement, 1)
+DEFTREECODE (GOTO_EXPR, "goto_expr", tcc_statement, 1)
+DEFTREECODE (RETURN_EXPR, "return_expr", tcc_statement, 1)
+DEFTREECODE (EXIT_EXPR, "exit_expr", tcc_statement, 1)
+DEFTREECODE (LOOP_EXPR, "loop_expr", tcc_statement, 1)
+DEFTREECODE (SWITCH_EXPR, "switch_expr", tcc_statement, 2)
+DEFTREECODE (CASE_LABEL_EXPR, "case_label_expr", tcc_statement, 4)
+DEFTREECODE (ASM_EXPR, "asm_expr", tcc_statement, 5)
+DEFTREECODE (SSA_NAME, "ssa_name", tcc_exceptional, 0)
+DEFTREECODE (CATCH_EXPR, "catch_expr", tcc_statement, 2)
+DEFTREECODE (EH_FILTER_EXPR, "eh_filter_expr", tcc_statement, 2)
+DEFTREECODE (SCEV_KNOWN, "scev_known", tcc_expression, 0)
+DEFTREECODE (SCEV_NOT_KNOWN, "scev_not_known", tcc_expression, 0)
+DEFTREECODE (POLYNOMIAL_CHREC, "polynomial_chrec", tcc_expression, 2)
+DEFTREECODE (STATEMENT_LIST, "statement_list", tcc_exceptional, 0)
+DEFTREECODE (ASSERT_EXPR, "assert_expr", tcc_expression, 2)
+DEFTREECODE (TREE_BINFO, "tree_binfo", tcc_exceptional, 0)
+DEFTREECODE (WITH_SIZE_EXPR, "with_size_expr", tcc_expression, 2)
+DEFTREECODE (REALIGN_LOAD_EXPR, "realign_load", tcc_expression, 3)
+DEFTREECODE (TARGET_MEM_REF, "target_mem_ref", tcc_reference, 5)
+DEFTREECODE (MEM_REF, "mem_ref", tcc_reference, 2)
+DEFTREECODE (OACC_PARALLEL, "oacc_parallel", tcc_statement, 2)
+DEFTREECODE (OACC_KERNELS, "oacc_kernels", tcc_statement, 2)
+DEFTREECODE (OACC_SERIAL, "oacc_serial", tcc_statement, 2)
+DEFTREECODE (OACC_DATA, "oacc_data", tcc_statement, 2)
+DEFTREECODE (OACC_HOST_DATA, "oacc_host_data", tcc_statement, 2)
+DEFTREECODE (OMP_PARALLEL, "omp_parallel", tcc_statement, 2)
+DEFTREECODE (OMP_TASK, "omp_task", tcc_statement, 2)
+DEFTREECODE (OMP_FOR, "omp_for", tcc_statement, 7)
+DEFTREECODE (OMP_SIMD, "omp_simd", tcc_statement, 7)
+DEFTREECODE (OMP_DISTRIBUTE, "omp_distribute", tcc_statement, 7)
+DEFTREECODE (OMP_TASKLOOP, "omp_taskloop", tcc_statement, 7)
+DEFTREECODE (OMP_LOOP, "omp_loop", tcc_statement, 7)
+DEFTREECODE (OACC_LOOP, "oacc_loop", tcc_statement, 7)
+DEFTREECODE (OMP_TEAMS, "omp_teams", tcc_statement, 2)
+DEFTREECODE (OMP_TARGET_DATA, "omp_target_data", tcc_statement, 2)
+DEFTREECODE (OMP_TARGET, "omp_target", tcc_statement, 2)
+DEFTREECODE (OMP_SECTIONS, "omp_sections", tcc_statement, 2)
+DEFTREECODE (OMP_ORDERED, "omp_ordered", tcc_statement, 2)
+DEFTREECODE (OMP_CRITICAL, "omp_critical", tcc_statement, 3)
+DEFTREECODE (OMP_SINGLE, "omp_single", tcc_statement, 2)
+DEFTREECODE (OMP_SCOPE, "omp_scope", tcc_statement, 2)
+DEFTREECODE (OMP_TASKGROUP, "omp_taskgroup", tcc_statement, 2)
+DEFTREECODE (OMP_MASKED, "omp_masked", tcc_statement, 2)
+DEFTREECODE (OMP_SCAN, "omp_scan", tcc_statement, 2)
+DEFTREECODE (OMP_SECTION, "omp_section", tcc_statement, 1)
+DEFTREECODE (OMP_MASTER, "omp_master", tcc_statement, 1)
+DEFTREECODE (OACC_CACHE, "oacc_cache", tcc_statement, 1)
+DEFTREECODE (OACC_DECLARE, "oacc_declare", tcc_statement, 1)
+DEFTREECODE (OACC_ENTER_DATA, "oacc_enter_data", tcc_statement, 1)
+DEFTREECODE (OACC_EXIT_DATA, "oacc_exit_data", tcc_statement, 1)
+DEFTREECODE (OACC_UPDATE, "oacc_update", tcc_statement, 1)
+DEFTREECODE (OMP_TARGET_UPDATE, "omp_target_update", tcc_statement, 1)
+DEFTREECODE (OMP_TARGET_ENTER_DATA, "omp_target_enter_data", tcc_statement, 1)
+DEFTREECODE (OMP_TARGET_EXIT_DATA, "omp_target_exit_data", tcc_statement, 1)
+DEFTREECODE (OMP_ATOMIC, "omp_atomic", tcc_statement, 2)
+DEFTREECODE (OMP_ATOMIC_READ, "omp_atomic_read", tcc_statement, 1)
+DEFTREECODE (OMP_ATOMIC_CAPTURE_OLD, "omp_atomic_capture_old", tcc_statement, 2)
+DEFTREECODE (OMP_ATOMIC_CAPTURE_NEW, "omp_atomic_capture_new", tcc_statement, 2)
+DEFTREECODE (OMP_CLAUSE, "omp_clause", tcc_exceptional, 0)
+DEFTREECODE (TRANSACTION_EXPR, "transaction_expr", tcc_expression, 1)
+DEFTREECODE (DOT_PROD_EXPR, "dot_prod_expr", tcc_expression, 3)
+DEFTREECODE (WIDEN_SUM_EXPR, "widen_sum_expr", tcc_binary, 2)
+DEFTREECODE (SAD_EXPR, "sad_expr", tcc_expression, 3)
+DEFTREECODE (WIDEN_MULT_EXPR, "widen_mult_expr", tcc_binary, 2)
+DEFTREECODE (WIDEN_MULT_PLUS_EXPR, "widen_mult_plus_expr", tcc_expression, 3)
+DEFTREECODE (WIDEN_MULT_MINUS_EXPR, "widen_mult_minus_expr", tcc_expression, 3)
+DEFTREECODE (WIDEN_LSHIFT_EXPR, "widen_lshift_expr", tcc_binary, 2)
+DEFTREECODE (VEC_WIDEN_MULT_HI_EXPR, "widen_mult_hi_expr", tcc_binary, 2)
+DEFTREECODE (VEC_WIDEN_MULT_LO_EXPR, "widen_mult_lo_expr", tcc_binary, 2)
+DEFTREECODE (VEC_WIDEN_MULT_EVEN_EXPR, "widen_mult_even_expr", tcc_binary, 2)
+DEFTREECODE (VEC_WIDEN_MULT_ODD_EXPR, "widen_mult_odd_expr", tcc_binary, 2)
+DEFTREECODE (VEC_UNPACK_HI_EXPR, "vec_unpack_hi_expr", tcc_unary, 1)
+DEFTREECODE (VEC_UNPACK_LO_EXPR, "vec_unpack_lo_expr", tcc_unary, 1)
+DEFTREECODE (VEC_UNPACK_FLOAT_HI_EXPR, "vec_unpack_float_hi_expr", tcc_unary, 1)
+DEFTREECODE (VEC_UNPACK_FLOAT_LO_EXPR, "vec_unpack_float_lo_expr", tcc_unary, 1)
+DEFTREECODE (VEC_UNPACK_FIX_TRUNC_HI_EXPR, "vec_unpack_fix_trunc_hi_expr",
+DEFTREECODE (VEC_UNPACK_FIX_TRUNC_LO_EXPR, "vec_unpack_fix_trunc_lo_expr",
+DEFTREECODE (VEC_PACK_TRUNC_EXPR, "vec_pack_trunc_expr", tcc_binary, 2)
+DEFTREECODE (VEC_PACK_SAT_EXPR, "vec_pack_sat_expr", tcc_binary, 2)
+DEFTREECODE (VEC_PACK_FIX_TRUNC_EXPR, "vec_pack_fix_trunc_expr", tcc_binary, 2)
+DEFTREECODE (VEC_PACK_FLOAT_EXPR, "vec_pack_float_expr", tcc_binary, 2)
+DEFTREECODE (VEC_WIDEN_LSHIFT_HI_EXPR, "widen_lshift_hi_expr", tcc_binary, 2)
+DEFTREECODE (VEC_WIDEN_LSHIFT_LO_EXPR, "widen_lshift_lo_expr", tcc_binary, 2)
+DEFTREECODE (PREDICT_EXPR, "predict_expr", tcc_expression, 1)
+DEFTREECODE (OPTIMIZATION_NODE, "optimization_node", tcc_exceptional, 0)
+DEFTREECODE (TARGET_OPTION_NODE, "target_option_node", tcc_exceptional, 0)
+DEFTREECODE (ANNOTATE_EXPR, "annotate_expr", tcc_expression, 3)
diff --git a/gcc/xx.log b/gcc/xx.log
new file mode 100644
index 00000000000..33edf65aab6
--- /dev/null
+++ b/gcc/xx.log
@@ -0,0 +1 @@
+make: *** No targets specified and no makefile found.  Stop.
-- 
2.30.2


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-07-19  4:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-19  4:14 [PATCH] Store_bit_field_1: Use SUBREG instead of REG if possible YunQiang Su

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).