This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Propagation of "pointer" attribute on registers





Is there a reason REG_POINTER isn't propagated to the target register for
rtl insns of the form "reg_x = regP_y + reg_z", where regP_y is a reg
marked as REG_POINTER?  It seems the attribute is only propagated when we
have "reg_x = regP_y + CONST", at least in the couple instances I saw
(regclass.c:reg_scan_mark_refs() and explow.c:memory_address()).  I've run
across a case where lack of the REG_POINTER attribute is causing global PRE
to miss a hoisting opportunity since a memory reference no longer looks
available (memory disambiguation fails in alias.c:base_alias_check() since
we can't determine the base address of the memory reference).

-Pat


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]