Skip to content

Commit

Permalink
Run most tests in both C++98 and C++11 modes.
Browse files Browse the repository at this point in the history
gcc/testsuite/
	* lib/target-supports.exp (check_effective_target_c++11): New.
	(check_effective_target_c++98): New.
	* lib/g++-dg.exp (g++-dg-runtest): New.
	* [various.exp]: Use g++-dg-runtest.
	* [various.C]: Fix for C++11 mode.
gcc/cp/
	* Make-lang.in (check_g++_parallelize): Add dg-torture.exp.
	(check-c++0x): Obsolete.
/
	* Makefile.def (language=c++): Remove check-c++0x.
	* Makefile.in (check-gcc-c++): Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181222 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information
jason committed Nov 9, 2011
1 parent 103b221 commit d2f3722
Show file tree
Hide file tree
Showing 51 changed files with 197 additions and 100 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2011-11-09 Jason Merrill <jason@redhat.com>

* Makefile.def (language=c++): Remove check-c++0x.
* Makefile.in (check-gcc-c++): Regenerate.

2011-11-08 Richard Henderson <rth@redhat.com>

* configure.ac: Test for libitm directory present first.
Expand Down
2 changes: 1 addition & 1 deletion Makefile.def
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ dependencies = { module=configure-target-newlib; on=all-ld; };
dependencies = { module=configure-target-libgfortran; on=all-target-libquadmath; };

