aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/ia64/vms.h
diff options
context:
space:
mode:
authorTristan Gingold <gingold@adacore.com>2011-12-22 16:40:11 +0000
committerTristan Gingold <gingold@gcc.gnu.org>2011-12-22 16:40:11 +0000
commit8ee957277277dd4efb39d5d828f2bfa5573c2fc8 (patch)
tree7bf3daa55d25df3c0217a9acf9699af3680700a4 /gcc/config/ia64/vms.h
parent64729d8c5d47f1d2f50f508f61303e3be0c1b64a (diff)
downloadgcc-8ee957277277dd4efb39d5d828f2bfa5573c2fc8.zip
gcc-8ee957277277dd4efb39d5d828f2bfa5573c2fc8.tar.gz
gcc-8ee957277277dd4efb39d5d828f2bfa5573c2fc8.tar.bz2
ia64.c (ia64_promote_function_mode): Remove.
2011-12-22 Tristan Gingold <gingold@adacore.com> * config/ia64/ia64.c (ia64_promote_function_mode): Remove. (TARGET_PROMOTE_FUNCTION_MODE): Remove. (ia64_function_value): Call promote_function_mode instead of ia64_promote_function_mode. * config/ia64/vms.h (PROMOTE_MODE): Define. (TARGET_PROMOTE_FUNCTION_MODE): Define. From-SVN: r182627
Diffstat (limited to 'gcc/config/ia64/vms.h')
-rw-r--r--gcc/config/ia64/vms.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/config/ia64/vms.h b/gcc/config/ia64/vms.h
index 75ea4ad..f34ee78 100644
--- a/gcc/config/ia64/vms.h
+++ b/gcc/config/ia64/vms.h
@@ -135,3 +135,25 @@ STATIC func_ptr __CTOR_LIST__[1] \
#undef TARGET_ASM_NAMED_SECTION
#define TARGET_ASM_NAMED_SECTION ia64_vms_elf_asm_named_section
+
+/* Define this macro if it is advisable to hold scalars in registers
+ in a wider mode than that declared by the program. In such cases,
+ the value is constrained to be within the bounds of the declared
+ type, but kept valid in the wider mode. The signedness of the
+ extension may differ from that of the type.
+
+ For ia64, we always store objects in a full register. 32-bit integers
+ are always sign-extended, but smaller objects retain their signedness. */
+
+#undef PROMOTE_MODE
+#define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE) \
+ if (GET_MODE_CLASS (MODE) == MODE_INT \
+ && GET_MODE_SIZE (MODE) < UNITS_PER_WORD) \
+ { \
+ if ((MODE) == SImode) \
+ (UNSIGNEDP) = 0; \
+ (MODE) = DImode; \
+ }
+
+#undef TARGET_PROMOTE_FUNCTION_MODE
+#define TARGET_PROMOTE_FUNCTION_MODE default_promote_function_mode_always_promote