Commit 7dc5410a by Maciej W. Rozycki Committed by Maciej W. Rozycki

MIPS/GCC/testsuite: Fix data-sym-pool.c for SVR4 model at -O0

With GCC configurations using the SVR4 rather than the PLT dynamic 
executable model and the o32 ABI with the data-sym-pool.c test case code 
like below is produced:

	.file	1 "data-sym-pool.c"
	.section .mdebug.abi32
	.previous
	.nan	legacy
	.module	fp=xx
	.module	nooddspreg
	.abicalls
	.text
	.align	2
	.globl	frob
	.set	mips16
	.set	nomicromips
	.ent	frob
	.type	frob, @function
frob:
	.frame	$17,8,$31		# vars= 0, regs= 1/0, args= 0, gp= 0
	.mask	0x00020000,-4
	.fmask	0x00000000,0
	save	8,$17
	move	$17,$sp
	lw	$2,$L4
	move	$sp,$17
	restore	8,$17
	jr	$31
	.type	__pool_frob_3, @object
__pool_frob_3:
	.align	2
$L3:
	.word	__gnu_local_gp
$L4:
	.word	305419896
	.type	__pend_frob_3, @function
__pend_frob_3:
	.insn
	.end	frob
	.size	frob, .-frob
	.ident	"GCC: (GNU) 8.0.1 20180410 (experimental)"

causing a failure due to the unexpected `__gnu_local_gp' entry in the 
constant pool, even though there is nothing wrong with it as far as the 
annotation being examined is concerned.

Given that the SVR4 vs PLT code model consideration is irrelevant for 
this test case rather than rewriting the regular expression to match 
this variant of code just enforce the PLT model by using the `-mplt' 
option.  It is safe to use this option unconditionally as it is silently 
ignored with configurations that do not support this model, e.g. bare 
metal ELF.

	gcc/testsuite/
	* gcc.target/mips/data-sym-pool.c (dg-options): Add `-mplt'.

From-SVN: r259690
parent 128d29a5
2018-04-26 Maciej W. Rozycki <macro@mips.com>
* gcc.target/mips/data-sym-pool.c (dg-options): Add `-mplt'.
2018-04-26 Eric Botcazou <ebotcazou@adacore.com> 2018-04-26 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/loop_optimization24.adb: New test. * gnat.dg/loop_optimization24.adb: New test.
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-mips16 -mcode-readable=yes" } */ /* { dg-options "-mips16 -mcode-readable=yes -mplt" } */
int int
frob (void) frob (void)
...@@ -20,6 +20,10 @@ $L3: # The label must match. ...@@ -20,6 +20,10 @@ $L3: # The label must match.
__pend_frob_3: # The symbol must match. __pend_frob_3: # The symbol must match.
.insn .insn
that is `__pool_*'/`__pend_*' symbols inserted around a constant pool. */ that is `__pool_*'/`__pend_*' symbols inserted around a constant pool.
This code is built with `-mplt' to prevent the special `__gnu_local_gp'
symbol from being placed in the constant pool at `-O0' for SVR4 code
and consequently interfering with test expectations. */
/* { dg-final { scan-assembler "\tlw\t\\\$\[0-9\]+,(.L(\[0-9\]+))\n.*\t\\.type\t(__pool_frob_\\2), @object\n\\3:\n\t\\.align\t2\n\\1:\n\t\\.word\t305419896\n\t\\.type\t(__pend_frob_\\2), @function\n\\4:\n\t\\.insn\n" } } */ /* { dg-final { scan-assembler "\tlw\t\\\$\[0-9\]+,(.L(\[0-9\]+))\n.*\t\\.type\t(__pool_frob_\\2), @object\n\\3:\n\t\\.align\t2\n\\1:\n\t\\.word\t305419896\n\t\\.type\t(__pend_frob_\\2), @function\n\\4:\n\t\\.insn\n" } } */
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