aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/doc/rtl.texi18
-rw-r--r--gcc/read-rtl.c10
2 files changed, 28 insertions, 0 deletions
diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi
index 4f9b990..7c12991 100644
--- a/gcc/doc/rtl.texi
+++ b/gcc/doc/rtl.texi
@@ -1711,6 +1711,24 @@ machine's or host machine's floating point format. To convert them to
the precise bit pattern used by the target machine, use the macro
@code{REAL_VALUE_TO_TARGET_DOUBLE} and friends (@pxref{Data Output}).
+@findex const_double_zero
+The host dependency for the number of integers used to store a double
+value makes it problematic for machine descriptions to use expressions
+of code @code{const_double} and therefore a syntactic alias has been
+provided:
+
+@smallexample
+(const_double_zero)
+@end smallexample
+
+standing for:
+
+@smallexample
+(const_double 0 0 @dots{})
+@end smallexample
+
+for matching the floating-point value zero, possibly the only useful one.
+
@findex CONST_WIDE_INT
@item (const_wide_int:@var{m} @var{nunits} @var{elt0} @dots{})
This contains an array of @code{HOST_WIDE_INT}s that is large enough
diff --git a/gcc/read-rtl.c b/gcc/read-rtl.c
index 403f254..2922af5 100644
--- a/gcc/read-rtl.c
+++ b/gcc/read-rtl.c
@@ -1651,6 +1651,16 @@ rtx_reader::read_rtx_code (const char *code_name)
return return_rtx;
}
+ /* Handle "const_double_zero". */
+ if (strcmp (code_name, "const_double_zero") == 0)
+ {
+ code = CONST_DOUBLE;
+ return_rtx = rtx_alloc (code);
+ memset (return_rtx, 0, RTX_CODE_SIZE (code));
+ PUT_CODE (return_rtx, code);
+ return return_rtx;
+ }
+
/* If we end up with an insn expression then we free this space below. */
return_rtx = rtx_alloc_for_name (code_name);
code = GET_CODE (return_rtx);