Commit 2283164d by Tristan Gingold Committed by Tristan Gingold

vms.h (CASE_VECTOR_MODE): Define.

2012-03-27  Tristan Gingold  <gingold@adacore.com>

	* config/ia64/vms.h (CASE_VECTOR_MODE): Define.
	* config/ia64/ia64.md: Remove mode in template.
	Sign extend operand in expand_simple_binop.
	* config/ia64/ia64.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use
	CASE_VECTOR_MODE instead of TARGET_ILP32.
	(ADDR_VEC_ALIGN): Make it depends on CASE_VECTOR_MODE.

From-SVN: r185851
parent f1cdfa01
2012-03-27 Tristan Gingold <gingold@adacore.com>
* config/ia64/vms.h (CASE_VECTOR_MODE): Define.
* config/ia64/ia64.md: Remove mode in template.
Sign extend operand in expand_simple_binop.
* config/ia64/ia64.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use
CASE_VECTOR_MODE instead of TARGET_ILP32.
(ADDR_VEC_ALIGN): Make it depends on CASE_VECTOR_MODE.
2012-03-26 Steven Bosscher <steven@gcc.gnu.org> 2012-03-26 Steven Bosscher <steven@gcc.gnu.org>
* varasm.c (assemble_external): #if 0 out the new assert from the * varasm.c (assemble_external): #if 0 out the new assert from the
......
...@@ -1484,15 +1484,15 @@ do { \ ...@@ -1484,15 +1484,15 @@ do { \
#define ASM_OUTPUT_ADDR_DIFF_ELT(STREAM, BODY, VALUE, REL) \ #define ASM_OUTPUT_ADDR_DIFF_ELT(STREAM, BODY, VALUE, REL) \
do { \ do { \
if (TARGET_ILP32) \ if (CASE_VECTOR_MODE == SImode) \
fprintf (STREAM, "\tdata4 @pcrel(.L%d)\n", VALUE); \ fprintf (STREAM, "\tdata4 @pcrel(.L%d)\n", VALUE); \
else \ else \
fprintf (STREAM, "\tdata8 @pcrel(.L%d)\n", VALUE); \ fprintf (STREAM, "\tdata8 @pcrel(.L%d)\n", VALUE); \
} while (0) } while (0)
/* Jump tables only need 8 byte alignment. */ /* Jump tables only need 4 or 8 byte alignment. */
#define ADDR_VEC_ALIGN(ADDR_VEC) 3 #define ADDR_VEC_ALIGN(ADDR_VEC) (CASE_VECTOR_MODE == SImode ? 2 : 3)
/* Assembler Commands for Exception Regions. */ /* Assembler Commands for Exception Regions. */
......
...@@ -4578,7 +4578,7 @@ ...@@ -4578,7 +4578,7 @@
[(set_attr "itanium_class" "br")]) [(set_attr "itanium_class" "br")])
(define_expand "tablejump" (define_expand "tablejump"
[(parallel [(set (pc) (match_operand:DI 0 "memory_operand" "")) [(parallel [(set (pc) (match_operand 0 "memory_operand" ""))
(use (label_ref (match_operand 1 "" "")))])] (use (label_ref (match_operand 1 "" "")))])]
"" ""
{ {
...@@ -4614,7 +4614,7 @@ ...@@ -4614,7 +4614,7 @@
from the entry to the label. Thus to convert to an absolute address from the entry to the label. Thus to convert to an absolute address
we add the address of the memory from which the value is loaded. */ we add the address of the memory from which the value is loaded. */
operands[0] = expand_simple_binop (DImode, PLUS, op0, addr, operands[0] = expand_simple_binop (DImode, PLUS, op0, addr,
NULL_RTX, 1, OPTAB_DIRECT); NULL_RTX, 0, OPTAB_DIRECT);
}) })
(define_insn "*tablejump_internal" (define_insn "*tablejump_internal"
......
...@@ -146,6 +146,10 @@ STATIC func_ptr __CTOR_LIST__[1] \ ...@@ -146,6 +146,10 @@ STATIC func_ptr __CTOR_LIST__[1] \
#undef TARGET_PROMOTE_FUNCTION_MODE #undef TARGET_PROMOTE_FUNCTION_MODE
#define TARGET_PROMOTE_FUNCTION_MODE default_promote_function_mode_always_promote #define TARGET_PROMOTE_FUNCTION_MODE default_promote_function_mode_always_promote
/* Code is always in P0/P1 (lower 32 bit addresses) on VMS. */
#undef CASE_VECTOR_MODE
#define CASE_VECTOR_MODE SImode
/* IA64 VMS doesn't fully support COMDAT sections. */ /* IA64 VMS doesn't fully support COMDAT sections. */
#define SUPPORTS_ONE_ONLY 0 #define SUPPORTS_ONE_ONLY 0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment