Commit e4c07ade by Richard Sandiford Committed by Richard Sandiford

re PR target/50579 (gcc.target/mips/20020620-1.c FAILs on IRIX 6.5)

gcc/testsuite/
	PR target/50579
	* gcc.target/mips/mips.exp (mips_long32_abi_p, mips_long64_abi_p):
	New procedures.
	(mips-dg-options): Force an ABI option if the current ABI is
	incompatible with the required -mlong setting.  Likewise force
	a long setting if the current one is incompatible with the
	chosen ABI.  Keep abi_test_option_p, abi and eabi_p updated
	throughout procedure.
	* gcc.target/mips/abi-o64-long64.c: Require -mno-abicalls
	instead of addressing=absolute.

From-SVN: r179433
parent d9b59f56
2011-10-02 Richard Sandiford <rdsandiford@googlemail.com>
PR target/50579
* gcc.target/mips/mips.exp (mips_long32_abi_p, mips_long64_abi_p):
New procedures.
(mips-dg-options): Force an ABI option if the current ABI is
incompatible with the required -mlong setting. Likewise force
a long setting if the current one is incompatible with the
chosen ABI. Keep abi_test_option_p, abi and eabi_p updated
throughout procedure.
* gcc.target/mips/abi-o64-long64.c: Require -mno-abicalls
instead of addressing=absolute.
2011-10-02 Richard Sandiford <rdsandiford@googlemail.com>
* gcc.target/mips/stack-1.c: New test.
2011-10-02 Richard Sandiford <rdsandiford@googlemail.com>
......
/* { dg-options "-mabi=o64 -mlong64 addressing=absolute -O2" } */
/* { dg-options "-mabi=o64 -mlong64 -mno-abicalls -O2" } */
#include "abi-main.h"
......@@ -588,6 +588,30 @@ proc mips_64bit_abi_p { option } {
return 0
}
# Return true if the given abi-group option implicitly requires -mlong32.
# o64 requires this for -mabicalls, but not otherwise; pick the conservative
# case for simplicity.
proc mips_long32_abi_p { option } {
switch -glob -- $option {
-mabi=o64 -
-mabi=n32 -
-mabi=32 {
return 1
}
}
return 0
}
# Return true if the given abi-group option implicitly requires -mlong64.
proc mips_long64_abi_p { option } {
switch -glob -- $option {
-mabi=64 {
return 1
}
}
return 0
}
# Check whether the current target supports all the options that the
# current test requires. Return "" if so, otherwise return one of
# the incompatible options. UPSTATUS describes the option status.
......@@ -1029,24 +1053,41 @@ proc mips-dg-options { args } {
# -mips16 -mhard-float requires o32 or o64.
# -mips16 PIC requires o32 or o64.
set force_abi 1
} elseif { [mips_have_test_option_p options "-mlong32"]
&& [mips_long64_abi_p $abi] } {
set force_abi 1
} elseif { [mips_have_test_option_p options "-mlong64"]
&& [mips_long32_abi_p $abi] } {
set force_abi 1
} else {
set force_abi 0
}
if { $gp_size == 32 } {
if { $force_abi || [mips_64bit_abi_p $abi] } {
mips_make_test_option options "-mabi=32"
if { [mips_have_test_option_p options "-mlong64"] } {
mips_make_test_option options "-mabi=eabi"
mips_make_test_option options "-mgp32"
} else {
mips_make_test_option options "-mabi=32"
}
}
} else {
if { $force_abi || [mips_32bit_abi_p $abi] } {
# All configurations should have an assembler that
# supports o64, since it requires the same BFD target
# vector as o32. In contrast, many assembler
# configurations do not have n32 or n64 support.
mips_make_test_option options "-mabi=o64"
if { [mips_have_test_option_p options "-mlong64"] } {
mips_make_test_option options "-mabi=eabi"
mips_make_test_option options "-mgp64"
} else {
# All configurations should have an assembler that
# supports o64, since it requires the same BFD target
# vector as o32. In contrast, many assembler
# configurations do not have n32 or n64 support.
mips_make_test_option options "-mabi=o64"
}
}
}
unset abi
unset eabi_p
set abi_test_option_p [mips_test_option_p options abi]
set abi [mips_option options abi]
set eabi_p [mips_same_option_p $abi "-mabi=eabi"]
}
# Handle dependencies between the abi options and the post-abi options.
......@@ -1070,8 +1111,11 @@ proc mips-dg-options { args } {
mips_make_test_option options "-mno-mips16"
}
}
unset abi
unset eabi_p
if { [mips_long32_abi_p $abi] } {
mips_make_test_option options "-mlong32"
} elseif { [mips_long64_abi_p $abi] } {
mips_make_test_option options "-mlong64"
}
}
# Handle dependencies between the arch option and the post-arch options.
......
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