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',