>-#define PIC_OFFSET_TABLE_REGNUM \
>-  ((TARGET_64BIT && (ix86_cmodel == CM_SMALL_PIC \
>-                     || TARGET_PECOFF)) \
>-   || !flag_pic ? INVALID_REGNUM \
>-   : reload_completed ? REGNO (pic_offset_table_rtx) \
>+#define PIC_OFFSET_TABLE_REGNUM \
>+  ((TARGET_64BIT && (ix86_cmodel == CM_SMALL_PIC \
>+                     || TARGET_PECOFF)) \
>+   || !flag_pic ? INVALID_REGNUM \
>+   : pic_offset_table_rtx ? INVALID_REGNUM \
>    : REAL_PIC_OFFSET_TABLE_REGNUM)

>No negative conditions, please. Also, please follow established
>multi-level condition format, please see e.g. HARD_REGNO_NREGS
>definition in i386.h.
I don't see how we can avoid negative condition here. If we remove
"not" from !flag_pic we'll need to add "not" to TARGET_64BIT and
TARGET_PECOFF.

I've done it this way:
+#define PIC_OFFSET_TABLE_REGNUM
         \
+  ((TARGET_64BIT && (ix86_cmodel == CM_SMALL_PIC                       \
+                     || TARGET_PECOFF))
         \
+   || !flag_pic
         \
+   ? INVALID_REGNUM                                                    \
+   : pic_offset_table_rtx                                              \
+     ? INVALID_REGNUM                                                  \
+     : REAL_PIC_OFFSET_TABLE_REGNUM)

Is it ok?

On Fri, Oct 10, 2014 at 6:01 PM, Evgeny Stupachenko <evstu...@gmail.com> wrote:
> Updated ChangeLog:
> 2014-10-10  Ilya Enkovich  <ilya.enkov...@intel.com>
>             Vladimir Makarov  <vmaka...@redhat.com>
>
>         * config/i386/i386.c (ix86_use_pseudo_pic_reg): New.
>         (ix86_init_pic_reg): New.
>         (ix86_select_alt_pic_regnum): Add check on pseudo register.
>         (ix86_save_reg): Likewise.
>         (ix86_expand_prologue): Remove PIC register initialization
>         now performed in ix86_init_pic_reg.
>         (ix86_output_function_epilogue): Add check on pseudo register.
>         (set_pic_reg_ever_alive): New.
>         (legitimize_pic_address): Replace df_set_regs_ever_live with new
>         set_pic_reg_ever_alive.
>         (legitimize_tls_address): Likewise.
>         (ix86_pic_register_p): New check.
>         (ix86_delegitimize_address): Add check on pseudo register.
>         (ix86_expand_call): Insert move from pseudo PIC register to ABI
>         defined REAL_PIC_OFFSET_TABLE_REGNUM.
>         (TARGET_INIT_PIC_REG): New.
>         (TARGET_USE_PSEUDO_PIC_REG): New.
>         * config/i386/i386.h (PIC_OFFSET_TABLE_REGNUM): Return INVALID_REGNUM
>         if pic_offset_table_rtx exists.
>
>>-      if (pic_offset_table_rtx)
>>+      if (pic_offset_table_rtx
>>+  && (!reload_completed || !ix86_use_pseudo_pic_reg ()))
>
>>Hm, can you please add a comment for this change?
>
> I've added the following comment to the patch:
> -        in which case we return (%ecx - %ebx) + foo.  */
> +        in which case we return (%ecx - %ebx) + foo.
> +
> +        Note that when pseudo_pic_reg is used we can generate it only
> +        before reload_completed.  */
>
> On Fri, Oct 10, 2014 at 4:36 PM, Jakub Jelinek <ja...@redhat.com> wrote:
>> On Fri, Oct 10, 2014 at 02:34:07PM +0200, Rainer Orth wrote:
>>> Uros Bizjak <ubiz...@gmail.com> writes:
>>>
>>> > On Fri, Oct 10, 2014 at 9:43 AM, Evgeny Stupachenko <evstu...@gmail.com> 
>>> > wrote:
>>> >> i386 specific part of the patch:
>>> >>
>>> >> 2014-10-08  Ilya Enkovich  <ilya.enkov...@intel.com>
>>> >>             Vladimir Makarov  <vmaka...@redhat.com>
>>> >>         * gcc/config/i386/i386.c (ix86_use_pseudo_pic_reg): New.
>>>
>>> Evgeny: here and in your other submissions: drop the gcc prefix from the
>>> pathnames.  They are all relative to the directory the ChangeLog lives
>>> in.
>>
>> And add a blank line after after the e-mail lines.
>>
>>         Jakub

Reply via email to