comparison gcc/config/cris/cris.h @ 36:855418dad1a3

gcc-4.4-20091020
author e075725
date Tue, 22 Dec 2009 21:19:31 +0900
parents a06113de4d67
children 77e2b8dfacca
comparison
equal deleted inserted replaced
19:58ad6c70ea60 36:855418dad1a3
642 && (CLASS) != CC0_REGS \ 642 && (CLASS) != CC0_REGS \
643 && (CLASS) != SPECIAL_REGS \ 643 && (CLASS) != SPECIAL_REGS \
644 ? GENERAL_REGS : (CLASS)) 644 ? GENERAL_REGS : (CLASS))
645 645
646 /* We can't move special registers to and from memory in smaller than 646 /* We can't move special registers to and from memory in smaller than
647 word_mode. */ 647 word_mode. We also can't move between special registers. Luckily,
648 #define SECONDARY_RELOAD_CLASS(CLASS, MODE, X) \ 648 -1, as returned by true_regnum for non-sub/registers, is valid as a
649 (((CLASS) != SPECIAL_REGS && (CLASS) != MOF_REGS) \ 649 parameter to our REGNO_REG_CLASS, returning GENERAL_REGS, so we get
650 || GET_MODE_SIZE (MODE) == 4 \ 650 the effect that any X that isn't a special-register is treated as
651 || !MEM_P (X) \ 651 a non-empty intersection with GENERAL_REGS. */
652 ? NO_REGS : GENERAL_REGS) 652 #define SECONDARY_RELOAD_CLASS(CLASS, MODE, X) \
653 ((((CLASS) == SPECIAL_REGS || (CLASS) == MOF_REGS) \
654 && ((GET_MODE_SIZE (MODE) < 4 && MEM_P (X)) \
655 || !reg_classes_intersect_p (REGNO_REG_CLASS (true_regnum (X)), \
656 GENERAL_REGS))) \
657 ? GENERAL_REGS : NO_REGS)
653 658
654 /* FIXME: Fix regrename.c; it should check validity of replacements, 659 /* FIXME: Fix regrename.c; it should check validity of replacements,
655 not just with a silly pass-specific macro. We may miss some 660 not just with a silly pass-specific macro. We may miss some
656 opportunities, but we must stop regrename from creating acr++. */ 661 opportunities, but we must stop regrename from creating acr++. */
657 #define HARD_REGNO_RENAME_OK(FROM, TO) ((TO) != CRIS_ACR_REGNUM) 662 #define HARD_REGNO_RENAME_OK(FROM, TO) ((TO) != CRIS_ACR_REGNUM)