rs6000_delegitimize_address fix

Message ID
State New
Headers show

Commit Message

David Edelsohn Jan. 23, 2013, 4:24 p.m.
While debugging the selective scheduler problem, Jakub pointed out
that not all AIX TOC references are in the constant pool, causing an
ICE for him.  This patch checks that the TOC operand is a symbol ref
in the constant pool before trying to check its value.

* config/rs6000/rs6000.c (rs6000_delegitimize_address): Check that TOC
operand is
a valid symbol ref in the constant pool.


Index: rs6000.c
--- rs6000.c    (revision 195397)
+++ rs6000.c    (working copy)
@@ -5831,6 +5831,8 @@  rs6000_delegitimize_address (rtx orig_x)
       /* Do not associate thread-local symbols with the original
         constant pool symbol.  */
       if (TARGET_XCOFF
+         && GET_CODE (y) == SYMBOL_REF
+         && CONSTANT_POOL_ADDRESS_P (y)
          && SYMBOL_REF_TLS_MODEL (get_pool_constant (y)) >= TLS_MODEL_REAL)
        return orig_x;