On Wed, 20 Mar 2024, Jakub Jelinek wrote: > Hi! > > When looking at the analyzer MEM_REF invalid second arg issue, I've noticed > tons of build_int_cst (integer_type_node, {0,1}) or build_zero_cst > (integer_type_node) cases. > That just wastes compile time (albeit not very much). > > The following patch fixes what my sed script found. > > Ok for trunk (or defer for stage1, though guess I'd need to redo it > from scratch at that point)?
OK. Richard. > 2024-03-20 Jakub Jelinek <ja...@redhat.com> > > gcc/analyzer/ > * constraint-manager.cc (test_range, test_constraint_conditions, > test_constant_comparisons, test_constraint_impl, test_purging, > test_bits): Use integer_zero_node instead of > build_zero_cst (integer_type_node) or > build_int_cst (integer_type_node, 0) and integer_one_node instead of > build_int_cst (integer_type_node, 1). > * region-model.cc (region_model::get_store_value, > append_interesting_constants, test_array_1, > test_get_representative_tree, test_unique_constants, test_assignment, > test_stack_frames, test_constraint_merging, test_widening_constraints, > test_iteration_1, test_array_2): Likewise. > gcc/cp/ > * coroutines.cc (expand_one_await_expression): Use > integer_zero_node instead of build_int_cst (integer_type_node, 0) > and integer_one_node instead of build_int_cst (integer_type_node, 1). > gcc/fortran/ > * trans-array.cc (structure_alloc_comps): Use integer_zero_node > instead of build_zero_cst (integer_type_node) or > build_int_cst (integer_type_node, 0) and integer_one_node instead of > build_int_cst (integer_type_node, 1). > * trans-expr.cc (conv_scalar_char_value): Likewise. > * trans-stmt.cc (gfc_trans_form_team, gfc_trans_change_team, > gfc_trans_sync_team, gfc_trans_sync): Likewise. > * trans-decl.cc (create_main_function): Likewise. > * trans-intrinsic.cc (trans_this_image, conv_intrinsic_move_alloc): > Likewise. > * trans.cc (gfc_allocate_using_caf_lib, gfc_deallocate_with_status): > Likewise. > gcc/objc/ > * objc-next-runtime-abi-02.cc (build_v2_class_ro_t_initializer): Use > integer_zero_node instead of build_int_cst (integer_type_node, 0). > > --- gcc/cp/coroutines.cc.jj 2024-02-10 09:38:25.771984306 +0100 > +++ gcc/cp/coroutines.cc 2024-03-19 13:34:36.495989031 +0100 > @@ -1750,7 +1750,7 @@ expand_one_await_expression (tree *stmt, > data->coro_fp); > r = cp_build_init_expr (cond, r); > finish_switch_cond (r, sw); > - r = build_case_label (build_int_cst (integer_type_node, 0), NULL_TREE, > + r = build_case_label (integer_zero_node, NULL_TREE, > create_anon_label_with_ctx (loc, actor)); > add_stmt (r); /* case 0: */ > /* Implement the suspend, a scope exit without clean ups. */ > @@ -1758,7 +1758,7 @@ expand_one_await_expression (tree *stmt, > is_cont ? cont : susp); > r = coro_build_cvt_void_expr_stmt (r, loc); > add_stmt (r); /* goto ret; */ > - r = build_case_label (build_int_cst (integer_type_node, 1), NULL_TREE, > + r = build_case_label (integer_one_node, NULL_TREE, > create_anon_label_with_ctx (loc, actor)); > add_stmt (r); /* case 1: */ > r = build1_loc (loc, GOTO_EXPR, void_type_node, resume_label); > --- gcc/analyzer/constraint-manager.cc.jj 2024-02-27 16:52:23.725366127 > +0100 > +++ gcc/analyzer/constraint-manager.cc 2024-03-19 13:34:36.486989157 > +0100 > @@ -3374,8 +3374,8 @@ namespace selftest { > static void > test_range () > { > - tree int_0 = build_int_cst (integer_type_node, 0); > - tree int_1 = build_int_cst (integer_type_node, 1); > + tree int_0 = integer_zero_node; > + tree int_1 = integer_one_node; > tree int_2 = build_int_cst (integer_type_node, 2); > tree int_5 = build_int_cst (integer_type_node, 5); > > @@ -3419,7 +3419,7 @@ static void > test_constraint_conditions () > { > tree int_42 = build_int_cst (integer_type_node, 42); > - tree int_0 = build_int_cst (integer_type_node, 0); > + tree int_0 = integer_zero_node; > > tree x = build_global_decl ("x", integer_type_node); > tree y = build_global_decl ("y", integer_type_node); > @@ -3874,7 +3874,7 @@ test_transitivity () > static void > test_constant_comparisons () > { > - tree int_1 = build_int_cst (integer_type_node, 1); > + tree int_1 = integer_one_node; > tree int_3 = build_int_cst (integer_type_node, 3); > tree int_4 = build_int_cst (integer_type_node, 4); > tree int_5 = build_int_cst (integer_type_node, 5); > @@ -4058,7 +4058,7 @@ static void > test_constraint_impl () > { > tree int_42 = build_int_cst (integer_type_node, 42); > - tree int_0 = build_int_cst (integer_type_node, 0); > + tree int_0 = integer_zero_node; > > tree x = build_global_decl ("x", integer_type_node); > tree y = build_global_decl ("y", integer_type_node); > @@ -4220,7 +4220,7 @@ test_many_constants () > static void > test_purging (void) > { > - tree int_0 = build_int_cst (integer_type_node, 0); > + tree int_0 = integer_zero_node; > tree a = build_global_decl ("a", integer_type_node); > tree b = build_global_decl ("b", integer_type_node); > > @@ -4654,7 +4654,7 @@ test_bits (void) > { > region_model_manager mgr; > > - tree int_0 = build_int_cst (integer_type_node, 0); > + tree int_0 = integer_zero_node; > tree int_0x80 = build_int_cst (integer_type_node, 0x80); > tree int_0xff = build_int_cst (integer_type_node, 0xff); > tree x = build_global_decl ("x", integer_type_node); > --- gcc/analyzer/region-model.cc.jj 2024-03-19 13:24:49.302222817 +0100 > +++ gcc/analyzer/region-model.cc 2024-03-19 13:34:36.491989087 +0100 > @@ -2724,7 +2724,7 @@ region_model::get_store_value (const reg > = cast_reg->get_original_region ()->dyn_cast_string_region ()) > { > tree string_cst = str_reg->get_string_cst (); > - tree byte_offset_cst = build_int_cst (integer_type_node, 0); > + tree byte_offset_cst = integer_zero_node; > if (const svalue *char_sval > = m_mgr->maybe_get_char_from_string_cst (string_cst, > byte_offset_cst)) > @@ -7168,7 +7168,7 @@ build_real_cst_from_string (tree type, c > static void > append_interesting_constants (auto_vec<tree> *out) > { > - out->safe_push (build_int_cst (integer_type_node, 0)); > + out->safe_push (integer_zero_node); > out->safe_push (build_int_cst (integer_type_node, 42)); > out->safe_push (build_int_cst (unsigned_type_node, 0)); > out->safe_push (build_int_cst (unsigned_type_node, 42)); > @@ -7393,7 +7393,7 @@ test_array_1 () > > region_model_manager mgr; > region_model model (&mgr); > - tree int_0 = build_int_cst (integer_type_node, 0); > + tree int_0 = integer_zero_node; > tree a_0 = build4 (ARRAY_REF, char_type_node, > a, int_0, NULL_TREE, NULL_TREE); > tree char_A = build_int_cst (char_type_node, 'A'); > @@ -7450,7 +7450,7 @@ test_get_representative_tree () > { > test_region_model_context ctxt; > region_model model (&mgr); > - tree idx = build_int_cst (integer_type_node, 0); > + tree idx = integer_zero_node; > tree a_0 = build4 (ARRAY_REF, char_type_node, > a, idx, NULL_TREE, NULL_TREE); > const region *a_0_reg = model.get_lvalue (a_0, &ctxt); > @@ -7502,7 +7502,7 @@ test_get_representative_tree () > static void > test_unique_constants () > { > - tree int_0 = build_int_cst (integer_type_node, 0); > + tree int_0 = integer_zero_node; > tree int_42 = build_int_cst (integer_type_node, 42); > > test_region_model_context ctxt; > @@ -7885,7 +7885,7 @@ test_bit_range_regions () > static void > test_assignment () > { > - tree int_0 = build_int_cst (integer_type_node, 0); > + tree int_0 = integer_zero_node; > tree x = build_global_decl ("x", integer_type_node); > tree y = build_global_decl ("y", integer_type_node); > > @@ -7944,7 +7944,7 @@ test_stack_frames () > tree int_42 = build_int_cst (integer_type_node, 42); > tree int_10 = build_int_cst (integer_type_node, 10); > tree int_5 = build_int_cst (integer_type_node, 5); > - tree int_0 = build_int_cst (integer_type_node, 0); > + tree int_0 = integer_zero_node; > > auto_vec <tree> param_types; > tree parent_fndecl = make_fndecl (integer_type_node, > @@ -8627,7 +8627,7 @@ test_state_merging () > static void > test_constraint_merging () > { > - tree int_0 = build_int_cst (integer_type_node, 0); > + tree int_0 = integer_zero_node; > tree int_5 = build_int_cst (integer_type_node, 5); > tree x = build_global_decl ("x", integer_type_node); > tree y = build_global_decl ("y", integer_type_node); > @@ -8674,9 +8674,9 @@ test_widening_constraints () > { > region_model_manager mgr; > function_point point (program_point::origin (mgr).get_function_point ()); > - tree int_0 = build_int_cst (integer_type_node, 0); > + tree int_0 = integer_zero_node; > tree int_m1 = build_int_cst (integer_type_node, -1); > - tree int_1 = build_int_cst (integer_type_node, 1); > + tree int_1 = integer_one_node; > tree int_256 = build_int_cst (integer_type_node, 256); > test_region_model_context ctxt; > const svalue *int_0_sval = mgr.get_or_create_constant_svalue (int_0); > @@ -8790,8 +8790,8 @@ test_iteration_1 () > region_model_manager mgr; > program_point point (program_point::origin (mgr)); > > - tree int_0 = build_int_cst (integer_type_node, 0); > - tree int_1 = build_int_cst (integer_type_node, 1); > + tree int_0 = integer_zero_node; > + tree int_1 = integer_one_node; > tree int_256 = build_int_cst (integer_type_node, 256); > tree i = build_global_decl ("i", integer_type_node); > > @@ -8944,8 +8944,8 @@ test_array_2 () > /* "int i;" */ > tree i = build_global_decl ("i", integer_type_node); > > - tree int_0 = build_int_cst (integer_type_node, 0); > - tree int_1 = build_int_cst (integer_type_node, 1); > + tree int_0 = integer_zero_node; > + tree int_1 = integer_one_node; > > tree arr_0 = build4 (ARRAY_REF, integer_type_node, > arr, int_0, NULL_TREE, NULL_TREE); > --- gcc/objc/objc-next-runtime-abi-02.cc.jj 2024-01-29 09:41:19.687393274 > +0100 > +++ gcc/objc/objc-next-runtime-abi-02.cc 2024-03-19 13:34:36.535988469 > +0100 > @@ -3244,7 +3244,7 @@ build_v2_class_ro_t_initializer (tree ty > explicitly declare the alignment padding. */ > /* reserved, pads alignment. */ > CONSTRUCTOR_APPEND_ELT (initlist, NULL_TREE, > - build_int_cst (integer_type_node, 0)); > + integer_zero_node); > > /* ivarLayout */ > unsigned_char_star = build_pointer_type (unsigned_char_type_node); > --- gcc/fortran/trans-array.cc.jj 2024-03-18 08:58:46.191769237 +0100 > +++ gcc/fortran/trans-array.cc 2024-03-19 13:30:14.338665071 +0100 > @@ -10397,7 +10397,7 @@ structure_alloc_comps (gfc_symbol * der_ > gfc_add_expr_to_block (&tblock, t); > if (c->attr.pdt_array) > gfc_add_modify (&tblock, gfc_conv_descriptor_version (comp), > - build_zero_cst (integer_type_node)); > + integer_zero_node); > tmp = build3_loc (input_location, COND_EXPR, void_type_node, > cd, gfc_finish_block (&tblock), > gfc_call_free (tmp)); > --- gcc/fortran/trans-expr.cc.jj 2024-03-15 09:13:35.195543327 +0100 > +++ gcc/fortran/trans-expr.cc 2024-03-19 13:34:36.509988834 +0100 > @@ -4082,7 +4082,7 @@ conv_scalar_char_value (gfc_symbol *sym, > if ((*expr)->ref == NULL) > { > se->expr = gfc_string_to_single_character > - (build_int_cst (integer_type_node, 1), > + (integer_one_node, > gfc_build_addr_expr (gfc_get_pchar_type ((*expr)->ts.kind), > gfc_get_symbol_decl > ((*expr)->symtree->n.sym)), > @@ -4092,7 +4092,7 @@ conv_scalar_char_value (gfc_symbol *sym, > { > gfc_conv_variable (se, *expr); > se->expr = gfc_string_to_single_character > - (build_int_cst (integer_type_node, 1), > + (integer_one_node, > gfc_build_addr_expr (gfc_get_pchar_type ((*expr)->ts.kind), > se->expr), > (*expr)->ts.kind); > --- gcc/fortran/trans-stmt.cc.jj 2024-03-15 09:13:35.198543286 +0100 > +++ gcc/fortran/trans-stmt.cc 2024-03-19 13:34:36.532988512 +0100 > @@ -764,7 +764,7 @@ gfc_trans_form_team (gfc_code *code) > tmp = build_call_expr_loc (input_location, > gfor_fndecl_caf_form_team, 3, > team_id, team_type, > - build_int_cst (integer_type_node, 0)); > + integer_zero_node); > gfc_add_expr_to_block (&se.pre, tmp); > gfc_add_block_to_block (&se.pre, &argse1.post); > gfc_add_block_to_block (&se.pre, &argse2.post); > @@ -795,7 +795,7 @@ gfc_trans_change_team (gfc_code *code) > > tmp = build_call_expr_loc (input_location, > gfor_fndecl_caf_change_team, 2, team_type, > - build_int_cst (integer_type_node, 0)); > + integer_zero_node); > gfc_add_expr_to_block (&argse.pre, tmp); > gfc_add_block_to_block (&argse.pre, &argse.post); > return gfc_finish_block (&argse.pre); > @@ -846,7 +846,7 @@ gfc_trans_sync_team (gfc_code *code) > tmp = build_call_expr_loc (input_location, > gfor_fndecl_caf_sync_team, 2, > team_type, > - build_int_cst (integer_type_node, 0)); > + integer_zero_node); > gfc_add_expr_to_block (&argse.pre, tmp); > gfc_add_block_to_block (&argse.pre, &argse.post); > return gfc_finish_block (&argse.pre); > @@ -1357,7 +1357,7 @@ gfc_trans_sync (gfc_code *code, gfc_exec > } > else if (code->expr1->rank == 0) > { > - len = build_int_cst (integer_type_node, 1); > + len = integer_one_node; > images = gfc_build_addr_expr (NULL_TREE, images); > } > else > --- gcc/fortran/trans-decl.cc.jj 2024-03-14 14:07:34.157425953 +0100 > +++ gcc/fortran/trans-decl.cc 2024-03-19 13:34:36.499988974 +0100 > @@ -6636,7 +6636,7 @@ create_main_function (tree fndecl) > /* "return 0". */ > tmp = fold_build2_loc (input_location, MODIFY_EXPR, integer_type_node, > DECL_RESULT (ftn_main), > - build_int_cst (integer_type_node, 0)); > + integer_zero_node); > tmp = build1_v (RETURN_EXPR, tmp); > gfc_add_expr_to_block (&body, tmp); > > --- gcc/fortran/trans-intrinsic.cc.jj 2024-01-15 09:56:49.558544819 +0100 > +++ gcc/fortran/trans-intrinsic.cc 2024-03-19 13:34:36.504988904 +0100 > @@ -2562,7 +2562,7 @@ trans_this_image (gfc_se * se, gfc_expr > gfc_add_modify (&loop, loop_var, > fold_build2_loc (input_location, PLUS_EXPR, > integer_type_node, > loop_var, > - build_int_cst (integer_type_node, 1))); > + integer_one_node)); > > /* Making the loop... actually loop! */ > tmp = gfc_finish_block (&loop); > @@ -12815,7 +12815,7 @@ conv_intrinsic_move_alloc (gfc_code *cod > null_pointer_node)); > tmp = build_call_expr_loc (input_location, gfor_fndecl_caf_sync_all, > 3, null_pointer_node, null_pointer_node, > - build_int_cst (integer_type_node, 0)); > + integer_zero_node); > > tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node, cond, > tmp, build_empty_stmt (input_location)); > --- gcc/fortran/trans.cc.jj 2024-01-03 12:07:06.659671267 +0100 > +++ gcc/fortran/trans.cc 2024-03-19 13:34:36.539988413 +0100 > @@ -900,7 +900,7 @@ gfc_allocate_using_caf_lib (stmtblock_t > { > gcc_assert(errlen == NULL_TREE); > errmsg = null_pointer_node; > - errlen = build_int_cst (integer_type_node, 0); > + errlen = integer_zero_node; > } > > size = fold_convert (size_type_node, size); > @@ -1903,7 +1903,7 @@ gfc_deallocate_with_status (tree pointer > if (descr) > cond = fold_build2_loc (input_location, EQ_EXPR, boolean_type_node, > gfc_conv_descriptor_version (descr), > - build_int_cst (integer_type_node, 1)); > + integer_one_node); > else > cond = gfc_omp_call_is_alloc (pointer); > omp_tmp = builtin_decl_explicit (BUILT_IN_GOMP_FREE); > @@ -1917,7 +1917,7 @@ gfc_deallocate_with_status (tree pointer > 0)); > if (flag_openmp_allocators && descr) > gfc_add_modify (&non_null, gfc_conv_descriptor_version (descr), > - build_zero_cst (integer_type_node)); > + integer_zero_node); > > if (status != NULL_TREE && !integer_zerop (status)) > { > @@ -1946,7 +1946,7 @@ gfc_deallocate_with_status (tree pointer > { > gcc_assert (errlen == NULL_TREE); > errmsg = null_pointer_node; > - errlen = build_zero_cst (integer_type_node); > + errlen = integer_zero_node; > } > else > { > > Jakub > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)