This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/70750] [6/7 Regression] Load and call no longer combined for indirect calls on x86
- From: "hjl at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 21 Apr 2016 22:02:06 +0000
- Subject: [Bug target/70750] [6/7 Regression] Load and call no longer combined for indirect calls on x86
- Auto-submitted: auto-generated
- References: <bug-70750-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70750
--- Comment #5 from hjl at gcc dot gnu.org <hjl at gcc dot gnu.org> ---
Author: hjl
Date: Thu Apr 21 22:01:34 2016
New Revision: 235353
URL: https://gcc.gnu.org/viewcvs?rev=235353&root=gcc&view=rev
Log:
X86: Fix a typo in call_insn_operand
r231923 has
;; Test for a valid operand for a call instruction.
;; Allow constant call address operands in Pmode only.
(define_special_predicate "call_insn_operand"
(ior (match_test "constant_call_address_operand
(op, mode == VOIDmode ? mode : Pmode)")
(match_operand 0 "call_register_no_elim_operand")
- (and (not (match_test "TARGET_X32"))
- (match_operand 0 "memory_operand"))))
+ (ior (and (not (match_test "TARGET_X32"))
+ (match_operand 0 "sibcall_memory_operand"))
^^^^^^^^^^^^^^^^^^^^^^^ A typo.
+ (and (match_test "TARGET_X32 && Pmode == DImode")
+ (match_operand 0 "GOT_memory_operand")))))
"sibcall_memory_operand" should be "memory_operand".
gcc/
PR target/70750
* config/i386/predicates.md (call_insn_operand): Replace
sibcall_memory_operand with memory_operand.
gcc/testsuite/
PR target/70750
* gcc.target/i386/pr70750-1.c: New test.
* gcc.target/i386/pr70750-2.c: Likewise.
Added:
trunk/gcc/testsuite/gcc.target/i386/pr70750-1.c
trunk/gcc/testsuite/gcc.target/i386/pr70750-2.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/predicates.md
trunk/gcc/testsuite/ChangeLog