Commit a06e3c40 by J"orn Rennecke Committed by Joern Rennecke

rtl.h (gen_rtx_CONST_VECTOR): Declare.

	* rtl.h (gen_rtx_CONST_VECTOR): Declare.
	* gengenrtl.c (special_rtx): Check for CONST_VECTOR.
	* emit-rtl.c (gen_rtx_CONST_VECTOR): New function.
	(gen_const_vector_0): Use it.

From-SVN: r55395
parent b70fc53b
Thu Jul 11 11:31:12 2002 J"orn Rennecke <joern.rennecke@superh.com>
* rtl.h (gen_rtx_CONST_VECTOR): Declare.
* gengenrtl.c (special_rtx): Check for CONST_VECTOR.
* emit-rtl.c (gen_rtx_CONST_VECTOR): New function.
(gen_const_vector_0): Use it.
2002-07-11 John David Anglin <dave@hiauly1.hia.nrc.ca>
* pa.md (adddi3): For 32-bit targets, force constants to a register
......
......@@ -5188,10 +5188,26 @@ gen_const_vector_0 (mode)
for (i = 0; i < units; ++i)
RTVEC_ELT (v, i) = CONST0_RTX (inner);
tem = gen_rtx_CONST_VECTOR (mode, v);
tem = gen_rtx_raw_CONST_VECTOR (mode, v);
return tem;
}
/* Generate a vector like gen_rtx_raw_CONST_VEC, but use the zero vector when
all elements are zero. */
rtx
gen_rtx_CONST_VECTOR (mode, v)
enum machine_mode mode;
rtvec v;
{
rtx inner_zero = CONST0_RTX (GET_MODE_INNER (mode));
int i;
for (i = GET_MODE_NUNITS (mode) - 1; i >= 0; i--)
if (RTVEC_ELT (v, i) != inner_zero)
return gen_rtx_raw_CONST_VECTOR (mode, v);
return CONST0_RTX (mode);
}
/* Create some permanent unique rtl objects shared between all functions.
LINE_NUMBERS is nonzero if line numbers are to be generated. */
......
......@@ -149,7 +149,8 @@ special_rtx (idx)
return (strcmp (defs[idx].enumname, "CONST_INT") == 0
|| strcmp (defs[idx].enumname, "REG") == 0
|| strcmp (defs[idx].enumname, "SUBREG") == 0
|| strcmp (defs[idx].enumname, "MEM") == 0);
|| strcmp (defs[idx].enumname, "MEM") == 0
|| strcmp (defs[idx].enumname, "CONST_VECTOR") == 0);
}
/* Return nonzero if the RTL code given by index IDX is one that we should
......
......@@ -1712,6 +1712,7 @@ extern GTY(()) rtx return_address_pointer_rtx;
should also modify gen_rtx to use the special function. */
extern rtx gen_rtx_CONST_INT PARAMS ((enum machine_mode, HOST_WIDE_INT));
extern rtx gen_rtx_CONST_VECTOR PARAMS ((enum machine_mode, rtvec));
extern rtx gen_raw_REG PARAMS ((enum machine_mode, int));
extern rtx gen_rtx_REG PARAMS ((enum machine_mode, unsigned));
extern rtx gen_rtx_SUBREG PARAMS ((enum machine_mode, rtx, int));
......
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