aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@baylibre.com>2025-02-21 19:42:28 +0100
committerThomas Schwinge <tschwinge@baylibre.com>2025-02-22 22:37:50 +0100
commitf553b1aaa2b1b925c918e5dcf966290b045321c2 (patch)
treecadee0bf0414577ddd149c9b0de3aed05c245182 /gcc
parent2abc942fd486be217de1ba0282a3dc8e21d599aa (diff)
downloadgcc-f553b1aaa2b1b925c918e5dcf966290b045321c2.zip
gcc-f553b1aaa2b1b925c918e5dcf966290b045321c2.tar.gz
gcc-f553b1aaa2b1b925c918e5dcf966290b045321c2.tar.bz2
Refactor duplicated code into 'gcc/testsuite/lib/gcc-dg.exp:find-dg-do-what'
No change in behavior intended. gcc/testsuite/ * lib/gcc-dg.exp (proc find-dg-do-what): New. * lib/target-supports.exp (check_effective_target_stack_size) (check_effective_target_alloca): Use it.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/lib/gcc-dg.exp16
-rw-r--r--gcc/testsuite/lib/target-supports.exp20
2 files changed, 18 insertions, 18 deletions
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index 70be7a8..6e9a7b2 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -1369,3 +1369,19 @@ proc gcc-transform-out-of-tree { args } {
set additional_prunes ""
set dg_runtest_extra_prunes ""
+
+# Find the 'dg-do-what' variable living inside DejaGnu's 'dg-test' procedure,
+# as a local variable. We start looking at the second-outer frame: this way,
+# the caller of 'find-dg-do-what' may maintain a local 'dg-do-what' variable
+# without interfering with this search.
+proc find-dg-do-what { } {
+ set lookup_level 2
+ while true {
+ upvar $lookup_level dg-do-what dg-do-what
+ if { [info exists dg-do-what] } {
+ verbose "find-dg-do-what: found 'dg-do-what' at level $lookup_level: ${dg-do-what}" 2
+ return ${dg-do-what}
+ }
+ incr lookup_level
+ }
+}
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 7eab76a..7b3172d 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -652,15 +652,7 @@ proc check_effective_target_trampolines { } {
proc check_effective_target_stack_size { } {
# For nvptx target, stack size limits are relevant for execution only.
if { [istarget nvptx-*-*] } {
- # Find 'dg-do-what' in an outer frame.
- set level 1
- while true {
- upvar $level dg-do-what dg-do-what
- if [info exists dg-do-what] then break
- incr level
- }
- verbose "check_effective_target_stack_size: found dg-do-what at level $level" 2
-
+ set dg-do-what [find-dg-do-what]
if { ![string equal [lindex ${dg-do-what} 0] run] } {
return 0
}
@@ -1021,15 +1013,7 @@ proc check_effective_target_alloca {} {
return 0
}
- # Find 'dg-do-what' in an outer frame.
- set level 1
- while true {
- upvar $level dg-do-what dg-do-what
- if [info exists dg-do-what] then break
- incr level
- }
- verbose "check_effective_target_alloca: found dg-do-what at level $level" 2
-
+ set dg-do-what [find-dg-do-what]
if { [string equal [lindex ${dg-do-what} 0] run] } {
# For 'dg-do run', it additionally depends on runtime support.
# (If not supported, we don't try to demote 'run' to 'link',