[PATCH 2/2] S/390: Implement "target" attribute.

gcc/ChangeLog

	* config/s390/s390.c (s390_asm_file_start): Implement hook function to
	emit .machine and .machinemode to the top of the assembler file.
	(TARGET_ASM_FILE_START): Provide target hook.
	(s390_asm_output_machine_for_arch): Protect with
	HAVE_AS_MACHINE_MACHINEMODE instead of S390_USE_TARGET_ATTRIBUTE.

gcc/testsuite/ChangeLog

	* gcc.target/s390/asm-machine-1.c: Updated.
	* gcc.target/s390/asm-machine-2.c: Updated.
	* gcc.target/s390/asm-machine-3.c: Updated.
	* gcc.target/s390/asm-machine-4.c: Updated.

From-SVN: r231272
This commit is contained in:
Dominik Vogt 2015-12-04 14:33:01 +00:00 committed by Andreas Krebbel
parent ec47b0863a
commit 7763d97294
7 changed files with 53 additions and 12 deletions

View File

@ -1,3 +1,11 @@
2015-12-04 Dominik Vogt <vogt@linux.vnet.ibm.com>
* config/s390/s390.c (s390_asm_file_start): Implement hook function to
emit .machine and .machinemode to the top of the assembler file.
(TARGET_ASM_FILE_START): Provide target hook.
(s390_asm_output_machine_for_arch): Protect with
HAVE_AS_MACHINE_MACHINEMODE instead of S390_USE_TARGET_ATTRIBUTE.
2015-12-04 Dominik Vogt <vogt@linux.vnet.ibm.com>
* config/s390/s390.opt (s390_arch_string): Remove.

View File

@ -6738,7 +6738,7 @@ s390_function_num_hotpatch_hw (tree decl,
/* Write the current .machine and .machinemode specification to the assembler
file. */
#if S390_USE_TARGET_ATTRIBUTE
#ifdef HAVE_AS_MACHINE_MACHINEMODE
static void
s390_asm_output_machine_for_arch (FILE *asm_out_file)
{
@ -14346,6 +14346,15 @@ s390_vector_alignment (const_tree type)
return MIN (64, tree_to_shwi (TYPE_SIZE (type)));
}
#ifdef HAVE_AS_MACHINE_MACHINEMODE
/* Implement TARGET_ASM_FILE_START. */
static void
s390_asm_file_start (void)
{
s390_asm_output_machine_for_arch (asm_out_file);
}
#endif
/* Implement TARGET_ASM_FILE_END. */
static void
s390_asm_file_end (void)
@ -14645,6 +14654,11 @@ s390_invalid_binary_op (int op ATTRIBUTE_UNUSED, const_tree type1, const_tree ty
#undef TARGET_INVALID_BINARY_OP
#define TARGET_INVALID_BINARY_OP s390_invalid_binary_op
#ifdef HAVE_AS_MACHINE_MACHINEMODE
#undef TARGET_ASM_FILE_START
#define TARGET_ASM_FILE_START s390_asm_file_start
#endif
#undef TARGET_ASM_FILE_END
#define TARGET_ASM_FILE_END s390_asm_file_end

View File

@ -1,3 +1,10 @@
2015-12-04 Dominik Vogt <vogt@linux.vnet.ibm.com>
* gcc.target/s390/asm-machine-1.c: Updated.
* gcc.target/s390/asm-machine-2.c: Updated.
* gcc.target/s390/asm-machine-3.c: Updated.
* gcc.target/s390/asm-machine-4.c: Updated.
2015-12-04 Dominik Vogt <vogt@linux.vnet.ibm.com>
* gcc.target/s390/asm-machine-1.c: New test.

View File

@ -3,7 +3,10 @@
/* { dg-require-effective-target target_attribute } */
/* { dg-options "-march=z13 -mzarch" } */
/* { dg-final { scan-assembler-times "\t\.machine \"z13\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 1 } } */
void foo(void) { }
/* { dg-final { scan-assembler-not "\t\.machine " } } */
/* { dg-final { scan-assembler-not "\t\.machinemode " } } */
/* { dg-final { scan-assembler-times "\t\.machine " 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode " 1 } } */

View File

@ -3,6 +3,9 @@
/* { dg-require-effective-target target_attribute } */
/* { dg-options "-march=z13 -mzarch" } */
/* { dg-final { scan-assembler-times "\t\.machine \"z13\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 2 } } */
void foo(void) { }
__attribute__ ((target("arch=z10")))
@ -12,8 +15,8 @@ void bar(void) { }
/* { dg-final { scan-assembler-times "\t\.machine pop" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machine \"z10\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode push" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 2 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode pop" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machine " 3 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode " 3 } } */
/* { dg-final { scan-assembler-times "\t\.machine " 4 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode " 4 } } */

View File

@ -3,6 +3,9 @@
/* { dg-require-effective-target target_attribute } */
/* { dg-options "-march=z13 -mzarch" } */
/* { dg-final { scan-assembler-times "\t\.machine \"z13\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 2 } } */
void foo(void) { }
#pragma GCC target("arch=z10")
@ -12,8 +15,8 @@ void bar(void) { }
/* { dg-final { scan-assembler-times "\t\.machine pop" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machine \"z10\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode push" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 2 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode pop" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machine " 3 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode " 3 } } */
/* { dg-final { scan-assembler-times "\t\.machine " 4 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode " 4 } } */

View File

@ -3,6 +3,9 @@
/* { dg-require-effective-target target_attribute } */
/* { dg-options "-march=z13 -mzarch" } */
/* { dg-final { scan-assembler-times "\t\.machine \"z13\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 2 } } */
void foo(void) { }
#pragma GCC target("arch=z196")
@ -13,8 +16,8 @@ void bar(void) { }
/* { dg-final { scan-assembler-times "\t\.machine pop" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machine \"z10\"" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode push" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode zarch" 2 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode pop" 1 } } */
/* { dg-final { scan-assembler-times "\t\.machine " 3 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode " 3 } } */
/* { dg-final { scan-assembler-times "\t\.machine " 4 } } */
/* { dg-final { scan-assembler-times "\t\.machinemode " 4 } } */