Commit 04a63c24 by H.J. Lu Committed by H.J. Lu

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.

From-SVN: r235353
parent 6e07f9aa
2016-04-21 H.J. Lu <hongjiu.lu@intel.com>
PR target/70750
* config/i386/predicates.md (call_insn_operand): Replace
sibcall_memory_operand with memory_operand.
2016-04-21 Patrick Palka <ppalka@gcc.gnu.org>
* tree-vrp.c (register_edge_assert_for_2): Remove redundant
......
......@@ -637,7 +637,7 @@
(op, mode == VOIDmode ? mode : Pmode)")
(match_operand 0 "call_register_no_elim_operand")
(ior (and (not (match_test "TARGET_X32"))
(match_operand 0 "sibcall_memory_operand"))
(match_operand 0 "memory_operand"))
(and (match_test "TARGET_X32 && Pmode == DImode")
(match_operand 0 "GOT_memory_operand")))))
......
2016-04-21 H.J. Lu <hongjiu.lu@intel.com>
PR target/70750
* gcc.target/i386/pr70750-1.c: New test.
* gcc.target/i386/pr70750-2.c: Likewise.
2016-04-21 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/70540
......
/* { dg-do compile { target *-*-linux* } } */
/* { dg-options "-O2" } */
int
f (int (**p) (void))
{
return p[1]();
}
/* { dg-final { scan-assembler "jmp\[ \t\].*\\(%rdi\\)" { target { lp64 } } } } */
/* { dg-final { scan-assembler "jmp\[ \t\]\\*%rax" { target { x32 } } } } */
/* { dg-do compile { target *-*-linux* } } */
/* { dg-options "-O2" } */
int
f (int (**p) (void))
{
return -p[1]();
}
/* { dg-final { scan-assembler "call\[ \t\].*\\(%rdi\\)" { target { lp64 } } } } */
/* { dg-final { scan-assembler "call\[ \t\]\\*%rax" { target { x32 } } } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment