https://gcc.gnu.org/g:2bc0b96cc1c36fe8f99402fe91f80bfeac02ff71

commit 2bc0b96cc1c36fe8f99402fe91f80bfeac02ff71
Author: Thomas Schwinge <tschwi...@baylibre.com>
Date:   Fri Feb 21 19:42:28 2025 +0100

    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.
    
    (cherry picked from commit f553b1aaa2b1b925c918e5dcf966290b045321c2)

Diff:
---
 gcc/testsuite/ChangeLog.omp           |  7 +++++++
 gcc/testsuite/lib/gcc-dg.exp          | 16 ++++++++++++++++
 gcc/testsuite/lib/target-supports.exp | 20 ++------------------
 3 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/gcc/testsuite/ChangeLog.omp b/gcc/testsuite/ChangeLog.omp
index 230ec62f80ee..d416d476a6d3 100644
--- a/gcc/testsuite/ChangeLog.omp
+++ b/gcc/testsuite/ChangeLog.omp
@@ -3,6 +3,13 @@
        Backported from trunk:
        2025-02-22  Thomas Schwinge  <tschwi...@baylibre.com>
 
+       * 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.
+
+       Backported from trunk:
+       2025-02-22  Thomas Schwinge  <tschwi...@baylibre.com>
+
        * gcc.target/bpf/diag-alloca-1.c: Adjust 'dg-message'.
        * gcc.target/bpf/diag-alloca-2.c: Likewise.
        * gcc.target/nvptx/alloca-1-O0-sm_30.c: Likewise.
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index 42c2013d4216..ffb596d80b88 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -1451,3 +1451,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 21a9861e392e..803a26b334cf 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -651,15 +651,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
        }
@@ -1006,15 +998,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',

Reply via email to