load_gcc_lib target-libpath.exp
load_gcc_lib wrapper.exp
+proc check_effective_target_gccbug { } {
+ global has_gccbug
+ return $has_gccbug
+}
+
# Return 1 if the target matches the effective target 'arg', 0 otherwise.
# This can be used with any check_* proc that takes no argument and
# returns only 1 or 0. It could be used with check_* procs that take
proc run-many-tests { testcases extra_flags } {
global compiler_vendor
+ global has_gccbug
global env
switch $compiler_vendor {
"clang" {
foreach opt $optimizations {
foreach abi $abis {
set options [concat $common $opt $abi]
- verbose "Testing $testname, $options" 1
- dg-test $test $options ""
+ set has_gccbug false;
+ if { [string match $compiler_vendor "gnu"] \
+ && [string match "*MSABI*" $abi] \
+ && ( ( [string match "*DGTEST=57 *" $common] \
+ && [string match "*call.c*" $testname] ) \
+ || ( [string match "*DGTEST=54 *" $common] \
+ && [string match "*callback*" $testname] ) \
+ || [string match "*DGTEST=55 *" $common] \
+ || [string match "*DGTEST=56 *" $common] ) } then {
+ if [libffi_feature_test "#if (__GNUC__ < 9) || ((__GNUC__ == 9) && (__GNUC_MINOR__ < 3))"] {
+ set has_gccbug true;
+ }
+ }
+ verbose "Testing $testname, $options" 1
+ verbose "has_gccbug = $has_gccbug" 1
+ dg-test $test $options ""
}
}
}
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
along with this program. If not, see <http://www.gnu.org/licenses/>.
**/
-/* { dg-do run } */
+/* { dg-do run { xfail gccbug } } */
#include <stdio.h>
#include <stdlib.h>
}
fprintf(out,"->{%g}\n",Fr.x);
fflush(out);
-#endif
+#endif
#if (!defined(DGTEST)) || DGTEST == 56
Dr = D_fDd(f1,D2,d3);
fprintf(out,"->{%g}\n",Dr.x);
}
fprintf(out,"->{%g}\n",Dr.x);
fflush(out);
-#endif
+#endif
#if (!defined(DGTEST)) || DGTEST == 57
Dr = D_Dfd(D1,f2,d3);
fprintf(out,"->{%g}\n",Dr.x);
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* { dg-do run } */
+/* { dg-do run { xfail gccbug } } */
#include <stdio.h>
#include <stdlib.h>