This is the mail archive of the gcc-bugs@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]

[Bug target/64795] [5 regression] too many memory references for `lea'


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64795

UroÅ Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2015-01-26
           Assignee|unassigned at gcc dot gnu.org      |ubizjak at gmail dot com
     Ever confirmed|0                           |1

--- Comment #2 from UroÅ Bizjak <ubizjak at gmail dot com> ---
The failed insn is:

#(insn 8 6 13 2 (set (mem/f/j/c:DI (symbol_ref:DI ("_ZZ4mainE1a") [flags 0x2]
<var_decl 0x7fe4d00f2900 a>) [0 a.pf+0 S8 A64])
#        (symbol_ref:DI ("_ZL3fn21s") [flags 0x3] <function_decl 0x7fe4d02dd0d8
fn2>)) t.ii:10 89 {*movdi_internal}
#     (nil))
    leaq    _ZL3fn21s(%rip), _ZZ4mainE1a(%rip)    # 8    *movdi_internal/6   
[length = 8]

Patch that tightens lea constraints in testing:

Index: i386.md
===================================================================
--- i386.md     (revision 220092)
+++ i386.md     (working copy)
@@ -2208,7 +2208,8 @@
              (const_string "ssecvt")
            (eq_attr "alternative" "21,22,23,24")
              (const_string "mskmov")
-           (match_operand 1 "pic_32bit_operand")
+           (and (match_operand 0 "register_operand")
+                (match_operand 1 "pic_32bit_operand"))
              (const_string "lea")
           ]
           (const_string "imov")))
@@ -2361,7 +2362,8 @@
              (const_string "ssemov")
            (eq_attr "alternative" "13,14")
              (const_string "mskmov")
-           (match_operand 1 "pic_32bit_operand")
+           (and (match_operand 0 "register_operand")
+                (match_operand 1 "pic_32bit_operand"))
              (const_string "lea")
           ]
           (const_string "imov")))

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