diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-02-10 15:13:54 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-02-10 15:13:54 +0000 |
commit | 8cff878b277f9af6c2827a87581baac5f768e12a (patch) | |
tree | d4e178503efd243eed24ff3b753cd998370d75d4 /gcc/config/epiphany | |
parent | 9610b14f8599a9db94822d3f0923b58b2f1177dc (diff) | |
download | gcc-8cff878b277f9af6c2827a87581baac5f768e12a.tar.gz |
[./]
2016-02-10 Basile Starynkevitch <basile@starynkevitch.net>
{{merging with some of GCC 6, using
svn merge -r222130:226090 ^/trunk ; UNSTABLE}}
[gcc/]
2016-02-10 Basile Starynkevitch <basile@starynkevitch.net>
{{ merging with trunk 226090 ; UNSTABLE }}
* melt-run.proto.h: include tree-ssa-scopedtables.h
* tree-ssa-dom.c: skip second record_edge_info
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@233272 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/epiphany')
-rw-r--r-- | gcc/config/epiphany/epiphany.c | 48 | ||||
-rw-r--r-- | gcc/config/epiphany/epiphany.h | 6 | ||||
-rw-r--r-- | gcc/config/epiphany/epiphany.md | 10 | ||||
-rw-r--r-- | gcc/config/epiphany/mode-switch-use.c | 16 | ||||
-rw-r--r-- | gcc/config/epiphany/resolve-sw-modes.c | 19 |
5 files changed, 31 insertions, 68 deletions
diff --git a/gcc/config/epiphany/epiphany.c b/gcc/config/epiphany/epiphany.c index 12aac13c268..593c9a19124 100644 --- a/gcc/config/epiphany/epiphany.c +++ b/gcc/config/epiphany/epiphany.c @@ -21,37 +21,25 @@ along with GCC; see the file COPYING3. If not see #include "config.h" #include "system.h" #include "coretypes.h" -#include "tm.h" -#include "hash-set.h" -#include "machmode.h" -#include "vec.h" -#include "double-int.h" -#include "input.h" -#include "alias.h" -#include "symtab.h" -#include "wide-int.h" -#include "inchash.h" +#include "backend.h" +#include "cfghooks.h" #include "tree.h" +#include "rtl.h" +#include "df.h" +#include "alias.h" #include "fold-const.h" #include "stor-layout.h" #include "varasm.h" #include "calls.h" #include "stringpool.h" -#include "rtl.h" #include "regs.h" -#include "hard-reg-set.h" -#include "real.h" #include "insn-config.h" #include "conditions.h" #include "output.h" #include "insn-attr.h" #include "flags.h" -#include "function.h" #include "insn-codes.h" #include "optabs.h" -#include "hashtab.h" -#include "statistics.h" -#include "fixed-value.h" #include "expmed.h" #include "dojump.h" #include "explow.h" @@ -63,18 +51,12 @@ along with GCC; see the file COPYING3. If not see #include "toplev.h" #include "tm_p.h" #include "target.h" -#include "dominance.h" -#include "cfg.h" #include "cfgrtl.h" #include "cfganal.h" #include "lcm.h" #include "cfgbuild.h" #include "cfgcleanup.h" -#include "predict.h" -#include "basic-block.h" -#include "df.h" #include "langhooks.h" -#include "ggc.h" #include "tm-constrs.h" #include "tree-pass.h" /* for current_pass */ #include "context.h" @@ -590,7 +572,7 @@ sfunc_symbol (const char *name) } /* X and Y are two things to compare using CODE in IN_MODE. - Emit the compare insn, construct the the proper cc reg in the proper + Emit the compare insn, construct the proper cc reg in the proper mode, and return the rtx for the cc reg comparison in CMODE. */ rtx @@ -669,7 +651,7 @@ gen_compare_reg (machine_mode cmode, enum rtx_code code, else x = force_reg (in_mode, x); - pat = gen_rtx_SET (VOIDmode, cc_reg, gen_rtx_COMPARE (mode, x, y)); + pat = gen_rtx_SET (cc_reg, gen_rtx_COMPARE (mode, x, y)); if (mode == CC_FP_EQmode || mode == CC_FP_GTEmode) { const char *name = mode == CC_FP_EQmode ? "__eqsf2" : "__gtesf2"; @@ -784,9 +766,12 @@ epiphany_arg_partial_bytes (cumulative_args_t cum, machine_mode mode, scanned. In either case, *TOTAL contains the cost result. */ static bool -epiphany_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED, +epiphany_rtx_costs (rtx x, machine_mode mode, int outer_code, + int opno ATTRIBUTE_UNUSED, int *total, bool speed ATTRIBUTE_UNUSED) { + int code = GET_CODE (x); + switch (code) { /* Small integers in the right context are as cheap as registers. */ @@ -827,7 +812,7 @@ epiphany_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED, return true; case COMPARE: - switch (GET_MODE (x)) + switch (mode) { /* There are a number of single-insn combiner patterns that use the flag side effects of arithmetic. */ @@ -1570,7 +1555,7 @@ frame_subreg_note (rtx set, int offset) rtx src = simplify_gen_subreg (SImode, SET_SRC (set), DImode, offset); rtx dst = simplify_gen_subreg (SImode, SET_DEST (set), DImode, offset); - set = gen_rtx_SET (VOIDmode, dst ,src); + set = gen_rtx_SET (dst ,src); RTX_FRAME_RELATED_P (set) = 1; return set; } @@ -1625,7 +1610,7 @@ frame_insn (rtx x) static rtx_insn * frame_move_insn (rtx to, rtx from) { - return frame_insn (gen_rtx_SET (VOIDmode, to, from)); + return frame_insn (gen_rtx_SET (to, from)); } /* Generate a MEM referring to a varargs argument slot. */ @@ -1867,11 +1852,10 @@ epiphany_expand_prologue (void) /* Instruction scheduling can separate the instruction setting IP from INSN so that dwarf2out_frame_debug_expr becomes confused what the temporary register is. Example: _gcov.o */ - note = gen_rtx_SET (VOIDmode, stack_pointer_rtx, + note = gen_rtx_SET (stack_pointer_rtx, gen_rtx_PLUS (Pmode, stack_pointer_rtx, off)); note = gen_rtx_PARALLEL (VOIDmode, - gen_rtvec (2, gen_rtx_SET (VOIDmode, mem2, reg), - note)); + gen_rtvec (2, gen_rtx_SET (mem2, reg), note)); add_reg_note (insn, REG_FRAME_RELATED_EXPR, note); } /* If there is only one or no register to save, yet we have a large frame, diff --git a/gcc/config/epiphany/epiphany.h b/gcc/config/epiphany/epiphany.h index ca8fa197892..62a3d9d7ee6 100644 --- a/gcc/config/epiphany/epiphany.h +++ b/gcc/config/epiphany/epiphany.h @@ -467,7 +467,7 @@ typedef struct GTY (()) machine_function /* Define this macro if pushing a word onto the stack moves the stack pointer to a smaller address. */ -#define STACK_GROWS_DOWNWARD +#define STACK_GROWS_DOWNWARD 1 /* Define this to nonzero if the nominal address of the stack frame is at the high-address end of the local variables; @@ -692,7 +692,7 @@ typedef struct GTY (()) machine_function /* Define this macro if it is as good or better to call a constant function address than to call an address kept in a register. */ /* On the EPIPHANY, calling through registers is slow. */ -#define NO_FUNCTION_CSE +#define NO_FUNCTION_CSE 1 /* Section selection. */ /* WARNING: These section names also appear in dwarf2out.c. */ @@ -845,7 +845,7 @@ do \ /* Define if operations between registers always perform the operation on the full register even if a narrower mode is specified. */ -#define WORD_REGISTER_OPERATIONS +#define WORD_REGISTER_OPERATIONS 1 /* Define if loading in MODE, an integral mode narrower than BITS_PER_WORD will either zero-extend or sign-extend. The value of this macro should diff --git a/gcc/config/epiphany/epiphany.md b/gcc/config/epiphany/epiphany.md index 5dfde21190c..428092601c0 100644 --- a/gcc/config/epiphany/epiphany.md +++ b/gcc/config/epiphany/epiphany.md @@ -1870,7 +1870,7 @@ { if (operands[3] != const0_rtx) operands[2] = gen_rtx_MINUS (SImode, operands[2], operands[3]); - operands[2] = gen_rtx_SET (VOIDmode, operands[0], operands[2]); + operands[2] = gen_rtx_SET (operands[0], operands[2]); operands[3] = operands[0]; } operands[4] = gen_rtx_fmt_ee (cmp_code, SImode, @@ -2269,7 +2269,7 @@ (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, gen_rtx_SET - (VOIDmode, operands[0], + (operands[0], gen_rtx_CALL (VOIDmode, operands[1], operands[2])), gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, GPR_LR))))); @@ -2312,7 +2312,7 @@ (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, gen_rtx_SET - (VOIDmode, operands[0], + (operands[0], gen_rtx_CALL (VOIDmode, operands[1], operands[2])), ret_rtx))); emit_insn (target_uninterruptible ? gen_gie (): gen_gid ()); @@ -2628,7 +2628,7 @@ (VOIDmode, gen_rtvec (4, - gen_rtx_SET (VOIDmode, operands[5], + gen_rtx_SET (operands[5], gen_rtx_MULT (SImode, operands[6], operands[4])), gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CC_FPmode, CCFP_REGNUM)), operands[9], operands[10]))); @@ -2640,7 +2640,7 @@ (VOIDmode, gen_rtvec (4, - gen_rtx_SET (VOIDmode, operands[7], + gen_rtx_SET (operands[7], gen_rtx_MULT (SImode, operands[8], operands[4])), gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CC_FPmode, CCFP_REGNUM)), operands[9], operands[10]))); diff --git a/gcc/config/epiphany/mode-switch-use.c b/gcc/config/epiphany/mode-switch-use.c index ad107157738..e6d3dce2987 100644 --- a/gcc/config/epiphany/mode-switch-use.c +++ b/gcc/config/epiphany/mode-switch-use.c @@ -22,31 +22,21 @@ along with GCC; see the file COPYING3. If not see #include "config.h" #include "system.h" #include "coretypes.h" -#include "tm.h" +#include "backend.h" +#include "cfghooks.h" #include "rtl.h" -#include "hashtab.h" -#include "hash-set.h" -#include "vec.h" -#include "machmode.h" -#include "hard-reg-set.h" -#include "input.h" -#include "function.h" +#include "df.h" #include "emit-rtl.h" #include "tree-pass.h" #include "insn-attr.h" #include "insn-config.h" #include "recog.h" #include "tm_p.h" -#include "dominance.h" -#include "cfg.h" #include "cfgrtl.h" #include "cfganal.h" #include "lcm.h" #include "cfgbuild.h" #include "cfgcleanup.h" -#include "predict.h" -#include "basic-block.h" -#include "df.h" #ifndef TARGET_INSERT_MODE_SWITCH_USE #define TARGET_INSERT_MODE_SWITCH_USE NULL diff --git a/gcc/config/epiphany/resolve-sw-modes.c b/gcc/config/epiphany/resolve-sw-modes.c index fc8ccf94b9c..de3204e5223 100644 --- a/gcc/config/epiphany/resolve-sw-modes.c +++ b/gcc/config/epiphany/resolve-sw-modes.c @@ -21,27 +21,16 @@ along with GCC; see the file COPYING3. If not see #include "config.h" #include "system.h" #include "coretypes.h" -#include "machmode.h" -#include "tm.h" -#include "hard-reg-set.h" +#include "backend.h" +#include "cfghooks.h" +#include "rtl.h" +#include "df.h" #include "tm_p.h" -#include "vec.h" -#include "sbitmap.h" -#include "predict.h" -#include "hashtab.h" -#include "hash-set.h" -#include "input.h" -#include "function.h" -#include "dominance.h" -#include "cfg.h" #include "cfgrtl.h" #include "cfganal.h" #include "lcm.h" #include "cfgbuild.h" #include "cfgcleanup.h" -#include "basic-block.h" -#include "df.h" -#include "rtl.h" #include "insn-config.h" #include "insn-codes.h" #include "emit-rtl.h" |