On Wed, Mar 09, 2016 at 11:18:28AM +1100, Ben Elliston wrote: > On Tue, Mar 08, 2016 at 02:29:10PM +0100, Dominik Vogt wrote: > > > However, multiple dg-do don't seem to work: > > > > dg-do run { condition } > > dg-do assemble { ! condition } > > There are plenty of examples of this in the testsuite. You may wish to > investigate further: > > $ grep -r dg-do . | awk -F: '{print $1}' | uniq -d > > For example, the top of gcc.target/powerpc/altivec-3.c says: > > /* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */ > /* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */ > > So compile awyas on powerpc-*-*, but only run if the taget has the > right hardware. It should certainly work. If it doesn't, please send > a patch!
The problem is really that if a condition deselects a test (dg-process-target returns 'N'), and an earlier dg-do already selected the test, the first word of $dg-what still gets replaced by the new (deselected) action. E.g. * $dg-what is "compile {} P" at first (default value) * becomes "run S P" after evaluating the selected "dg-do run" * becomes "assemble S P" after ervaluating deselected "dg-do" assemble. The attached patch fixes the problem for me by not changing the action if a deselected dg-do is encountered. Note that my knowledge of Tcl is about zero, so there may be any number of bugs in that patch. Ciao Dominik ^_^ ^_^ -- Dominik Vogt IBM Germany
--- dg.exp.orig 2013-08-03 09:27:13.000000000 +0200 +++ dg.exp 2016-03-09 13:45:41.000000000 +0100 @@ -313,6 +313,7 @@ return } + set doaction [lindex $args 1] set selected [lindex ${do-what} 1] ;# selected? (""/S/N) set expected [lindex ${do-what} 2] ;# expected to pass/fail (P/F) @@ -330,6 +331,8 @@ # are OR'd together). if { $selected != "S" } { set selected "N" + } else { + set doaction [lindex ${do-what} 0] } } "F" { set expected "F" } @@ -355,7 +358,7 @@ error "[lindex $args 0]: syntax error" } } - set do-what [list [lindex $args 1] $selected $expected] + set do-what [list $doaction $selected $expected] } proc dg-error { args } {
_______________________________________________ DejaGnu mailing list DejaGnu@gnu.org https://lists.gnu.org/mailman/listinfo/dejagnu