On Tue, Mar 18, 2014 at 4:36 AM, Mike Stump <[email protected]> wrote:
> So, to support things like this:
>
> (define_constants
> (C1_TEMP_REGNUM PROLOGUE_SCRATCH_1)
> (C1_TEMP2_REGNUM PROLOGUE_SCRATCH_2)
>
> I need the rtl reader to do less checking. We we turn off int validation,
> this then works, and we get:
>
> #define C1_TEMP_REGNUM PROLOGUE_SCRATCH_1
>
> in insn-constants.h, which is what I wanted. The problem is that I choose
> different scratch register based upon the cpu and this is then used in a
> clobber in the rtl of a define_insn.
>
> I'd be happy to do this some other way, but, I didn't see a way to do this,
> otherwise.
>
> Absent a better solution, I'd like to pursue this. The only question I have,
> remove the checking, or allow the target to explain that we don't want the
> checking?
Make it
(define_symbolic_constant
(C1_TEMP_REGNUM PROLOGUE_SCRATCH_1)
?
>
> diff --git a/gcc/read-rtl.c b/gcc/read-rtl.c
> index c198b5b..ceef96c 100644
> --- a/gcc/read-rtl.c
> +++ b/gcc/read-rtl.c
> @@ -807,8 +807,12 @@ validate_const_int (const char *string)
> valid = 0;
> break;
> }
> +#if 0
> + /* In order to support defining the md constants in terms of CPP constants
> from tm.h, we
> + can't check this. */
> if (!valid)
> fatal_with_file_and_line ("invalid decimal constant \"%s\"\n", string);
> +#endif
> }
>
> static void
>