Commit e3936f47 by Jakub Jelinek Committed by Jakub Jelinek

re PR target/56228 (Indirect call fails to assemble)

	PR target/56228
	* config/rs6000/rs6000.md (ptrm): New mode attr.
	(call_indirect_aix<ptrsize>, call_indirect_aix<ptrsize>_nor11,
	call_value_indirect_aix<pttrsize>,
	call_value_indirect_aix<pttrsize>_nor11): Use <ptrm> instead of
	m in constraints.

	* gcc.dg/pr56228.c: New test.

From-SVN: r195840
parent d96d674b
2013-02-07 Jakub Jelinek <jakub@redhat.com>
PR target/56228
* config/rs6000/rs6000.md (ptrm): New mode attr.
(call_indirect_aix<ptrsize>, call_indirect_aix<ptrsize>_nor11,
call_value_indirect_aix<pttrsize>,
call_value_indirect_aix<pttrsize>_nor11): Use <ptrm> instead of
m in constraints.
2013-02-07 Michael Haubenwallner <michael.haubenwallner@salomon.at>
* collect2.c (main): Set aix64_flag for -G and -bsvr4 too, disable
......
......@@ -292,6 +292,9 @@
(define_mode_attr ptrload [(SI "lwz")
(DI "ld")])
(define_mode_attr ptrm [(SI "m")
(DI "Y")])
(define_mode_attr rreg [(SF "f")
(DF "ws")
(V4SF "wf")
......@@ -10662,8 +10665,8 @@
(define_insn "call_indirect_aix<ptrsize>"
[(call (mem:SI (match_operand:P 0 "register_operand" "c,*l"))
(match_operand 1 "" "g,g"))
(use (match_operand:P 2 "memory_operand" "m,m"))
(set (reg:P TOC_REGNUM) (match_operand:P 3 "memory_operand" "m,m"))
(use (match_operand:P 2 "memory_operand" "<ptrm>,<ptrm>"))
(set (reg:P TOC_REGNUM) (match_operand:P 3 "memory_operand" "<ptrm>,<ptrm>"))
(use (reg:P STATIC_CHAIN_REGNUM))
(clobber (reg:P LR_REGNO))]
"DEFAULT_ABI == ABI_AIX && TARGET_POINTERS_TO_NESTED_FUNCTIONS"
......@@ -10680,8 +10683,8 @@
(define_insn "call_indirect_aix<ptrsize>_nor11"
[(call (mem:SI (match_operand:P 0 "register_operand" "c,*l"))
(match_operand 1 "" "g,g"))
(use (match_operand:P 2 "memory_operand" "m,m"))
(set (reg:P TOC_REGNUM) (match_operand:P 3 "memory_operand" "m,m"))
(use (match_operand:P 2 "memory_operand" "<ptrm>,<ptrm>"))
(set (reg:P TOC_REGNUM) (match_operand:P 3 "memory_operand" "<ptrm>,<ptrm>"))
(clobber (reg:P LR_REGNO))]
"DEFAULT_ABI == ABI_AIX && !TARGET_POINTERS_TO_NESTED_FUNCTIONS"
"<ptrload> 2,%2\;b%T0l\;<ptrload> 2,%3"
......@@ -10698,8 +10701,8 @@
[(set (match_operand 0 "" "")
(call (mem:SI (match_operand:P 1 "register_operand" "c,*l"))
(match_operand 2 "" "g,g")))
(use (match_operand:P 3 "memory_operand" "m,m"))
(set (reg:P TOC_REGNUM) (match_operand:P 4 "memory_operand" "m,m"))
(use (match_operand:P 3 "memory_operand" "<ptrm>,<ptrm>"))
(set (reg:P TOC_REGNUM) (match_operand:P 4 "memory_operand" "<ptrm>,<ptrm>"))
(use (reg:P STATIC_CHAIN_REGNUM))
(clobber (reg:P LR_REGNO))]
"DEFAULT_ABI == ABI_AIX && TARGET_POINTERS_TO_NESTED_FUNCTIONS"
......@@ -10718,8 +10721,8 @@
[(set (match_operand 0 "" "")
(call (mem:SI (match_operand:P 1 "register_operand" "c,*l"))
(match_operand 2 "" "g,g")))
(use (match_operand:P 3 "memory_operand" "m,m"))
(set (reg:P TOC_REGNUM) (match_operand:P 4 "memory_operand" "m,m"))
(use (match_operand:P 3 "memory_operand" "<ptrm>,<ptrm>"))
(set (reg:P TOC_REGNUM) (match_operand:P 4 "memory_operand" "<ptrm>,<ptrm>"))
(clobber (reg:P LR_REGNO))]
"DEFAULT_ABI == ABI_AIX && !TARGET_POINTERS_TO_NESTED_FUNCTIONS"
"<ptrload> 2,%3\;b%T1l\;<ptrload> 2,%4"
......
2013-02-07 Jakub Jelinek <jakub@redhat.com>
PR target/56228
* gcc.dg/pr56228.c: New test.
2013-02-07 Alan Modra <amodra@gmail.com>
PR target/54009
......
/* PR target/56228 */
/* { dg-do assemble } */
/* { dg-options "-O2" } */
short a[14] = { 1, 2 };
short b[15] = { 3, 4 };
int
foo ()
{
void (*fna) (void) = (void (*) (void)) a;
void (*fnb) (void) = (void (*) (void)) b;
fna ();
fnb ();
return a[1] == b[1];
}
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