From: Richard Kenner Date: Wed, 26 Jul 1995 12:03:31 +0000 (-0400) Subject: (LEGITIMATE_PIC_OPERAND_P): Reject CONST_DOUBLE with MEM with invalid X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=56cbbbd71726c8e018202b8b6a163c0187948a58;p=gcc.git (LEGITIMATE_PIC_OPERAND_P): Reject CONST_DOUBLE with MEM with invalid pic address. From-SVN: r10156 --- diff --git a/gcc/config/m68k/hp320.h b/gcc/config/m68k/hp320.h index a00917d1d58..f748f3fde13 100644 --- a/gcc/config/m68k/hp320.h +++ b/gcc/config/m68k/hp320.h @@ -1,5 +1,5 @@ /* Definitions of target machine for GNU compiler. HP-UX 68000/68020 version. - Copyright (C) 1987, 1988, 1993, 1994 Free Software Foundation, Inc. + Copyright (C) 1987, 1988, 1993, 1994, 1995 Free Software Foundation, Inc. This file is part of GNU CC. @@ -595,12 +595,16 @@ do { register int i; \ (LABEL_NO)); #endif /* not HPUX_ASM */ + /* In m68k svr4, a symbol_ref rtx can be a valid PIC operand if it is an operand of a function call. */ #undef LEGITIMATE_PIC_OPERAND_P #define LEGITIMATE_PIC_OPERAND_P(X) \ - (! symbolic_operand (X, VOIDmode) \ - || ((GET_CODE(X) == SYMBOL_REF) && SYMBOL_REF_FLAG(X))) + ((! symbolic_operand (X, VOIDmode) \ + && ! (GET_CODE (X) == CONST_DOUBLE && CONST_DOUBLE_MEM (X) \ + && GET_CODE (CONST_DOUBLE_MEM (X)) == MEM \ + && symbolic_operand (XEXP (CONST_DOUBLE_MEM (X), 0), VOIDmode))) \ + || (GET_CODE (X) == SYMBOL_REF && SYMBOL_REF_FLAG (X))) /* hpux8 and later have C++ compatible include files, so do not pretend they are `extern "C"'. */ diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h index 5f268001bff..e54bee36d1a 100644 --- a/gcc/config/m68k/m68k.h +++ b/gcc/config/m68k/m68k.h @@ -1080,7 +1080,10 @@ __transfer_from_trampoline () \ that X satisfies CONSTANT_P or is a CONST_DOUBLE. */ #define LEGITIMATE_PIC_OPERAND_P(X) \ - (! symbolic_operand (X, VOIDmode)) + (! symbolic_operand (X, VOIDmode) \ + && ! (GET_CODE (X) == CONST_DOUBLE && CONST_DOUBLE_MEM (X) \ + && GET_CODE (CONST_DOUBLE_MEM (X)) == MEM \ + && symbolic_operand (XEXP (CONST_DOUBLE_MEM (X), 0), VOIDmode))) /* The macros REG_OK_FOR..._P assume that the arg is a REG rtx and check its validity for a certain class.