On Fri, 2021-06-25 at 01:02 +0800, Xi Ruoyao wrote:
> On Thu, 2021-06-24 at 10:48 -0600, Jeff Law wrote:
> > I'd like to know a bit more here. mips.exp shouldn't care about the
> > options passed to the compiler and to the best of my knowledge
> > patch itself is wrong, I question if it's necessary and whether or
> > not
> > your just papering over some other issue.
>
> There is some logic processing options in mips.exp. Some options are
> overrided for multilib. It seems the mips.exp was originally designed
> as:
>
> * MIPS options should go in dg-options
> * Other options should go in dg-additional-options
>
> In d2148424165 marxin merged some dg-additional-options into dg-
> options,
> exploited the problem.
>
> And, the "origin" convention seems already broken: there is something
> like -funroll-loops which is not a MIPS option, but accepted by
> mips.exp
> in dg-options.
>
> Possiblities are:
>
> (1) this patch
> (2) make mips.exp accept -fno-inline as "if it is a MIPS option"
> (3) refactor mips.exp to pass everything itself doesn't know directly
> to gcc
Attached a diff for mips.exp trying to make it pass everything in dg-
options which is not known by itself directly to the compiler.
The "smallest fix" is simply adding -fno-inline into mips.exp. However
I don't like it because I agree with you that mips.exp shouldn't care
about dg-options, at least don't do it too much.
--
Xi Ruoyao <[email protected]>
School of Aerospace Science and Technology, Xidian University
diff --git a/gcc/testsuite/gcc.target/mips/mips.exp b/gcc/testsuite/gcc.target/mips/mips.exp
index 01292316944..3ffcab551be 100644
--- a/gcc/testsuite/gcc.target/mips/mips.exp
+++ b/gcc/testsuite/gcc.target/mips/mips.exp
@@ -247,7 +247,6 @@ set mips_option_groups {
mips3d "-mips3d|-mno-mips3d"
pic "-f(no-|)(pic|PIC)"
cb "-mcompact-branches=.*"
- profiling "-pg"
small-data "-G[0-9]+"
warnings "-w"
dump "-fdump-.*"
@@ -315,30 +314,6 @@ foreach option {
lappend mips_option_groups $option "-m$option=.*"
}
-# Add -ffoo/-fno-foo options to mips_option_groups.
-foreach option {
- common
- delayed-branch
- expensive-optimizations
- fast-math
- fat-lto-objects
- finite-math-only
- fixed-hi
- fixed-lo
- lax-vector-conversions
- omit-frame-pointer
- optimize-sibling-calls
- peephole2
- schedule-insns2
- split-wide-types
- tree-vectorize
- unroll-all-loops
- unroll-loops
- ipa-ra
-} {
- lappend mips_option_groups $option "-f(no-|)$option"
-}
-
# A list of option groups that have an impact on the ABI.
set mips_abi_groups {
abi
@@ -571,6 +546,10 @@ proc mips_original_option { group } {
proc mips_test_option_p { upstatus group } {
upvar $upstatus status
+ if {[ string equal $group "" ]} {
+ return 0
+ }
+
return $status(test_option_p,$group)
}
@@ -620,7 +599,12 @@ proc mips_have_test_option_p { upstatus option } {
proc mips_make_test_option { upstatus option args } {
upvar $upstatus status
- set group [mips_option_group $option]
+ set group [mips_option_maybe_group $option]
+ if { [string equal $group ""] } {
+ lappend status(raw_option) $option
+ return
+ }
+
if { ![mips_test_option_p status $group] } {
set status(option,$group) $option
set status(test_option_p,$group) 1
@@ -741,6 +725,7 @@ proc mips-dg-init {} {
# Start with a fresh option status.
array unset mips_base_options
+ set mips_base_options(raw_option) {}
foreach { group regexp } $mips_option_groups {
set mips_base_options(option,$group) ""
set mips_base_options(explicit_p,$group) 0
@@ -1016,7 +1001,7 @@ proc mips-dg-options { args } {
# Record the options that this test explicitly needs.
foreach option [lindex $args 1] {
set all_but_p [regexp {^\((.*)\)$} $option dummy option]
- set group [mips_option_group $option]
+ set group [mips_option_maybe_group $option]
if { [mips_test_option_p options $group] } {
set old [mips_option options $group]
error "Inconsistent $group option: $old vs. $option"
@@ -1025,10 +1010,6 @@ proc mips-dg-options { args } {
}
}
- # Handle dependencies between the test options and the optimization ones.
- mips_option_dependency options "-fno-unroll-loops" "-fno-unroll-all-loops"
- mips_option_dependency options "-pg" "-fno-omit-frame-pointer"
-
# Handle dependencies between options on the left of the
# dependency diagram.
mips_option_dependency options "-mips16" "-mno-micromips"
@@ -1505,6 +1486,10 @@ proc mips-dg-options { args } {
}
}
+ foreach { opt } $options(raw_option) {
+ append extra_tool_flags " " $opt
+ }
+
# If the test is marked as requiring standard libraries check
# that the sysroot has support for the current set of test options.
if { [mips_have_test_option_p options "REQUIRES_STDLIB"] } {