+2012-09-07 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/aix43.h (RS6000_CALL_GLUE): Delete.
+ * config/rs6000/aix51.h (RS6000_CALL_GLUE): Delete.
+ * config/rs6000/aix52.h (RS6000_CALL_GLUE): Delete.
+ * config/rs6000/aix53.h (RS6000_CALL_GLUE): Delete.
+ * config/rs6000/aix61.h (RS6000_CALL_GLUE): Delete.
+ * config/rs6000/freebsd64.h (RS6000_CALL_GLUE): Delete.
+ * config/rs6000/linux64.h (RS6000_CALL_GLUE): Delete.
+ * config/rs6000/rs6000.c (print_operand) ['.']: Delete.
+ * config/rs6000/rs6000.h (RS6000_CALL_GLUE): Delete.
+ * config/rs6000/rs6000.md (tls_gd_aix<TLSmode:tls_abi_suffix>):
+ Replace %. with nop.
+ (tls_gd_call_aix<TLSmode:tls_abi_suffix>): Ditto.
+ (tls_ld_aix<TLSmode:tls_abi_suffix>): Ditto.
+ (tls_ld_call_aix<TLSmode:tls_abi_suffix>): Ditto.
+ (call_nonlocal_aix32): Ditto.
+ (call_nonlocal_aix64): Ditto.
+ (call_value_nonlocal_aix32): Ditto.
+ (call_value_nonlocal_aix64): Ditto.
+
2012-06-04 Andi Kleen <ak@linux.intel.com>
* doc/invoke.texi (-ffat-lto-objects): Clarify that gcc-ar
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "long int"
-/* AIX 4 uses PowerPC nop (ori 0,0,0) instruction as call glue for PowerPC
- and "cror 31,31,31" for POWER architecture. */
-
-#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE "nop"
-
/* AIX 4.2 and above provides initialization and finalization function
support from linker command line. */
#undef HAS_INIT_SECTION
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE (!TARGET_64BIT ? 16 : 32)
-/* AIX V5 uses PowerPC nop (ori 0,0,0) instruction as call glue for PowerPC
- and "cror 31,31,31" for POWER architecture. */
-
-#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE "nop"
-
/* AIX 4.2 and above provides initialization and finalization function
support from linker command line. */
#undef HAS_INIT_SECTION
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE (!TARGET_64BIT ? 16 : 32)
-/* AIX V5 uses PowerPC nop (ori 0,0,0) instruction as call glue for PowerPC
- and "cror 31,31,31" for POWER architecture. */
-
-#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE "nop"
-
/* AIX 4.2 and above provides initialization and finalization function
support from linker command line. */
#undef HAS_INIT_SECTION
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE (!TARGET_64BIT ? 16 : 32)
-/* AIX V5 uses PowerPC nop (ori 0,0,0) instruction as call glue for PowerPC
- and "cror 31,31,31" for POWER architecture. */
-
-#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE "nop"
-
/* AIX 4.2 and above provides initialization and finalization function
support from linker command line. */
#undef HAS_INIT_SECTION
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE (!TARGET_64BIT ? 16 : 32)
-/* AIX V5 uses PowerPC nop (ori 0,0,0) instruction as call glue for PowerPC
- and "cror 31,31,31" for POWER architecture. */
-
-#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE "nop"
-
/* AIX 4.2 and above provides initialization and finalization function
support from linker command line. */
#undef HAS_INIT_SECTION
#undef ASM_APP_OFF
#define ASM_APP_OFF "#NO_APP\n"
-/* PowerPC no-op instruction. */
-#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE (TARGET_64BIT ? "nop" : "cror 31,31,31")
-
/* Function profiling bits */
#undef RS6000_MCOUNT
#define RS6000_MCOUNT "_mcount"
#undef ASM_APP_OFF
#define ASM_APP_OFF "#NO_APP\n"
-/* PowerPC no-op instruction. */
-#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE (TARGET_64BIT ? "nop" : "cror 31,31,31")
-
#undef RS6000_MCOUNT
#define RS6000_MCOUNT "_mcount"
switch (code)
{
- case '.':
- /* Write out an instruction after the call which may be replaced
- with glue code by the loader. This depends on the AIX version. */
- asm_fprintf (file, RS6000_CALL_GLUE);
- return;
-
/* %a is output_address. */
case 'A':
{"vs56", 101},{"vs57", 102},{"vs58", 103},{"vs59", 104}, \
{"vs60", 105},{"vs61", 106},{"vs62", 107},{"vs63", 108} }
-/* Text to write out after a CALL that may be replaced by glue code by
- the loader. This depends on the AIX version. */
-#define RS6000_CALL_GLUE "cror 31,31,31"
-
/* This is how to output an element of a case-vector that is relative. */
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
"HAVE_AS_TLS && DEFAULT_ABI == ABI_AIX"
{
if (TARGET_CMODEL != CMODEL_SMALL)
- return "addis %0,%1,%2@got@tlsgd@ha\;addi %0,%0,%2@got@tlsgd@l\;bl %z3\;%.";
+ return "addis %0,%1,%2@got@tlsgd@ha\;addi %0,%0,%2@got@tlsgd@l\;"
+ "bl %z3\;nop";
else
- return "addi %0,%1,%2@got@tlsgd\;bl %z3\;%.";
+ return "addi %0,%1,%2@got@tlsgd\;bl %z3\;nop";
}
"&& TARGET_TLS_MARKERS"
[(set (match_dup 0)
UNSPEC_TLSGD)
(clobber (reg:SI LR_REGNO))]
"HAVE_AS_TLS && DEFAULT_ABI == ABI_AIX && TARGET_TLS_MARKERS"
- "bl %z1(%3@tlsgd)\;%."
+ "bl %z1(%3@tlsgd)\;nop"
[(set_attr "type" "branch")
(set_attr "length" "8")])
"HAVE_AS_TLS && DEFAULT_ABI == ABI_AIX"
{
if (TARGET_CMODEL != CMODEL_SMALL)
- return "addis %0,%1,%&@got@tlsld@ha\;addi %0,%0,%&@got@tlsld@l\;bl %z2\;%.";
+ return "addis %0,%1,%&@got@tlsld@ha\;addi %0,%0,%&@got@tlsld@l\;"
+ "bl %z2\;nop";
else
- return "addi %0,%1,%&@got@tlsld\;bl %z2\;%.";
+ return "addi %0,%1,%&@got@tlsld\;bl %z2\;nop";
}
"&& TARGET_TLS_MARKERS"
[(set (match_dup 0)
(unspec:TLSmode [(const_int 0)] UNSPEC_TLSLD)
(clobber (reg:SI LR_REGNO))]
"HAVE_AS_TLS && DEFAULT_ABI == ABI_AIX && TARGET_TLS_MARKERS"
- "bl %z1(%&@tlsld)\;%."
+ "bl %z1(%&@tlsld)\;nop"
[(set_attr "type" "branch")
(set_attr "length" "8")])
"TARGET_32BIT
&& DEFAULT_ABI == ABI_AIX
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
- "bl %z0\;%."
+ "bl %z0\;nop"
[(set_attr "type" "branch")
(set_attr "length" "8")])
"TARGET_64BIT
&& DEFAULT_ABI == ABI_AIX
&& (INTVAL (operands[2]) & CALL_LONG) == 0"
- "bl %z0\;%."
+ "bl %z0\;nop"
[(set_attr "type" "branch")
(set_attr "length" "8")])
"TARGET_32BIT
&& DEFAULT_ABI == ABI_AIX
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
- "bl %z1\;%."
+ "bl %z1\;nop"
[(set_attr "type" "branch")
(set_attr "length" "8")])
"TARGET_64BIT
&& DEFAULT_ABI == ABI_AIX
&& (INTVAL (operands[3]) & CALL_LONG) == 0"
- "bl %z1\;%."
+ "bl %z1\;nop"
[(set_attr "type" "branch")
(set_attr "length" "8")])