Hi, This patch moves the one -fsantize=undefined test to a new ubsan test directory, guarded by check_effective_target_fsanitize_undefined.
Another recent change to gdc_include_flags left one variable unused, also noticed that flags was never explicitly returned. Both have been fixed up. Changes tested on x86_64-linux-gnu and committed as obvious to trunk as r269632. -- Iain --- gcc/testsuite/ChangeLog: 2019-03-13 Iain Buclaw <ibuc...@gdcproject.org> * gdc.dg/pr88957.d: Move to gdc.dg/ubsan. * gdc.dg/ubsan/ubsan.exp: New file. * lib/gdc.exp (gdc_include_flags): Remove unused target variable. Explicitly return flags from procedure. ---
diff --git a/gcc/testsuite/gdc.dg/pr88957.d b/gcc/testsuite/gdc.dg/pr88957.d deleted file mode 100644 index e6366d463b2..00000000000 --- a/gcc/testsuite/gdc.dg/pr88957.d +++ /dev/null @@ -1,18 +0,0 @@ -// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88957 -// { dg-do compile } -// { dg-additional-options "-fsanitize=undefined" } - -alias int4 = __vector(int[4]); - -int fn(const int[4] x) -{ - int sum = 0; - foreach (i; x) sum += i; - return sum; -} - -void pr88957() -{ - auto x = fn(int4.init.array); - auto y = fn(int4(2).array); -} diff --git a/gcc/testsuite/gdc.dg/ubsan/pr88957.d b/gcc/testsuite/gdc.dg/ubsan/pr88957.d new file mode 100644 index 00000000000..e6366d463b2 --- /dev/null +++ b/gcc/testsuite/gdc.dg/ubsan/pr88957.d @@ -0,0 +1,18 @@ +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88957 +// { dg-do compile } +// { dg-additional-options "-fsanitize=undefined" } + +alias int4 = __vector(int[4]); + +int fn(const int[4] x) +{ + int sum = 0; + foreach (i; x) sum += i; + return sum; +} + +void pr88957() +{ + auto x = fn(int4.init.array); + auto y = fn(int4(2).array); +} diff --git a/gcc/testsuite/gdc.dg/ubsan/ubsan.exp b/gcc/testsuite/gdc.dg/ubsan/ubsan.exp new file mode 100644 index 00000000000..a2e2da017cc --- /dev/null +++ b/gcc/testsuite/gdc.dg/ubsan/ubsan.exp @@ -0,0 +1,32 @@ +# Copyright (C) 2019 Free Software Foundation, Inc. + +# 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 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +# Load support procs. +load_lib gdc-dg.exp +load_lib ubsan-dg.exp + +# Initialize `dg'. +dg-init +ubsan_init + +# Main loop. +if [check_effective_target_fsanitize_undefined] { + gdc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.d]] "" "" +} + +# All done. +ubsan_finish +dg-finish diff --git a/gcc/testsuite/lib/gdc.exp b/gcc/testsuite/lib/gdc.exp index f5957c3d2ee..e09f5ee987a 100644 --- a/gcc/testsuite/lib/gdc.exp +++ b/gcc/testsuite/lib/gdc.exp @@ -78,7 +78,6 @@ proc gdc_include_flags { paths } { } set gccpath ${paths} - set target [file tail [file normalize ${paths}]] if { $gccpath != "" } { if [file exists "${gccpath}/libphobos/libdruntime"] { @@ -95,6 +94,8 @@ proc gdc_include_flags { paths } { set idx [lsearch $cxxflags "-nostdinc++"] append flags [lreplace $cxxflags $idx $idx] } + + return "$flags" } #