Mercurial > hg > CbC > CbC_gcc
diff gcc/explow.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line diff
--- a/gcc/explow.c Thu Oct 25 07:37:49 2018 +0900 +++ b/gcc/explow.c Thu Feb 13 11:34:05 2020 +0900 @@ -1,5 +1,5 @@ /* Subroutines for manipulating rtx's in semantically interesting ways. - Copyright (C) 1987-2018 Free Software Foundation, Inc. + Copyright (C) 1987-2020 Free Software Foundation, Inc. This file is part of GCC. @@ -38,9 +38,9 @@ #include "dojump.h" #include "explow.h" #include "expr.h" +#include "stringpool.h" #include "common/common-target.h" #include "output.h" -#include "params.h" static rtx break_out_memory_refs (rtx); static void anti_adjust_stack_and_probe_stack_clash (rtx); @@ -892,16 +892,7 @@ tree type = TREE_TYPE (name); int unsignedp = TYPE_UNSIGNED (type); - machine_mode mode = TYPE_MODE (type); - - /* Bypass TYPE_MODE when it maps vector modes to BLKmode. */ - if (mode == BLKmode) - { - gcc_assert (VECTOR_TYPE_P (type)); - mode = type->type_common.mode; - } - - machine_mode pmode = promote_mode (type, mode, &unsignedp); + machine_mode pmode = promote_mode (type, TYPE_MODE (type), &unsignedp); if (punsignedp) *punsignedp = unsignedp; @@ -1176,9 +1167,10 @@ if (targetm_common.except_unwind_info (&global_options) == UI_SJLJ) update_sjlj_context (); } - + /* Return an rtx doing runtime alignment to REQUIRED_ALIGN on TARGET. */ -static rtx + +rtx align_dynamic_address (rtx target, unsigned required_align) { /* CEIL_DIV_EXPR needs to worry about the addition overflowing, @@ -1497,7 +1489,7 @@ stack pointer, such as acquiring the space by calling malloc(). */ if (targetm.have_allocate_stack ()) { - struct expand_operand ops[2]; + class expand_operand ops[2]; /* We don't have to check against the predicate for operand 0 since TARGET is known to be a pseudo of the proper mode, which must be valid for the operand. */ @@ -1619,6 +1611,10 @@ { gcc_assert (stack_check_libfunc == NULL_RTX); stack_check_libfunc = gen_rtx_SYMBOL_REF (Pmode, libfunc_name); + tree decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, + get_identifier (libfunc_name), void_type_node); + DECL_EXTERNAL (decl) = 1; + SET_SYMBOL_REF_DECL (stack_check_libfunc, decl); } /* Emit one stack probe at ADDRESS, an address within the stack. */ @@ -1628,7 +1624,7 @@ { if (targetm.have_probe_stack_address ()) { - struct expand_operand ops[1]; + class expand_operand ops[1]; insn_code icode = targetm.code_for_probe_stack_address; create_address_operand (ops, address); maybe_legitimize_operands (icode, 0, 1, ops); @@ -1688,7 +1684,7 @@ /* Next see if we have an insn to check the stack. */ else if (targetm.have_check_stack ()) { - struct expand_operand ops[1]; + class expand_operand ops[1]; rtx addr = memory_address (Pmode, gen_rtx_fmt_ee (STACK_GROW_OP, Pmode, stack_pointer_rtx, @@ -1840,7 +1836,7 @@ { /* Round SIZE down to STACK_CLASH_PROTECTION_PROBE_INTERVAL */ *probe_interval - = 1 << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL); + = 1 << param_stack_clash_protection_probe_interval; *rounded_size = simplify_gen_binary (AND, Pmode, size, GEN_INT (-*probe_interval));