Lines Matching defs:expr_p

1054 gimplify_bind_expr (tree *expr_p, tree *pre_p)
1056 tree bind_expr = *expr_p;
1117 *expr_p = temp;
1289 gimplify_loop_expr (tree *expr_p, tree *pre_p)
1299 gimplify_and_add (LOOP_EXPR_BODY (*expr_p), pre_p);
1304 *expr_p = build1 (LABEL_EXPR, void_type_node, gimplify_ctxp->exit_label);
1307 *expr_p = jump_stmt;
1362 gimplify_switch_expr (tree *expr_p, tree *pre_p)
1364 tree switch_expr = *expr_p;
1418 SWITCH_LABELS (*expr_p) = label_vec;
1428 *expr_p = build1 (LABEL_EXPR, void_type_node,
1432 *expr_p = SWITCH_BODY (switch_expr);
1451 gimplify_case_label_expr (tree *expr_p)
1453 tree expr = *expr_p;
1464 *expr_p = build1 (LABEL_EXPR, void_type_node, CASE_LABEL (expr));
1492 gimplify_exit_expr (tree *expr_p)
1494 tree cond = TREE_OPERAND (*expr_p, 0);
1499 *expr_p = expr;
1529 canonicalize_component_ref (tree *expr_p)
1531 tree expr = *expr_p;
1551 *expr_p = expr;
1565 canonicalize_addr_expr (tree *expr_p)
1567 tree expr = *expr_p;
1602 *expr_p = build4 (ARRAY_REF, dctype, obj_expr,
1605 *expr_p = build1 (ADDR_EXPR, ctype, *expr_p);
1612 gimplify_conversion (tree *expr_p)
1614 gcc_assert (TREE_CODE (*expr_p) == NOP_EXPR
1615 || TREE_CODE (*expr_p) == CONVERT_EXPR);
1618 STRIP_SIGN_NOPS (TREE_OPERAND (*expr_p, 0));
1621 if (tree_ssa_useless_type_conversion (*expr_p))
1622 *expr_p = TREE_OPERAND (*expr_p, 0);
1626 if (TREE_CODE (*expr_p) == NOP_EXPR || TREE_CODE (*expr_p) == CONVERT_EXPR)
1628 tree sub = TREE_OPERAND (*expr_p, 0);
1634 canonicalize_component_ref (&TREE_OPERAND (*expr_p, 0));
1639 canonicalize_addr_expr (expr_p);
1649 gimplify_var_or_parm_decl (tree *expr_p)
1651 tree decl = *expr_p;
1675 *expr_p = unshare_expr (DECL_VALUE_EXPR (decl));
1706 gimplify_compound_lval (tree *expr_p, tree *pre_p,
1719 for (p = expr_p; ; p = &TREE_OPERAND (*p, 0))
1870 if ((fallback & fb_rvalue) && TREE_CODE (*expr_p) == COMPONENT_REF)
1872 canonicalize_component_ref (expr_p);
1894 gimplify_self_mod_expr (tree *expr_p, tree *pre_p, tree *post_p,
1903 code = TREE_CODE (*expr_p);
1927 lvalue = TREE_OPERAND (*expr_p, 0);
1934 rhs = TREE_OPERAND (*expr_p, 1);
1945 t1 = build2 (arith_code, TREE_TYPE (*expr_p), lhs, rhs);
1952 *expr_p = lhs;
1957 *expr_p = t1;
1965 maybe_with_size_expr (tree *expr_p)
1967 tree expr = *expr_p;
1985 *expr_p = build2 (WITH_SIZE_EXPR, type, expr, size);
1991 gimplify_arg (tree *expr_p, tree *pre_p)
2001 if (is_gimple_reg_type (TREE_TYPE (*expr_p)))
2007 maybe_with_size_expr (expr_p);
2013 return gimplify_expr (expr_p, pre_p, NULL, test, fb);
2021 gimplify_call_expr (tree *expr_p, tree *pre_p, bool want_value)
2027 gcc_assert (TREE_CODE (*expr_p) == CALL_EXPR);
2031 if (! EXPR_HAS_LOCATION (*expr_p))
2032 SET_EXPR_LOCATION (*expr_p, input_location);
2046 decl = get_callee_fndecl (*expr_p);
2049 tree arglist = TREE_OPERAND (*expr_p, 1);
2052 if (new && new != *expr_p)
2057 *expr_p = new;
2067 *expr_p = build_empty_stmt ();
2073 *expr_p = build_empty_stmt ();
2078 return gimplify_arg (&TREE_VALUE (TREE_OPERAND (*expr_p, 1)), pre_p);
2085 ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, NULL,
2089 TREE_OPERAND (*expr_p, 1) = nreverse (TREE_OPERAND (*expr_p, 1));
2090 for (arglist = TREE_OPERAND (*expr_p, 1); arglist;
2101 TREE_OPERAND (*expr_p, 1) = nreverse (TREE_OPERAND (*expr_p, 1));
2106 decl = get_callee_fndecl (*expr_p);
2109 tree arglist = TREE_OPERAND (*expr_p, 1);
2112 if (new && new != *expr_p)
2117 *expr_p = new;
2126 if (TREE_CODE (*expr_p) == CALL_EXPR
2127 && (call_expr_flags (*expr_p) & (ECF_CONST | ECF_PURE)))
2128 TREE_SIDE_EFFECTS (*expr_p) = 0;
2425 gimplify_cond_expr (tree *expr_p, tree *pre_p, fallback_t fallback)
2427 tree expr = *expr_p;
2482 *expr_p = result;
2495 if (expr != *expr_p)
2497 *expr_p = expr;
2504 gimplify_stmt (expr_p);
2542 *expr_p = expr;
2550 gimplify_modify_expr_to_memcpy (tree *expr_p, tree size, bool want_value)
2554 to = TREE_OPERAND (*expr_p, 0);
2555 from = TREE_OPERAND (*expr_p, 1);
2573 *expr_p = t;
2582 gimplify_modify_expr_to_memset (tree *expr_p, tree size, bool want_value)
2586 to = TREE_OPERAND (*expr_p, 0);
2603 *expr_p = t;
2665 gimplify_init_ctor_preeval (tree *expr_p, tree *pre_p, tree *post_p,
2674 if (TREE_INVARIANT (*expr_p) && !TREE_SIDE_EFFECTS (*expr_p))
2678 if (TREE_ADDRESSABLE (TREE_TYPE (*expr_p)))
2682 if (TREE_CODE (*expr_p) == CONSTRUCTOR)
2686 VEC(constructor_elt,gc) *v = CONSTRUCTOR_ELTS (*expr_p);
2694 maybe_with_size_expr (expr_p);
2702 one = gimplify_expr (expr_p, pre_p, post_p, is_gimple_mem_rhs, fb_rvalue);
2705 *expr_p = NULL;
2713 if (DECL_P (*expr_p))
2718 if (TREE_CODE (TYPE_SIZE (TREE_TYPE (*expr_p))) != INTEGER_CST)
2722 if (!walk_tree (expr_p, gimplify_init_ctor_preeval_1, data, NULL))
2726 *expr_p = get_formal_tmp_var (*expr_p, pre_p);
2932 gimplify_init_constructor (tree *expr_p, tree *pre_p,
2936 tree ctor = TREE_OPERAND (*expr_p, 1);
2944 ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, post_p,
2948 object = TREE_OPERAND (*expr_p, 0);
3000 *expr_p = NULL_TREE;
3074 TREE_OPERAND (*expr_p, 1) = new;
3093 gimplify_init_ctor_preeval (&TREE_OPERAND (*expr_p, 1),
3104 gimplify_stmt (expr_p);
3105 append_to_statement_list (*expr_p, pre_p);
3114 *expr_p = NULL_TREE;
3140 TREE_OPERAND (*expr_p, 1) = ctor;
3145 TREE_OPERAND (*expr_p, 1) = ctor;
3146 ret = gimplify_expr (&TREE_OPERAND (*expr_p, 1), pre_p, post_p,
3147 rhs_predicate_for (TREE_OPERAND (*expr_p, 0)),
3176 TREE_OPERAND (*expr_p, 1) = build_vector_from_ctor (type, elts);
3208 append_to_statement_list (*expr_p, pre_p);
3209 *expr_p = object;
3277 gimplify_modify_expr_rhs (tree *expr_p, tree *from_p, tree *to_p, tree *pre_p,
3341 return gimplify_init_constructor (expr_p, pre_p, post_p, want_value);
3351 enum tree_code code = TREE_CODE (*expr_p);
3375 *expr_p = unshare_expr (result);
3378 *expr_p = cond;
3410 else if (TREE_CODE (*expr_p) == INIT_EXPR)
3449 t = voidify_wrapper_expr (wrap, *expr_p);
3450 gcc_assert (t == *expr_p);
3455 *expr_p = unshare_expr (*to_p);
3458 *expr_p = wrap;
3475 gimplify_modify_expr_complex_part (tree *expr_p, tree *pre_p, bool want_value)
3480 lhs = TREE_OPERAND (*expr_p, 0);
3481 rhs = TREE_OPERAND (*expr_p, 1);
3497 TREE_OPERAND (*expr_p, 0) = lhs;
3498 TREE_OPERAND (*expr_p, 1) = new_rhs;
3502 append_to_statement_list (*expr_p, pre_p);
3503 *expr_p = rhs;
3525 gimplify_modify_expr (tree *expr_p, tree *pre_p, tree *post_p, bool want_value)
3527 tree *from_p = &TREE_OPERAND (*expr_p, 1);
3528 tree *to_p = &TREE_OPERAND (*expr_p, 0);
3531 gcc_assert (TREE_CODE (*expr_p) == MODIFY_EXPR
3532 || TREE_CODE (*expr_p) == INIT_EXPR);
3535 ret = gimplify_modify_expr_rhs (expr_p, from_p, to_p, pre_p, post_p,
3550 *expr_p = NULL_TREE;
3572 ret = gimplify_modify_expr_rhs (expr_p, from_p, to_p, pre_p, post_p,
3586 return gimplify_modify_expr_to_memset (expr_p, size, want_value);
3590 return gimplify_modify_expr_to_memcpy (expr_p, size, want_value);
3600 return gimplify_modify_expr_complex_part (expr_p, pre_p, want_value);
3607 *to_p = make_ssa_name (*to_p, *expr_p);
3612 append_to_statement_list (*expr_p, pre_p);
3613 *expr_p = *to_p;
3624 gimplify_variable_sized_compare (tree *expr_p)
3626 tree op0 = TREE_OPERAND (*expr_p, 0);
3627 tree op1 = TREE_OPERAND (*expr_p, 1);
3640 *expr_p
3641 = build2 (TREE_CODE (*expr_p), TREE_TYPE (*expr_p), t, integer_zero_node);
3650 gimplify_scalar_mode_aggregate_compare (tree *expr_p)
3652 tree op0 = TREE_OPERAND (*expr_p, 0);
3653 tree op1 = TREE_OPERAND (*expr_p, 1);
3661 *expr_p
3662 = fold_build2 (TREE_CODE (*expr_p), TREE_TYPE (*expr_p), op0, op1);
3680 gimplify_boolean_expr (tree *expr_p)
3683 tree type = TREE_TYPE (*expr_p);
3685 *expr_p = build3 (COND_EXPR, type, *expr_p,
3705 gimplify_compound_expr (tree *expr_p, tree *pre_p, bool want_value)
3707 tree t = *expr_p;
3723 *expr_p = t;
3728 gimplify_stmt (expr_p);
3737 gimplify_statement_list (tree *expr_p, tree *pre_p)
3739 tree temp = voidify_wrapper_expr (*expr_p, NULL);
3741 tree_stmt_iterator i = tsi_start (*expr_p);
3763 append_to_statement_list (*expr_p, pre_p);
3764 *expr_p = temp;
3779 gimplify_save_expr (tree *expr_p, tree *pre_p, tree *post_p)
3784 gcc_assert (TREE_CODE (*expr_p) == SAVE_EXPR);
3785 val = TREE_OPERAND (*expr_p, 0);
3788 if (!SAVE_EXPR_RESOLVED_P (*expr_p))
3795 ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, post_p,
3797 append_to_statement_list (TREE_OPERAND (*expr_p, 0), pre_p);
3803 TREE_OPERAND (*expr_p, 0) = val;
3804 SAVE_EXPR_RESOLVED_P (*expr_p) = 1;
3807 *expr_p = val;
3826 gimplify_addr_expr (tree *expr_p, tree *pre_p, tree *post_p)
3828 tree expr = *expr_p;
3864 *expr_p = op00;
3882 *expr_p = fold_convert (TREE_TYPE (expr),
3920 gimplify_asm_expr (tree *expr_p, tree *pre_p, tree *post_p)
3922 tree expr = *expr_p;
4109 gimplify_cleanup_point_expr (tree *expr_p, tree *pre_p)
4114 tree temp = voidify_wrapper_expr (*expr_p, NULL);
4124 body = TREE_OPERAND (*expr_p, 0);
4167 *expr_p = temp;
4173 *expr_p = body;
4243 gimplify_target_expr (tree *expr_p, tree *pre_p, tree *post_p)
4245 tree targ = *expr_p;
4290 *expr_p = temp;
4929 gimplify_omp_parallel (tree *expr_p, tree *pre_p)
4931 tree expr = *expr_p;
4953 gimplify_omp_for (tree *expr_p, tree *pre_p)
4958 for_stmt = *expr_p;
5038 gimplify_omp_workshare (tree *expr_p, tree *pre_p)
5040 tree stmt = *expr_p;
5080 gimplify_omp_atomic_fetch_op (tree *expr_p, tree addr, tree rhs, int index)
5130 *expr_p = build_function_call_expr (decl, args);
5140 goa_stabilize_expr (tree *expr_p, tree *pre_p, tree lhs_addr, tree lhs_var)
5142 tree expr = *expr_p;
5147 *expr_p = lhs_var;
5170 gs = gimplify_expr (expr_p, pre_p, NULL, is_gimple_val, fb_rvalue);
5191 gimplify_omp_atomic_pipeline (tree *expr_p, tree *pre_p, tree addr,
5281 *expr_p = NULL;
5298 gimplify_omp_atomic_mutex (tree *expr_p, tree *pre_p, tree addr, tree rhs)
5314 *expr_p = NULL;
5321 gimplify_omp_atomic (tree *expr_p, tree *pre_p)
5323 tree addr = TREE_OPERAND (*expr_p, 0);
5324 tree rhs = TREE_OPERAND (*expr_p, 1);
5351 gs = gimplify_omp_atomic_fetch_op (expr_p, addr, rhs, index);
5358 gs = gimplify_omp_atomic_pipeline (expr_p, pre_p, addr, rhs, index);
5365 return gimplify_omp_atomic_mutex (expr_p, pre_p, addr, rhs);
5398 gimplify_expr (tree *expr_p, tree *pre_p, tree *post_p,
5409 save_expr = *expr_p;
5426 && EXPR_HAS_LOCATION (*expr_p))
5427 input_location = EXPR_LOCATION (*expr_p);
5435 STRIP_USELESS_TYPE_CONVERSION (*expr_p);
5438 save_expr = *expr_p;
5450 ret = lang_hooks.gimplify_expr (expr_p, pre_p, post_p);
5453 if (*expr_p == NULL_TREE)
5455 if (*expr_p != save_expr)
5462 switch (TREE_CODE (*expr_p))
5470 ret = gimplify_self_mod_expr (expr_p, pre_p, post_p,
5480 ret = gimplify_compound_lval (expr_p, pre_p, post_p,
5485 ret = gimplify_cond_expr (expr_p, pre_p, fallback);
5492 *expr_p = get_initialized_tmp_var (*expr_p, pre_p, post_p);
5493 lang_hooks.mark_addressable (*expr_p);
5498 ret = gimplify_call_expr (expr_p, pre_p, fallback != fb_none);
5505 *expr_p = get_initialized_tmp_var (*expr_p, pre_p, post_p);
5506 lang_hooks.mark_addressable (*expr_p);
5514 ret = gimplify_compound_expr (expr_p, pre_p, fallback != fb_none);
5519 ret = gimplify_modify_expr (expr_p, pre_p, post_p,
5524 if (*expr_p && TREE_CODE (*expr_p) == INIT_EXPR)
5525 TREE_SET_CODE (*expr_p, MODIFY_EXPR);
5530 ret = gimplify_boolean_expr (expr_p);
5534 TREE_OPERAND (*expr_p, 0)
5535 = gimple_boolify (TREE_OPERAND (*expr_p, 0));
5536 ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, post_p,
5538 recalculate_side_effects (*expr_p);
5542 ret = gimplify_addr_expr (expr_p, pre_p, post_p);
5546 ret = gimplify_va_arg_expr (expr_p, pre_p, post_p);
5551 if (IS_EMPTY_STMT (*expr_p))
5557 if (VOID_TYPE_P (TREE_TYPE (*expr_p))
5562 *expr_p = TREE_OPERAND (*expr_p, 0);
5566 ret = gimplify_conversion (expr_p);
5569 if (*expr_p != save_expr)
5578 ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, post_p,
5580 recalculate_side_effects (*expr_p);
5584 *expr_p = fold_indirect_ref (*expr_p);
5585 if (*expr_p != save_expr)
5590 ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, post_p,
5592 recalculate_side_effects (*expr_p);
5612 *expr_p = DECL_INITIAL (*expr_p);
5616 ret = gimplify_decl_expr (expr_p);
5625 ret = gimplify_bind_expr (expr_p, pre_p);
5629 ret = gimplify_loop_expr (expr_p, pre_p);
5633 ret = gimplify_switch_expr (expr_p, pre_p);
5637 ret = gimplify_exit_expr (expr_p);
5643 if (TREE_CODE (GOTO_DESTINATION (*expr_p)) != LABEL_DECL)
5644 ret = gimplify_expr (&GOTO_DESTINATION (*expr_p), pre_p,
5650 gcc_assert (decl_function_context (LABEL_EXPR_LABEL (*expr_p))
5655 ret = gimplify_case_label_expr (expr_p);
5659 ret = gimplify_return_expr (*expr_p, pre_p);
5672 VEC_iterate (constructor_elt, CONSTRUCTOR_ELTS (*expr_p),
5678 *expr_p = temp;
5687 *expr_p = get_initialized_tmp_var (*expr_p, pre_p, post_p);
5688 lang_hooks.mark_addressable (*expr_p);
5700 ret = gimplify_save_expr (expr_p, pre_p, post_p);
5707 r0 = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, post_p,
5709 r1 = gimplify_expr (&TREE_OPERAND (*expr_p, 1), pre_p, post_p,
5711 r2 = gimplify_expr (&TREE_OPERAND (*expr_p, 2), pre_p, post_p,
5713 recalculate_side_effects (*expr_p);
5724 ret = gimplify_asm_expr (expr_p, pre_p, post_p);
5729 gimplify_to_stmt_list (&TREE_OPERAND (*expr_p, 0));
5730 gimplify_to_stmt_list (&TREE_OPERAND (*expr_p, 1));
5735 ret = gimplify_cleanup_point_expr (expr_p, pre_p);
5739 ret = gimplify_target_expr (expr_p, pre_p, post_p);
5743 gimplify_to_stmt_list (&CATCH_BODY (*expr_p));
5748 gimplify_to_stmt_list (&EH_FILTER_FAILURE (*expr_p));
5755 r0 = gimplify_expr (&OBJ_TYPE_REF_OBJECT (*expr_p), pre_p, post_p,
5757 r1 = gimplify_expr (&OBJ_TYPE_REF_EXPR (*expr_p), pre_p, post_p,
5767 FORCED_LABEL (*expr_p) = 1;
5772 ret = gimplify_statement_list (expr_p, pre_p);
5777 gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p,
5780 gimplify_expr (&TREE_OPERAND (*expr_p, 1), pre_p, post_p,
5787 ret = gimplify_var_or_parm_decl (expr_p);
5793 omp_notice_variable (gimplify_omp_ctxp, *expr_p, true);
5803 ret = gimplify_omp_parallel (expr_p, pre_p);
5807 ret = gimplify_omp_for (expr_p, pre_p);
5812 ret = gimplify_omp_workshare (expr_p, pre_p);
5819 gimplify_to_stmt_list (&OMP_BODY (*expr_p));
5823 ret = gimplify_omp_atomic (expr_p, pre_p);
5832 switch (TREE_CODE_CLASS (TREE_CODE (*expr_p)))
5846 tree type = TREE_TYPE (TREE_OPERAND (*expr_p, 1));
5851 ret = gimplify_scalar_mode_aggregate_compare (expr_p);
5853 ret = gimplify_variable_sized_compare (expr_p);
5861 ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p,
5870 r0 = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p,
5872 r1 = gimplify_expr (&TREE_OPERAND (*expr_p, 1), pre_p,
5885 gcc_assert (TREE_CODE (*expr_p) == TRUTH_AND_EXPR
5886 || TREE_CODE (*expr_p) == TRUTH_OR_EXPR
5887 || TREE_CODE (*expr_p) == TRUTH_XOR_EXPR);
5891 recalculate_side_effects (*expr_p);
5896 /* If we replaced *expr_p, gimplify again. */
5897 if (ret == GS_OK && (*expr_p == NULL || *expr_p == save_expr))
5907 *expr_p = NULL;
5915 if (fallback == fb_none && *expr_p && !is_gimple_stmt (*expr_p))
5919 if (!TREE_SIDE_EFFECTS (*expr_p))
5920 *expr_p = NULL;
5921 else if (!TREE_THIS_VOLATILE (*expr_p))
5925 enum tree_code code = TREE_CODE (*expr_p);
5933 gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, post_p,
5939 gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, post_p,
5941 gimplify_expr (&TREE_OPERAND (*expr_p, 1), pre_p, post_p,
5951 *expr_p = NULL;
5953 else if (COMPLETE_TYPE_P (TREE_TYPE (*expr_p))
5954 && TYPE_MODE (TREE_TYPE (*expr_p)) != BLKmode)
5958 tree type = TYPE_MAIN_VARIANT (TREE_TYPE (*expr_p));
5968 *expr_p = build2 (MODIFY_EXPR, type, tmp, *expr_p);
5976 *expr_p = NULL;
5986 append_to_statement_list (*expr_p, &internal_pre);
5989 *expr_p = internal_pre;
5991 else if (!*expr_p)
5993 else if (TREE_CODE (*expr_p) == STATEMENT_LIST)
5994 annotate_all_with_locus (expr_p, input_location);
5996 annotate_one_with_locus (*expr_p, input_location);
6006 if (!internal_post && (*gimple_test_f) (*expr_p))
6017 && is_gimple_addressable (*expr_p))
6022 tmp = build_fold_addr_expr (*expr_p);
6024 *expr_p = build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (tmp)), tmp);
6026 else if ((fallback & fb_rvalue) && is_gimple_formal_tmp_rhs (*expr_p))
6028 gcc_assert (!VOID_TYPE_P (TREE_TYPE (*expr_p)));
6037 *expr_p = get_initialized_tmp_var (*expr_p, pre_p, post_p);
6039 *expr_p = get_formal_tmp_var (*expr_p, pre_p);
6041 if (TREE_CODE (*expr_p) != SSA_NAME)
6042 DECL_GIMPLE_FORMAL_TEMP_P (*expr_p) = 1;
6050 print_generic_expr (stderr, *expr_p, 0);
6051 debug_tree (*expr_p);
6064 gcc_assert ((*gimple_test_f) (*expr_p));
6166 gimplify_one_sizepos (tree *expr_p, tree *stmt_p)
6168 tree type, expr = *expr_p;
6181 *expr_p = unshare_expr (expr);
6183 gimplify_expr (expr_p, stmt_p, NULL, is_gimple_val, fb_rvalue);
6184 expr = *expr_p;
6198 *expr_p = create_tmp_var (type, NULL);
6200 tmp = build2 (MODIFY_EXPR, type, *expr_p, tmp);