languages = { language=c; gcc-check-target=check-gcc; };
languages = { language=c++; gcc-check-target="check-c++ check-c++0x";
languages = { language=c++; gcc-check-target=check-c++;
lib-check-target=check-target-libstdc++-v3;
lib-check-target=check-target-libmudflap-c++; };
languages = { language=fortran; gcc-check-target=check-fortran;
Expand Down
2 changes: 1 addition & 1 deletion Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -40661,7 +40661,7 @@ check-gcc-c++:
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
(cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++ check-c++0x);
(cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++);
check-c++: check-gcc-c++ check-target-libstdc++-v3 check-target-libmudflap-c++

.PHONY: check-gcc-fortran check-fortran
Expand Down
3 changes: 3 additions & 0 deletions gcc/cp/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
2011-11-09 Jason Merrill <jason@redhat.com>

* Make-lang.in (check_g++_parallelize): Add dg-torture.exp.
(check-c++0x): Obsolete.

* pt.c (invalid_nontype_parm_type_p): Avoid printing "<type error>".

* pt.c (convert_nontype_argument): Only integral arguments
Expand Down
5 changes: 2 additions & 3 deletions gcc/cp/Make-lang.in
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,7 @@ c++.srcman: doc/g++.1
check-c++ : check-g++
# Run the testsute in C++0x mode.
check-c++0x:
$(MAKE) RUNTESTFLAGS="$(RUNTESTFLAGS) --extra_opts,-std=gnu++0x" \
TESTSUITEDIR="$(TESTSUITEDIR).c++0x" check-g++
@echo Normal 'make check' now runs the testsuite in C++11 mode as well as C++98.
# Run the testsuite with garbage collection at every opportunity.
check-g++-strict-gc:
$(MAKE) RUNTESTFLAGS="$(RUNTESTFLAGS) --extra_opts,--param,ggc-min-heapsize=0,--param,ggc-min-expand=0" \
Expand All @@ -163,7 +162,7 @@ check-c++-subtargets : check-g++-subtargets
lang_checks += check-g++
lang_checks_parallelized += check-g++
# For description see comment above check_gcc_parallelize in gcc/Makefile.in.
check_g++_parallelize = old-deja.exp dg.exp
check_g++_parallelize = old-deja.exp dg.exp dg-torture.exp

#
# Install hooks:
Expand Down
51 changes: 50 additions & 1 deletion gcc/testsuite/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,4 +1,53 @@
2011-11-09 Jason Merrill <jason@redhat.com>
2011-11-08 Jason Merrill <jason@redhat.com>

Run most C++ tests in both C++98 and C++11 modes.
* lib/target-supports.exp (check_effective_target_c++11): New.
(check_effective_target_c++98): New.
* lib/g++-dg.exp (g++-dg-runtest): New.
* g++.dg/dg.exp: Use g++-dg-runtest.
* g++.dg/charset/charset.exp: Likewise.
* g++.dg/debug/dwarf2/dwarf2.exp: Likewise.
* g++.dg/dfp/dfp.exp: Likewise.
* g++.dg/gcov/gcov.exp: Likewise.
* g++.dg/gomp/gomp.exp: Likewise.
* g++.dg/graphite/graphite.exp: Likewise.
* g++.dg/tls/tls.exp: Likewise.
* g++.dg/tm/tm.exp: Likewise.
* g++.dg/vect/vect.exp: Likewise.
* g++.old-deja/old-deja.exp: Likewise.
* g++.dg/simulate-thread/simulate-thread.exp: Pass -std flags
with some of the torture options.
* g++.dg/abi/mangle4.C: Move to template/nontype25.C.
* g++.dg/template/sfinae6_neg.C: Add C++11 error.
* g++.dg/init/null1.C: Only run in C++98.
* g++.dg/warn/Wconversion-null-3.C: Likewise.
* g++.old-deja/g++.benjamin/p12475.C: Likewise.
* g++.old-deja/g++.brendan/crash64.C: Likewise.
* g++.old-deja/g++.other/anon9.C: Likewise.
* g++.old-deja/g++.other/linkage1.C: Likewise.
* g++.old-deja/g++.other/linkage2.C: Likewise.
* g++.old-deja/g++.pt/t29.C: Likewise.
* g++.old-deja/g++.pt/t30.C: Likewise.
* g++.dg/cpp0x/variadic60.C: Only error in C++98.
* g++.dg/ext/anon-struct4.C: Likewise.
* g++.dg/init/brace2.C: Likewise.
* g++.dg/init/brace6.C: Likewise.
* g++.dg/other/anon3.C: Likewise.
* g++.dg/template/arg2.C: Likewise.
* g++.old-deja/g++.brendan/cvt1.C: Likewise.
* g++.old-deja/g++.brendan/enum11.C: Likewise.
* g++.old-deja/g++.brendan/enum8.C: Likewise.
* g++.old-deja/g++.brendan/enum9.C: Likewise.
* g++.old-deja/g++.brendan/friend3.C: Likewise.
* g++.old-deja/g++.brendan/init2.C: Likewise.
* g++.old-deja/g++.brendan/init4.C: Likewise.
* g++.old-deja/g++.brendan/misc14.C: Likewise.
* g++.old-deja/g++.jason/cond.C: Likewise.
* g++.old-deja/g++.law/init1.C: Likewise.
* g++.old-deja/g++.law/operators32.C: Likewise.
* g++.old-deja/g++.pt/enum6.C: Likewise.
* g++.old-deja/g++.pt/explicit70.C: Likewise.
* g++.old-deja/g++.pt/ptrmem6.C: Likewise.

* g++.dg/eh/new1.C: Adjust for C++11 mode.
* g++.dg/init/new11.C: Likewise.
Expand Down
4 changes: 2 additions & 2 deletions gcc/testsuite/g++.dg/charset/charset.exp
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ if ![info exists DEFAULT_CHARSETCFLAGS] then {
dg-init

# Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{c,cc,S} ]] \
"" $DEFAULT_CHARSETCFLAGS
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{c,cc,S} ]] \
$DEFAULT_CHARSETCFLAGS

# All done.
dg-finish
2 changes: 1 addition & 1 deletion gcc/testsuite/g++.dg/cpp0x/variadic60.C
Original file line number Diff line number Diff line change
@@ -1 +1 @@
template<typename... Args> class tuple; // { dg-error "variadic templates" }
template<typename... Args> class tuple; // { dg-error "variadic templates" "" { target c++98 } }
4 changes: 2 additions & 2 deletions gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ set comp_output [g++_target_compile \
if { ! [string match "*: target system does not support the * debug format*" \
$comp_output] } {
remove-build-file "trivial.S"
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C $srcdir/c-c++-common/dwarf2/*.c]] \
"" $DEFAULT_CFLAGS
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C $srcdir/c-c++-common/dwarf2/*.c]] \
$DEFAULT_CFLAGS
}

# All done.
Expand Down
8 changes: 4 additions & 4 deletions gcc/testsuite/g++.dg/dfp/dfp.exp
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@ set DEFAULT_CXXFLAGS ""
dg-init

# Main loop. Run the tests that are specific to C++.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[C]] \
"" $DEFAULT_CXXFLAGS
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[C]] \
$DEFAULT_CXXFLAGS
# Run tests that are shared with C testing.
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/dfp/*.c]] \
"" $DEFAULT_CXXFLAGS
g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/dfp/*.c]] \
$DEFAULT_CXXFLAGS

# All done.
dg-finish
Expand Down
12 changes: 6 additions & 6 deletions gcc/testsuite/g++.dg/dg.exp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ load_lib g++-dg.exp
# If a testcase doesn't have special options, use these.
global DEFAULT_CXXFLAGS
if ![info exists DEFAULT_CXXFLAGS] then {
set DEFAULT_CXXFLAGS " -ansi -pedantic-errors -Wno-long-long"
set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long"
}

# Initialize `dg'.
Expand Down Expand Up @@ -52,14 +52,14 @@ set tests [prune $tests $srcdir/$subdir/guality/*]
set tests [prune $tests $srcdir/$subdir/simulate-thread/*]

# Main loop.
dg-runtest $tests "" $DEFAULT_CXXFLAGS
g++-dg-runtest $tests $DEFAULT_CXXFLAGS

# C/C++ common tests.
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/*.\[cSi\]]] \
"" ""
g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/*.\[cSi\]]] \
""

dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cpp/*.\[cS\]]] \
"" ""
g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cpp/*.\[cS\]]] \
""


# All done.
Expand Down
2 changes: 1 addition & 1 deletion gcc/testsuite/g++.dg/ext/anon-struct4.C
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// PR c++/14401

struct { struct { int& i ; } bar ; } foo ; // { dg-error "uninitialized" "uninit" }
// { dg-warning "anonymous" "anon" { target *-*-* } 3 }
// { dg-warning "anonymous" "anon" { target c++98 } 3 }
// { dg-message "should be initialized" "ref-uninit" { target *-*-* } 3 }
2 changes: 1 addition & 1 deletion gcc/testsuite/g++.dg/gcov/gcov.exp
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,6 @@ if { $files != "" } {
}

# Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" ""
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] ""

dg-finish
2 changes: 1 addition & 1 deletion gcc/testsuite/g++.dg/gomp/gomp.exp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ if ![check_effective_target_fopenmp] {
dg-init

# Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C $srcdir/c-c++-common/gomp/*.c]] "" "-fopenmp"
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C $srcdir/c-c++-common/gomp/*.c]] "-fopenmp"

# All done.
dg-finish
12 changes: 6 additions & 6 deletions gcc/testsuite/g++.dg/graphite/graphite.exp
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,14 @@ set block_files [lsort [glob -nocomplain $srcdir/$subdir/block-*.C ] ]

# Tests to be compiled.
set dg-do-what-default compile
dg-runtest $scop_files "" "-O2 -fgraphite -fdump-tree-graphite-all"
dg-runtest $id_files "" "-O2 -fgraphite-identity -ffast-math"
g++-dg-runtest $scop_files "-O2 -fgraphite -fdump-tree-graphite-all"
g++-dg-runtest $id_files "-O2 -fgraphite-identity -ffast-math"

# Tests to be run.
set dg-do-what-default run
dg-runtest $run_id_files "" "-O2 -fgraphite-identity"
dg-runtest $interchange_files "" "-O2 -floop-interchange -fno-loop-block -fno-loop-strip-mine -ffast-math -fdump-tree-graphite-all"
dg-runtest $block_files "" "-O2 -floop-block -fno-loop-strip-mine -fno-loop-interchange -ffast-math -fdump-tree-graphite-all"
g++-dg-runtest $run_id_files "-O2 -fgraphite-identity"
g++-dg-runtest $interchange_files "-O2 -floop-interchange -fno-loop-block -fno-loop-strip-mine -ffast-math -fdump-tree-graphite-all"
g++-dg-runtest $block_files "-O2 -floop-block -fno-loop-strip-mine -fno-loop-interchange -ffast-math -fdump-tree-graphite-all"

# The default action for the rest of the files is 'compile'.
set dg-do-what-default compile
Expand All @@ -62,7 +62,7 @@ foreach f $id_files {lremove wait_to_run_files $f}
foreach f $run_id_files {lremove wait_to_run_files $f}
foreach f $interchange_files {lremove wait_to_run_files $f}
foreach f $block_files {lremove wait_to_run_files $f}
dg-runtest $wait_to_run_files "" "-ansi -pedantic-errors"
g++-dg-runtest $wait_to_run_files " -pedantic-errors"

# Clean up.
set dg-do-what-default ${save-dg-do-what-default}
Expand Down
2 changes: 1 addition & 1 deletion gcc/testsuite/g++.dg/init/brace2.C
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ const char * y = { "hello" };
int a = 2;
int b = { 2,3 }; // { dg-error "requires one element in initializer" }
int c = { { 2 } } ; // { dg-error "braces around scalar initializer" }
int d = {}; // { dg-error "initializer" }
int d = {}; // { dg-error "initializer" "" { target c++98 } }
2 changes: 1 addition & 1 deletion gcc/testsuite/g++.dg/init/brace6.C
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ int main()
{
int i = { 1 };
int j = { 1, 2 }; /* { dg-error "requires one element" } */
A a = { 6 }; /* { dg-error "initialize" } */
A a = { 6 }; /* { dg-error "initialize" "" { target c++98 } } */
B b = { 6 }; /* { dg-error "" } */
C c = { 6 }; /* { dg-error "too many initializers" } */
D d = { 6 };
Expand Down
3 changes: 2 additions & 1 deletion gcc/testsuite/g++.dg/init/null1.C
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// PR c++/16489
// { dg-do compile { target c++98 } }

const int NULL = 0;
int main() {
double* p = NULL;
double* p = NULL;
}
2 changes: 1 addition & 1 deletion gcc/testsuite/g++.dg/other/anon3.C
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@

// { dg-do compile }

enum { a = 3 } x; // { dg-warning "anonymous type" }
enum { a = 3 } x; // { dg-warning "anonymous type" "" { target c++98 } }
4 changes: 2 additions & 2 deletions gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ torture-init
set-torture-options [list \
{ -O0 -g } \
{ -O1 -g } \
{ -O2 -g } \
{ -O3 -g } \
{ -O2 -g -std=c++98 } \
{ -O3 -g -std=c++11 } \
{ -Os -g } ]

if [gdb-exists] {
Expand Down
2 changes: 1 addition & 1 deletion gcc/testsuite/g++.dg/template/arg2.C
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ template <typename T> class X {};
void fn ()
{
class L {};
X<L> f; // { dg-error "uses local type|trying to instantiate|no type|invalid type" "" }
X<L> f; // { dg-error "uses local type|trying to instantiate|no type|invalid type" "" { target c++98 } }
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// Test mangling of type casts
// { dg-do compile }

class A {};
Expand All @@ -8,17 +7,16 @@ template<const A* a> class C {};
template<const B* b> class D {};
template<B* b> class E {};

template<const B* b> void f(D<b> &, C<static_cast<const A*>(b)> &) {} // { dg-error "" }
template<const B* b> void g(D<b> &, E<const_cast<B*>(b)> &) {} // { dg-error "" }
template<const B* b> void f(D<b> &, C<static_cast<const A*>(b)> &) {} // { dg-error "" "" { target c++98 } }
template<const B* b> void g(D<b> &, E<const_cast<B*>(b)> &) {} // { dg-error "" "" { target c++98 } }

B b;

int main()
{
C<static_cast<const A*>(&b)> c; // { dg-error "" }
D<&b> d;
E<const_cast<B*>(&b)> e; // { dg-error "" }
f(d, c);
E<const_cast<B*>(&b)> e; // { dg-error "" "" { target c++98 } }
f(d, c); // { dg-error "" "" { target c++11 } }
g(d, e);
}

2 changes: 1 addition & 1 deletion gcc/testsuite/g++.dg/template/sfinae6_neg.C
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ template<typename T> struct enable_if<false, T> { };
template<typename F, typename T1, typename T2>
typename enable_if<sizeof(create_a<F>()(create_a<T1>(), create_a<T2>()), 1),
yes_type>::type
check_is_callable2(type<F>, type<T1>, type<T2>);
check_is_callable2(type<F>, type<T1>, type<T2>); // { dg-error "within this context" "" { target c++11 } }

no_type check_is_callable2(...);

Expand Down
4 changes: 2 additions & 2 deletions gcc/testsuite/g++.dg/tls/tls.exp
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@ load_lib g++-dg.exp
# If a testcase doesn't have special options, use these.
global DEFAULT_CXXFLAGS
if ![info exists DEFAULT_CXXFLAGS] then {
set DEFAULT_CXXFLAGS " -ansi -pedantic-errors -Wno-long-long"
set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long"
}

# Initialize `dg'.
dg-init

# Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" $DEFAULT_CXXFLAGS
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] $DEFAULT_CXXFLAGS

# All done.
dg-finish
10 changes: 5 additions & 5 deletions gcc/testsuite/g++.dg/tm/tm.exp
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,18 @@ load_lib g++-dg.exp
# If a testcase doesn't have special options, use these.
global DEFAULT_CXXFLAGS
if ![info exists DEFAULT_CXXFLAGS] then {
set DEFAULT_CXXFLAGS " -ansi -pedantic-errors -Wno-long-long"
set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long"
}

# Initialize `dg'.
dg-init

# Run the tests that are shared with C.
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/tm/*.c]] \
"" $DEFAULT_CXXFLAGS
g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/tm/*.c]] \
$DEFAULT_CXXFLAGS
# Run the C++ only tests.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] \
"" $DEFAULT_CXXFLAGS
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] \
$DEFAULT_CXXFLAGS

# All done.
dg-finish
12 changes: 6 additions & 6 deletions gcc/testsuite/g++.dg/vect/vect.exp
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,10 @@ lappend VECT_SLP_CFLAGS "-fdump-tree-slp-details"
dg-init

# Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/pr*.{c,cc,S} ]] \
"" $DEFAULT_VECTCFLAGS
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/slp-pr*.{c,cc,S} ]] \
"" $VECT_SLP_CFLAGS
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/pr*.{c,cc,S} ]] \
$DEFAULT_VECTCFLAGS
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/slp-pr*.{c,cc,S} ]] \
$VECT_SLP_CFLAGS

#### Tests with special options
global SAVED_DEFAULT_VECTCFLAGS
Expand All @@ -70,8 +70,8 @@ set SAVED_DEFAULT_VECTCFLAGS $DEFAULT_VECTCFLAGS
# --param max-aliased-vops=0
set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
lappend DEFAULT_VECTCFLAGS "--param max-aliased-vops=0"
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/param-max-aliased*.\[cS\]]] \
"" $DEFAULT_VECTCFLAGS
g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/param-max-aliased*.\[cS\]]] \
$DEFAULT_VECTCFLAGS

# Clean up.
set dg-do-what-default ${save-dg-do-what-default}
Expand Down
1 change: 1 addition & 0 deletions gcc/testsuite/g++.dg/warn/Wconversion-null-3.C
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// PR c++/48420
// { dg-do compile { target c++98 } }

void foo(int* p);

Expand Down
2 changes: 1 addition & 1 deletion gcc/testsuite/g++.old-deja/g++.benjamin/p12475.C
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// { dg-do assemble }
// { dg-do assemble { target c++98 } }
// prms-id: 12475

#include <limits.h>
Expand Down
Loading

0 comments on commit d2f3722

Please sign in to comment.