mep.md (eh_epilogue): Defer until after epilogue is emitted.
* config/mep/mep.md (eh_epilogue): Defer until after epilogue is emitted. * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New. * config/mep/mep.c (mep_legitimate_constant_p): New. * config/mep/mep-protos.h: Prototype it. From-SVN: r151625
This commit is contained in:
parent
24f7037972
commit
5ba863d70d
5 changed files with 27 additions and 2 deletions
|
@ -1,3 +1,12 @@
|
|||
2009-09-10 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* config/mep/mep.md (eh_epilogue): Defer until after epilogue is
|
||||
emitted.
|
||||
|
||||
* config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
|
||||
* config/mep/mep.c (mep_legitimate_constant_p): New.
|
||||
* config/mep/mep-protos.h: Prototype it.
|
||||
|
||||
2009-09-10 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* print-rtl.c (print_rtx): Fix JUMP_LABEL index.
|
||||
|
|
|
@ -48,6 +48,7 @@ extern void mep_split_wide_move (rtx *, enum machine_mode);
|
|||
#ifdef RTX_CODE
|
||||
extern bool mep_expand_setcc (rtx *);
|
||||
extern rtx mep_expand_cbranch (rtx *);
|
||||
extern bool mep_legitimate_constant_p (rtx);
|
||||
#endif
|
||||
extern const char *mep_emit_cbranch (rtx *, int);
|
||||
extern void mep_expand_call (rtx *, int);
|
||||
|
|
|
@ -1211,6 +1211,20 @@ mep_multi_slot (rtx x)
|
|||
}
|
||||
|
||||
|
||||
bool
|
||||
mep_legitimate_constant_p (rtx x)
|
||||
{
|
||||
/* We can't convert symbol values to gp- or tp-rel values after
|
||||
reload, as reload might have used $gp or $tp for other
|
||||
purposes. */
|
||||
if (GET_CODE (x) == SYMBOL_REF && (reload_in_progress || reload_completed))
|
||||
{
|
||||
char e = mep_section_tag (x);
|
||||
return (e != 't' && e != 'b');
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Be careful not to use macros that need to be compiled one way for
|
||||
strict, and another way for not-strict, like REG_OK_FOR_BASE_P. */
|
||||
|
||||
|
|
|
@ -599,7 +599,8 @@ typedef struct
|
|||
|
||||
#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)
|
||||
|
||||
#define LEGITIMATE_CONSTANT_P(X) 1
|
||||
#define LEGITIMATE_CONSTANT_P(X) \
|
||||
mep_legitimate_constant_p(X)
|
||||
|
||||
#define SELECT_CC_MODE(OP, X, Y) CCmode
|
||||
|
||||
|
|
|
@ -2192,7 +2192,7 @@
|
|||
(use (reg:SI LP_REGNO))]
|
||||
""
|
||||
"#"
|
||||
"reload_completed"
|
||||
"epilogue_completed"
|
||||
[(const_int 1)]
|
||||
"mep_emit_eh_epilogue (operands); DONE;"
|
||||
[(set_attr "slot" "multi")])
|
||||
|
|
Loading…
Add table
Reference in a new issue