aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Poulhiès <dkm@kataplop.net>2021-03-16 18:22:31 +0100
committerPhilip Herron <herron.philip@googlemail.com>2021-03-27 18:02:51 +0000
commitf9f1f1d7211e555ae7a22b21723ced7610fa5657 (patch)
tree791a87fb7b17613ab28a1995d0228b0dc9bc9c5e
parent6be4ce99d513fb6dcda1aff2f1bb9bc6101fb0b8 (diff)
downloadgcc-f9f1f1d7211e555ae7a22b21723ced7610fa5657.zip
gcc-f9f1f1d7211e555ae7a22b21723ced7610fa5657.tar.gz
gcc-f9f1f1d7211e555ae7a22b21723ced7610fa5657.tar.bz2
Refactor DejaGNU testsuite
Use more standard layout for DejaGNU testsuite. 3 subdirectories are used for tests: - compile/*: tests are build using default torture options. - xfail_compile/*: tests are expected to fail early in the frontend and are only build once. - execute/*: tests are executed and exit status is checked. The previous .exp files were copied from D tests and were expected to be used in a different way not really applicable for the current Rust tests. Fixes #281
-rw-r--r--gcc/testsuite/lib/rust-dg.exp61
-rw-r--r--gcc/testsuite/lib/rust.exp63
-rw-r--r--gcc/testsuite/rust.test/compile/arithmetic_expressions1.rs (renamed from gcc/testsuite/rust.test/compilable/arithmetic_expressions1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/arrays1.rs (renamed from gcc/testsuite/rust.test/compilable/arrays1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/arrays2.rs (renamed from gcc/testsuite/rust.test/compilable/arrays2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/arrays_index1.rs (renamed from gcc/testsuite/rust.test/compilable/arrays_index1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/arrays_index2.rs (renamed from gcc/testsuite/rust.test/compilable/arrays_index2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/block_expr1.rs (renamed from gcc/testsuite/rust.test/compilable/block_expr1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/block_expr2.rs (renamed from gcc/testsuite/rust.test/compilable/block_expr2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/block_expr3.rs (renamed from gcc/testsuite/rust.test/compilable/block_expr3.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/block_expr4.rs (renamed from gcc/testsuite/rust.test/compilable/block_expr4.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/block_expr_parser_bug.rs (renamed from gcc/testsuite/rust.test/compilable/block_expr_parser_bug.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/borrow1.rs (renamed from gcc/testsuite/rust.test/compilable/borrow1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/char1.rs (renamed from gcc/testsuite/rust.test/compilable/char1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/comparison_expr1.rs (renamed from gcc/testsuite/rust.test/compilable/comparison_expr1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/compile.exp35
-rw-r--r--gcc/testsuite/rust.test/compile/compound_assignment_expr1.rs (renamed from gcc/testsuite/rust.test/compilable/compound_assignment_expr1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/conditional.rs (renamed from gcc/testsuite/rust.test/compilable/conditional.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/constant1.rs (renamed from gcc/testsuite/rust.test/compilable/constant1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/deadcode1.rs (renamed from gcc/testsuite/rust.test/compilable/deadcode1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/deref1.rs (renamed from gcc/testsuite/rust.test/compilable/deref1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/float1.rs (renamed from gcc/testsuite/rust.test/compilable/float1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/float_types.rs (renamed from gcc/testsuite/rust.test/compilable/float_types.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/forward_decl_1.rs (renamed from gcc/testsuite/rust.test/compilable/forward_decl_1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/forward_decl_2.rs (renamed from gcc/testsuite/rust.test/compilable/forward_decl_2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/forward_decl_3.rs (renamed from gcc/testsuite/rust.test/compilable/forward_decl_3.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/forward_decl_4.rs (renamed from gcc/testsuite/rust.test/compilable/forward_decl_4.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/function_reference1.rs (renamed from gcc/testsuite/rust.test/compilable/function_reference1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/function_reference2.rs (renamed from gcc/testsuite/rust.test/compilable/function_reference2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/function_reference3.rs (renamed from gcc/testsuite/rust.test/compilable/function_reference3.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/function_reference4.rs (renamed from gcc/testsuite/rust.test/compilable/function_reference4.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/generics1.rs (renamed from gcc/testsuite/rust.test/compilable/generics1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/generics2.rs (renamed from gcc/testsuite/rust.test/compilable/generics2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/generics3.rs (renamed from gcc/testsuite/rust.test/compilable/generics3.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/generics4.rs (renamed from gcc/testsuite/rust.test/compilable/generics4.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/generics5.rs (renamed from gcc/testsuite/rust.test/compilable/generics5.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/generics6.rs (renamed from gcc/testsuite/rust.test/compilable/generics6.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/generics7.rs (renamed from gcc/testsuite/rust.test/compilable/generics7.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/if_elif_else_expr1.rs (renamed from gcc/testsuite/rust.test/compilable/if_elif_else_expr1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/impl_block1.rs (renamed from gcc/testsuite/rust.test/compilable/impl_block1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/impl_block2.rs (renamed from gcc/testsuite/rust.test/compilable/impl_block2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/impl_block3.rs (renamed from gcc/testsuite/rust.test/compilable/impl_block3.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/implicit_returns1.rs (renamed from gcc/testsuite/rust.test/compilable/implicit_returns1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/infer_type1.rs (renamed from gcc/testsuite/rust.test/compilable/infer_type1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/integer_inference_var1.rs (renamed from gcc/testsuite/rust.test/compilable/integer_inference_var1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/integer_inference_var2.rs (renamed from gcc/testsuite/rust.test/compilable/integer_inference_var2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/integer_inference_var3.rs (renamed from gcc/testsuite/rust.test/compilable/integer_inference_var3.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/integer_inference_var4.rs (renamed from gcc/testsuite/rust.test/compilable/integer_inference_var4.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/integer_inference_var5.rs (renamed from gcc/testsuite/rust.test/compilable/integer_inference_var5.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/integer_types.rs (renamed from gcc/testsuite/rust.test/compilable/integer_types.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/literals1.rs (renamed from gcc/testsuite/rust.test/compilable/literals1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/loop1.rs (renamed from gcc/testsuite/rust.test/compilable/loop1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/loop2.rs (renamed from gcc/testsuite/rust.test/compilable/loop2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/loop3.rs (renamed from gcc/testsuite/rust.test/compilable/loop3.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/loop4.rs (renamed from gcc/testsuite/rust.test/compilable/loop4.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/loop5.rs (renamed from gcc/testsuite/rust.test/compilable/loop5.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/loop6.rs (renamed from gcc/testsuite/rust.test/compilable/loop6.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/loop7.rs (renamed from gcc/testsuite/rust.test/compilable/loop7.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/methods1.rs (renamed from gcc/testsuite/rust.test/compilable/methods1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/methods2.rs (renamed from gcc/testsuite/rust.test/compilable/methods2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/name_resolve1.rs (renamed from gcc/testsuite/rust.test/compilable/name_resolve1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/nested_struct1.rs (renamed from gcc/testsuite/rust.test/compilable/nested_struct1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/parameter_usage1.rs (renamed from gcc/testsuite/rust.test/compilable/parameter_usage1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/parens1.rs (renamed from gcc/testsuite/rust.test/compilable/parens1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/recursive_fn1.rs (renamed from gcc/testsuite/rust.test/compilable/recursive_fn1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/scoping1.rs (renamed from gcc/testsuite/rust.test/compilable/scoping1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/self_type1.rs (renamed from gcc/testsuite/rust.test/compilable/self_type1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/shadow1.rs (renamed from gcc/testsuite/rust.test/compilable/shadow1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/shadow2.rs (renamed from gcc/testsuite/rust.test/compilable/shadow2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/static_function.rs (renamed from gcc/testsuite/rust.test/compilable/static_function.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/static_var1.rs (renamed from gcc/testsuite/rust.test/compilable/static_var1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/str1.rs (renamed from gcc/testsuite/rust.test/compilable/str1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/struct_access1.rs (renamed from gcc/testsuite/rust.test/compilable/struct_access1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/struct_base_init_1.rs (renamed from gcc/testsuite/rust.test/compilable/struct_base_init_1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/struct_init.rs (renamed from gcc/testsuite/rust.test/compilable/struct_init.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/struct_init_2.rs (renamed from gcc/testsuite/rust.test/compilable/struct_init_2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/struct_init_3.rs (renamed from gcc/testsuite/rust.test/compilable/struct_init_3.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/struct_init_4.rs (renamed from gcc/testsuite/rust.test/compilable/struct_init_4.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/struct_init_5.rs (renamed from gcc/testsuite/rust.test/compilable/struct_init_5.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/struct_init_6.rs (renamed from gcc/testsuite/rust.test/compilable/struct_init_6.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/struct_init_7.rs (renamed from gcc/testsuite/rust.test/compilable/struct_init_7.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/struct_init_8.rs (renamed from gcc/testsuite/rust.test/compilable/struct_init_8.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/tuple1.rs (renamed from gcc/testsuite/rust.test/compilable/tuple1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/tuple2.rs (renamed from gcc/testsuite/rust.test/compilable/tuple2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/tuple3.rs (renamed from gcc/testsuite/rust.test/compilable/tuple3.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/tuple_field_access.rs (renamed from gcc/testsuite/rust.test/compilable/tuple_field_access.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/tuple_struct1.rs (renamed from gcc/testsuite/rust.test/compilable/tuple_struct1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/tuple_struct2.rs (renamed from gcc/testsuite/rust.test/compilable/tuple_struct2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/type_infer1.rs (renamed from gcc/testsuite/rust.test/compilable/type_infer1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/type_infer2.rs (renamed from gcc/testsuite/rust.test/compilable/type_infer2.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/type_infer3.rs (renamed from gcc/testsuite/rust.test/compilable/type_infer3.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/type_infer4.rs (renamed from gcc/testsuite/rust.test/compilable/type_infer4.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/type_infer5.rs (renamed from gcc/testsuite/rust.test/compilable/type_infer5.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/type_infer6.rs (renamed from gcc/testsuite/rust.test/compilable/type_infer6.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/unary_operators.rs (renamed from gcc/testsuite/rust.test/compilable/unary_operators.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/unit_type1.rs (renamed from gcc/testsuite/rust.test/compilable/unit_type1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/unused1.rs (renamed from gcc/testsuite/rust.test/compilable/unused1.rs)0
-rw-r--r--gcc/testsuite/rust.test/compile/usize1.rs (renamed from gcc/testsuite/rust.test/compilable/usize1.rs)0
-rw-r--r--gcc/testsuite/rust.test/execute/empty_main.rs3
-rw-r--r--gcc/testsuite/rust.test/execute/execute.exp35
-rw-r--r--gcc/testsuite/rust.test/execute/exit_error.rs5
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/arrays1.rs4
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/arrays2.rs3
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/bad_type1.rs3
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/break1.rs5
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/break2.rs14
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/continue1.rs9
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/func1.rs9
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/func2.rs7
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/func3.rs7
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/generics1.rs9
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/generics2.rs9
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/generics3.rs9
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/generics5.rs9
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/immutable1.rs5
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/immutable2.rs5
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/immutable3.rs4
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/immutable4.rs4
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/missing_return1.rs5
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/redef_error1.rs8
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/redef_error2.rs4
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/redef_error3.rs9
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/redef_error5.rs8
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/shadow1.rs6
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/static_var1.rs5
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/struct_init1.rs8
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/tuple1.rs5
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/tuple_struct1.rs8
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/tuple_struct2.rs5
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/tuple_struct3.rs5
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/unary_negation.rs8
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/unary_not.rs8
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/usize1.rs5
-rw-r--r--gcc/testsuite/rust.test/rust-test.exp437
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/arrays1.rs5
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/arrays2.rs5
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/bad_type1.rs4
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/bad_type2.rs (renamed from gcc/testsuite/rust.test/fail_compilation/bad_type2.rs)3
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/break1.rs7
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/break2.rs16
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/continue1.rs11
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/func1.rs9
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/func2.rs10
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/func3.rs7
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/generics1.rs11
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/generics2.rs11
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/generics3.rs10
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/generics4.rs (renamed from gcc/testsuite/rust.test/fail_compilation/generics4.rs)1
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/generics5.rs13
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/immutable1.rs5
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/immutable2.rs5
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/immutable3.rs4
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/immutable4.rs4
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/immutable5.rs (renamed from gcc/testsuite/rust.test/fail_compilation/immutable5.rs)2
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/implicit_returns_err1.rs (renamed from gcc/testsuite/rust.test/fail_compilation/implicit_returns_err1.rs)2
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/implicit_returns_err2.rs (renamed from gcc/testsuite/rust.test/fail_compilation/implicit_returns_err2.rs)2
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/implicit_returns_err3.rs (renamed from gcc/testsuite/rust.test/fail_compilation/implicit_returns_err3.rs)1
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/missing_return1.rs6
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/redef_error1.rs9
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/redef_error2.rs5
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/redef_error3.rs10
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/redef_error4.rs (renamed from gcc/testsuite/rust.test/fail_compilation/redef_error4.rs)6
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/redef_error5.rs9
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/shadow1.rs7
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/static_var1.rs5
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/struct_init1.rs9
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/tuple1.rs5
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/tuple_struct1.rs10
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/tuple_struct2.rs7
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/tuple_struct3.rs5
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/unary_negation.rs10
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/unary_not.rs9
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/usize1.rs5
-rw-r--r--gcc/testsuite/rust.test/xfail_compile/xfail_compile.exp36
174 files changed, 396 insertions, 756 deletions
diff --git a/gcc/testsuite/lib/rust-dg.exp b/gcc/testsuite/lib/rust-dg.exp
index e7c9852..ef9f51b 100644
--- a/gcc/testsuite/lib/rust-dg.exp
+++ b/gcc/testsuite/lib/rust-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2019 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 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
@@ -19,30 +19,7 @@ load_lib gcc-dg.exp
# Define rust callbacks for dg.exp.
proc rust-dg-test { prog do_what extra_tool_flags } {
- upvar dg-do-what dg-do-what
-
- # Demote link and run tests to compile-only if D runtime is missing.
- if ![check_effective_target_d_runtime] {
- switch $do_what {
- link -
- run {
- set do_what compile
- set dg-do-what compile
- }
- }
- }
-
- # Strip rust.test prefix off test names to avoid pathname failures in
- # some tests.
- set prog [dg-trim-dirname rust.test $prog]
-
- set result \
- [gcc-dg-test-1 rust_target_compile $prog $do_what $extra_tool_flags]
-
- set comp_output [lindex $result 0]
- set output_file [lindex $result 1]
-
- return [list $comp_output $output_file]
+ return [gcc-dg-test-1 rust_target_compile $prog $do_what $extra_tool_flags]
}
proc rust-dg-prune { system text } {
@@ -52,39 +29,6 @@ proc rust-dg-prune { system text } {
# Utility routines.
#
-# Modified dg-runtest that can cycle through a list of optimization options
-# as c-torture does.
-#
-
-proc rust-dg-runtest { testcases flags default-extra-flags } {
- global runtests
-
- foreach test $testcases {
- # If we're only testing specific files and this isn't one of
- # them, skip it.
-
- if ![runtest_file_p $runtests $test] {
- continue
- }
-
- # Use TORTURE_OPTIONS to cycle through an option list.
- if [torture-options-exist] then {
- global torture_with_loops
- set option_list $torture_with_loops
- } else {
- set option_list { "" }
- }
-
- set nshort [file tail [file dirname $test]]/[file tail $test]
-
- foreach flags_t $option_list {
- verbose "Testing $nshort, $flags $flags_t" 1
- dg-test $test "$flags $flags_t" ${default-extra-flags}
- }
- }
-}
-
-#
# rust_load -- wrapper around default rust_load to handle tests that
# require program arguments passed to them.
#
@@ -98,7 +42,6 @@ if { [info procs rust_load] != [list] \
if [info exists RUST_EXECUTE_ARGS] then {
set args [concat "{$RUST_EXECUTE_ARGS}"]
}
- #print "Running: $program [lindex $args 0]"
set result [eval [list prev_rust_load $program] $args ]
return $result
}
diff --git a/gcc/testsuite/lib/rust.exp b/gcc/testsuite/lib/rust.exp
index 541b052..206f572 100644
--- a/gcc/testsuite/lib/rust.exp
+++ b/gcc/testsuite/lib/rust.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
@@ -31,39 +31,6 @@ set rust_compile_options ""
#
-# rust_version -- extract and print the version number of the compiler
-#
-
-proc rust_version { } {
- global RUST_UNDER_TEST
-
- rust_init
-
- # ignore any arguments after the command
- set compiler [lindex $RUST_UNDER_TEST 0]
-
- # verify that the compiler exists
- if { [is_remote host] || [which $compiler] != 0 } then {
- set tmp [remote_exec host "$compiler -v"]
- set status [lindex $tmp 0]
- set output [lindex $tmp 1]
- regexp " version \[^\n\r\]*" $output version
- if { $status == 0 && [info exists version] } then {
- if [is_remote host] {
- clone_output "$compiler $version\n"
- } else {
- clone_output "[which $compiler] $version\n"
- }
- } else {
- clone_output "Couldn't determine version of $output [which $compiler]\n"
- }
- } else {
- # compiler does not exist (this should have already been detected)
- warning "$compiler does not exist"
- }
-}
-
-#
# rust_include_flags -- include flags for the gcc tree structure
#
@@ -118,7 +85,7 @@ proc rust_init { args } {
global libdir
global gluefile wrap_flags
global objdir srcdir
- global ALWAYS_DFLAGS
+ global ALWAYS_RUSTFLAGS
global TOOL_EXECUTABLE TOOL_OPTIONS
global RUST_UNDER_TEST
global TESTING_IN_BUILD_TREE
@@ -148,6 +115,7 @@ proc rust_init { args } {
exit 1
}
}
+
if ![info exists tmpdir] {
set tmpdir "/tmp"
}
@@ -164,24 +132,24 @@ proc rust_init { args } {
# compilation. They are passed first to allow individual
# tests to override them.
if [info exists TEST_ALWAYS_FLAGS] {
- lappend ALWAYS_DFLAGS "additional_flags=$TEST_ALWAYS_FLAGS"
+ lappend ALWAYS_RUSTFLAGS "additional_flags=$TEST_ALWAYS_FLAGS"
}
if ![is_remote host] {
if [info exists TOOL_OPTIONS] {
- lappend ALWAYS_DFLAGS "additional_flags=[rust_include_flags [get_multilibs ${TOOL_OPTIONS}] ]"
- lappend ALWAYS_DFLAGS "ldflags=[rust_link_flags [get_multilibs ${TOOL_OPTIONS}] ]"
+ lappend ALWAYS_RUSTFLAGS "additional_flags=[rust_include_flags [get_multilibs ${TOOL_OPTIONS}] ]"
+ lappend ALWAYS_RUSTFLAGS "ldflags=[rust_link_flags [get_multilibs ${TOOL_OPTIONS}] ]"
} else {
- lappend ALWAYS_DFLAGS "additional_flags=[rust_include_flags [get_multilibs] ]"
- lappend ALWAYS_DFLAGS "ldflags=[rust_link_flags [get_multilibs] ]"
+ lappend ALWAYS_RUSTFLAGS "additional_flags=[rust_include_flags [get_multilibs] ]"
+ lappend ALWAYS_RUSTFLAGS "ldflags=[rust_link_flags [get_multilibs] ]"
}
}
if [info exists TOOL_OPTIONS] {
- lappend ALWAYS_DFLAGS "additional_flags=$TOOL_OPTIONS"
+ lappend ALWAYS_RUSTFLAGS "additional_flags=$TOOL_OPTIONS"
}
- verbose -log "ALWAYS_DFLAGS set to $ALWAYS_DFLAGS"
+ verbose -log "ALWAYS_RUSTFLAGS set to $ALWAYS_RUSTFLAGS"
set gcc_warning_prefix "warning:"
set gcc_error_prefix "(fatal )?error:"
@@ -196,7 +164,7 @@ proc rust_init { args } {
proc rust_target_compile { source dest type options } {
global tmpdir
global gluefile wrap_flags
- global ALWAYS_DFLAGS
+ global ALWAYS_RUSTFLAGS
global RUST_UNDER_TEST
if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } {
@@ -207,7 +175,14 @@ proc rust_target_compile { source dest type options } {
lappend options "timeout=[timeout_value]"
lappend options "compiler=$RUST_UNDER_TEST"
- set options [concat "$ALWAYS_DFLAGS" $options]
+ set options [concat "$ALWAYS_RUSTFLAGS" $options]
set options [dg-additional-files-options $options $source]
+
+ ## FIXME: until the compiler is made less verbose, we need to prune its output completely.
+ # Only keep line containing error so that the test will correctly report the error and the test
+ # can FAIL or XFAIL
+ global additional_prunes
+ set additional_prunes "^((?!error).)*$"
+
return [target_compile $source $dest $type $options]
}
diff --git a/gcc/testsuite/rust.test/compilable/arithmetic_expressions1.rs b/gcc/testsuite/rust.test/compile/arithmetic_expressions1.rs
index efc63f5..efc63f5 100644
--- a/gcc/testsuite/rust.test/compilable/arithmetic_expressions1.rs
+++ b/gcc/testsuite/rust.test/compile/arithmetic_expressions1.rs
diff --git a/gcc/testsuite/rust.test/compilable/arrays1.rs b/gcc/testsuite/rust.test/compile/arrays1.rs
index f7e66af..f7e66af 100644
--- a/gcc/testsuite/rust.test/compilable/arrays1.rs
+++ b/gcc/testsuite/rust.test/compile/arrays1.rs
diff --git a/gcc/testsuite/rust.test/compilable/arrays2.rs b/gcc/testsuite/rust.test/compile/arrays2.rs
index a3c8523..a3c8523 100644
--- a/gcc/testsuite/rust.test/compilable/arrays2.rs
+++ b/gcc/testsuite/rust.test/compile/arrays2.rs
diff --git a/gcc/testsuite/rust.test/compilable/arrays_index1.rs b/gcc/testsuite/rust.test/compile/arrays_index1.rs
index 8dd1c04..8dd1c04 100644
--- a/gcc/testsuite/rust.test/compilable/arrays_index1.rs
+++ b/gcc/testsuite/rust.test/compile/arrays_index1.rs
diff --git a/gcc/testsuite/rust.test/compilable/arrays_index2.rs b/gcc/testsuite/rust.test/compile/arrays_index2.rs
index f9bee77..f9bee77 100644
--- a/gcc/testsuite/rust.test/compilable/arrays_index2.rs
+++ b/gcc/testsuite/rust.test/compile/arrays_index2.rs
diff --git a/gcc/testsuite/rust.test/compilable/block_expr1.rs b/gcc/testsuite/rust.test/compile/block_expr1.rs
index fe63252..fe63252 100644
--- a/gcc/testsuite/rust.test/compilable/block_expr1.rs
+++ b/gcc/testsuite/rust.test/compile/block_expr1.rs
diff --git a/gcc/testsuite/rust.test/compilable/block_expr2.rs b/gcc/testsuite/rust.test/compile/block_expr2.rs
index a66ca7b..a66ca7b 100644
--- a/gcc/testsuite/rust.test/compilable/block_expr2.rs
+++ b/gcc/testsuite/rust.test/compile/block_expr2.rs
diff --git a/gcc/testsuite/rust.test/compilable/block_expr3.rs b/gcc/testsuite/rust.test/compile/block_expr3.rs
index a8b2f27..a8b2f27 100644
--- a/gcc/testsuite/rust.test/compilable/block_expr3.rs
+++ b/gcc/testsuite/rust.test/compile/block_expr3.rs
diff --git a/gcc/testsuite/rust.test/compilable/block_expr4.rs b/gcc/testsuite/rust.test/compile/block_expr4.rs
index 35a5cd0..35a5cd0 100644
--- a/gcc/testsuite/rust.test/compilable/block_expr4.rs
+++ b/gcc/testsuite/rust.test/compile/block_expr4.rs
diff --git a/gcc/testsuite/rust.test/compilable/block_expr_parser_bug.rs b/gcc/testsuite/rust.test/compile/block_expr_parser_bug.rs
index e583008..e583008 100644
--- a/gcc/testsuite/rust.test/compilable/block_expr_parser_bug.rs
+++ b/gcc/testsuite/rust.test/compile/block_expr_parser_bug.rs
diff --git a/gcc/testsuite/rust.test/compilable/borrow1.rs b/gcc/testsuite/rust.test/compile/borrow1.rs
index 8afa474..8afa474 100644
--- a/gcc/testsuite/rust.test/compilable/borrow1.rs
+++ b/gcc/testsuite/rust.test/compile/borrow1.rs
diff --git a/gcc/testsuite/rust.test/compilable/char1.rs b/gcc/testsuite/rust.test/compile/char1.rs
index 73835c2..73835c2 100644
--- a/gcc/testsuite/rust.test/compilable/char1.rs
+++ b/gcc/testsuite/rust.test/compile/char1.rs
diff --git a/gcc/testsuite/rust.test/compilable/comparison_expr1.rs b/gcc/testsuite/rust.test/compile/comparison_expr1.rs
index d3c5263..d3c5263 100644
--- a/gcc/testsuite/rust.test/compilable/comparison_expr1.rs
+++ b/gcc/testsuite/rust.test/compile/comparison_expr1.rs
diff --git a/gcc/testsuite/rust.test/compile/compile.exp b/gcc/testsuite/rust.test/compile/compile.exp
new file mode 100644
index 0000000..37cfd41
--- /dev/null
+++ b/gcc/testsuite/rust.test/compile/compile.exp
@@ -0,0 +1,35 @@
+# Copyright (C) 2021 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/>.
+
+#
+# Rust torture test suite.
+#
+
+# Load support procs.
+load_lib rust-dg.exp
+
+# Initialize `dg'.
+dg-init
+
+# Main loop.
+set saved-dg-do-what-default ${dg-do-what-default}
+
+set dg-do-what-default "compile"
+gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.rs]] "" "-w"
+set dg-do-what-default ${saved-dg-do-what-default}
+
+# All done.
+dg-finish
diff --git a/gcc/testsuite/rust.test/compilable/compound_assignment_expr1.rs b/gcc/testsuite/rust.test/compile/compound_assignment_expr1.rs
index 1ff0d24..1ff0d24 100644
--- a/gcc/testsuite/rust.test/compilable/compound_assignment_expr1.rs
+++ b/gcc/testsuite/rust.test/compile/compound_assignment_expr1.rs
diff --git a/gcc/testsuite/rust.test/compilable/conditional.rs b/gcc/testsuite/rust.test/compile/conditional.rs
index 2bb3a95..2bb3a95 100644
--- a/gcc/testsuite/rust.test/compilable/conditional.rs
+++ b/gcc/testsuite/rust.test/compile/conditional.rs
diff --git a/gcc/testsuite/rust.test/compilable/constant1.rs b/gcc/testsuite/rust.test/compile/constant1.rs
index e8ef96b..e8ef96b 100644
--- a/gcc/testsuite/rust.test/compilable/constant1.rs
+++ b/gcc/testsuite/rust.test/compile/constant1.rs
diff --git a/gcc/testsuite/rust.test/compilable/deadcode1.rs b/gcc/testsuite/rust.test/compile/deadcode1.rs
index ec6e240..ec6e240 100644
--- a/gcc/testsuite/rust.test/compilable/deadcode1.rs
+++ b/gcc/testsuite/rust.test/compile/deadcode1.rs
diff --git a/gcc/testsuite/rust.test/compilable/deref1.rs b/gcc/testsuite/rust.test/compile/deref1.rs
index 9bf3eb5..9bf3eb5 100644
--- a/gcc/testsuite/rust.test/compilable/deref1.rs
+++ b/gcc/testsuite/rust.test/compile/deref1.rs
diff --git a/gcc/testsuite/rust.test/compilable/float1.rs b/gcc/testsuite/rust.test/compile/float1.rs
index 57a746f..57a746f 100644
--- a/gcc/testsuite/rust.test/compilable/float1.rs
+++ b/gcc/testsuite/rust.test/compile/float1.rs
diff --git a/gcc/testsuite/rust.test/compilable/float_types.rs b/gcc/testsuite/rust.test/compile/float_types.rs
index 50b392e..50b392e 100644
--- a/gcc/testsuite/rust.test/compilable/float_types.rs
+++ b/gcc/testsuite/rust.test/compile/float_types.rs
diff --git a/gcc/testsuite/rust.test/compilable/forward_decl_1.rs b/gcc/testsuite/rust.test/compile/forward_decl_1.rs
index a69c07e..a69c07e 100644
--- a/gcc/testsuite/rust.test/compilable/forward_decl_1.rs
+++ b/gcc/testsuite/rust.test/compile/forward_decl_1.rs
diff --git a/gcc/testsuite/rust.test/compilable/forward_decl_2.rs b/gcc/testsuite/rust.test/compile/forward_decl_2.rs
index ba9c963..ba9c963 100644
--- a/gcc/testsuite/rust.test/compilable/forward_decl_2.rs
+++ b/gcc/testsuite/rust.test/compile/forward_decl_2.rs
diff --git a/gcc/testsuite/rust.test/compilable/forward_decl_3.rs b/gcc/testsuite/rust.test/compile/forward_decl_3.rs
index 257b0f7..257b0f7 100644
--- a/gcc/testsuite/rust.test/compilable/forward_decl_3.rs
+++ b/gcc/testsuite/rust.test/compile/forward_decl_3.rs
diff --git a/gcc/testsuite/rust.test/compilable/forward_decl_4.rs b/gcc/testsuite/rust.test/compile/forward_decl_4.rs
index dd8a725..dd8a725 100644
--- a/gcc/testsuite/rust.test/compilable/forward_decl_4.rs
+++ b/gcc/testsuite/rust.test/compile/forward_decl_4.rs
diff --git a/gcc/testsuite/rust.test/compilable/function_reference1.rs b/gcc/testsuite/rust.test/compile/function_reference1.rs
index 604bad0..604bad0 100644
--- a/gcc/testsuite/rust.test/compilable/function_reference1.rs
+++ b/gcc/testsuite/rust.test/compile/function_reference1.rs
diff --git a/gcc/testsuite/rust.test/compilable/function_reference2.rs b/gcc/testsuite/rust.test/compile/function_reference2.rs
index 0b963b2..0b963b2 100644
--- a/gcc/testsuite/rust.test/compilable/function_reference2.rs
+++ b/gcc/testsuite/rust.test/compile/function_reference2.rs
diff --git a/gcc/testsuite/rust.test/compilable/function_reference3.rs b/gcc/testsuite/rust.test/compile/function_reference3.rs
index 32f4728..32f4728 100644
--- a/gcc/testsuite/rust.test/compilable/function_reference3.rs
+++ b/gcc/testsuite/rust.test/compile/function_reference3.rs
diff --git a/gcc/testsuite/rust.test/compilable/function_reference4.rs b/gcc/testsuite/rust.test/compile/function_reference4.rs
index a27f0e4..a27f0e4 100644
--- a/gcc/testsuite/rust.test/compilable/function_reference4.rs
+++ b/gcc/testsuite/rust.test/compile/function_reference4.rs
diff --git a/gcc/testsuite/rust.test/compilable/generics1.rs b/gcc/testsuite/rust.test/compile/generics1.rs
index 8a2965a..8a2965a 100644
--- a/gcc/testsuite/rust.test/compilable/generics1.rs
+++ b/gcc/testsuite/rust.test/compile/generics1.rs
diff --git a/gcc/testsuite/rust.test/compilable/generics2.rs b/gcc/testsuite/rust.test/compile/generics2.rs
index ee759dd..ee759dd 100644
--- a/gcc/testsuite/rust.test/compilable/generics2.rs
+++ b/gcc/testsuite/rust.test/compile/generics2.rs
diff --git a/gcc/testsuite/rust.test/compilable/generics3.rs b/gcc/testsuite/rust.test/compile/generics3.rs
index 0dc41c3..0dc41c3 100644
--- a/gcc/testsuite/rust.test/compilable/generics3.rs
+++ b/gcc/testsuite/rust.test/compile/generics3.rs
diff --git a/gcc/testsuite/rust.test/compilable/generics4.rs b/gcc/testsuite/rust.test/compile/generics4.rs
index 81ac4e6..81ac4e6 100644
--- a/gcc/testsuite/rust.test/compilable/generics4.rs
+++ b/gcc/testsuite/rust.test/compile/generics4.rs
diff --git a/gcc/testsuite/rust.test/compilable/generics5.rs b/gcc/testsuite/rust.test/compile/generics5.rs
index 3d7f70d..3d7f70d 100644
--- a/gcc/testsuite/rust.test/compilable/generics5.rs
+++ b/gcc/testsuite/rust.test/compile/generics5.rs
diff --git a/gcc/testsuite/rust.test/compilable/generics6.rs b/gcc/testsuite/rust.test/compile/generics6.rs
index da9f167..da9f167 100644
--- a/gcc/testsuite/rust.test/compilable/generics6.rs
+++ b/gcc/testsuite/rust.test/compile/generics6.rs
diff --git a/gcc/testsuite/rust.test/compilable/generics7.rs b/gcc/testsuite/rust.test/compile/generics7.rs
index b534708..b534708 100644
--- a/gcc/testsuite/rust.test/compilable/generics7.rs
+++ b/gcc/testsuite/rust.test/compile/generics7.rs
diff --git a/gcc/testsuite/rust.test/compilable/if_elif_else_expr1.rs b/gcc/testsuite/rust.test/compile/if_elif_else_expr1.rs
index eda6d17..eda6d17 100644
--- a/gcc/testsuite/rust.test/compilable/if_elif_else_expr1.rs
+++ b/gcc/testsuite/rust.test/compile/if_elif_else_expr1.rs
diff --git a/gcc/testsuite/rust.test/compilable/impl_block1.rs b/gcc/testsuite/rust.test/compile/impl_block1.rs
index d67afa1..d67afa1 100644
--- a/gcc/testsuite/rust.test/compilable/impl_block1.rs
+++ b/gcc/testsuite/rust.test/compile/impl_block1.rs
diff --git a/gcc/testsuite/rust.test/compilable/impl_block2.rs b/gcc/testsuite/rust.test/compile/impl_block2.rs
index 0ed592d..0ed592d 100644
--- a/gcc/testsuite/rust.test/compilable/impl_block2.rs
+++ b/gcc/testsuite/rust.test/compile/impl_block2.rs
diff --git a/gcc/testsuite/rust.test/compilable/impl_block3.rs b/gcc/testsuite/rust.test/compile/impl_block3.rs
index 3093a6c..3093a6c 100644
--- a/gcc/testsuite/rust.test/compilable/impl_block3.rs
+++ b/gcc/testsuite/rust.test/compile/impl_block3.rs
diff --git a/gcc/testsuite/rust.test/compilable/implicit_returns1.rs b/gcc/testsuite/rust.test/compile/implicit_returns1.rs
index 49457c6..49457c6 100644
--- a/gcc/testsuite/rust.test/compilable/implicit_returns1.rs
+++ b/gcc/testsuite/rust.test/compile/implicit_returns1.rs
diff --git a/gcc/testsuite/rust.test/compilable/infer_type1.rs b/gcc/testsuite/rust.test/compile/infer_type1.rs
index 38bd8ae..38bd8ae 100644
--- a/gcc/testsuite/rust.test/compilable/infer_type1.rs
+++ b/gcc/testsuite/rust.test/compile/infer_type1.rs
diff --git a/gcc/testsuite/rust.test/compilable/integer_inference_var1.rs b/gcc/testsuite/rust.test/compile/integer_inference_var1.rs
index ccee06a..ccee06a 100644
--- a/gcc/testsuite/rust.test/compilable/integer_inference_var1.rs
+++ b/gcc/testsuite/rust.test/compile/integer_inference_var1.rs
diff --git a/gcc/testsuite/rust.test/compilable/integer_inference_var2.rs b/gcc/testsuite/rust.test/compile/integer_inference_var2.rs
index 2209e93..2209e93 100644
--- a/gcc/testsuite/rust.test/compilable/integer_inference_var2.rs
+++ b/gcc/testsuite/rust.test/compile/integer_inference_var2.rs
diff --git a/gcc/testsuite/rust.test/compilable/integer_inference_var3.rs b/gcc/testsuite/rust.test/compile/integer_inference_var3.rs
index 858c5d3..858c5d3 100644
--- a/gcc/testsuite/rust.test/compilable/integer_inference_var3.rs
+++ b/gcc/testsuite/rust.test/compile/integer_inference_var3.rs
diff --git a/gcc/testsuite/rust.test/compilable/integer_inference_var4.rs b/gcc/testsuite/rust.test/compile/integer_inference_var4.rs
index 136d818..136d818 100644
--- a/gcc/testsuite/rust.test/compilable/integer_inference_var4.rs
+++ b/gcc/testsuite/rust.test/compile/integer_inference_var4.rs
diff --git a/gcc/testsuite/rust.test/compilable/integer_inference_var5.rs b/gcc/testsuite/rust.test/compile/integer_inference_var5.rs
index 6b97de5..6b97de5 100644
--- a/gcc/testsuite/rust.test/compilable/integer_inference_var5.rs
+++ b/gcc/testsuite/rust.test/compile/integer_inference_var5.rs
diff --git a/gcc/testsuite/rust.test/compilable/integer_types.rs b/gcc/testsuite/rust.test/compile/integer_types.rs
index 22a9164..22a9164 100644
--- a/gcc/testsuite/rust.test/compilable/integer_types.rs
+++ b/gcc/testsuite/rust.test/compile/integer_types.rs
diff --git a/gcc/testsuite/rust.test/compilable/literals1.rs b/gcc/testsuite/rust.test/compile/literals1.rs
index cd48e83..cd48e83 100644
--- a/gcc/testsuite/rust.test/compilable/literals1.rs
+++ b/gcc/testsuite/rust.test/compile/literals1.rs
diff --git a/gcc/testsuite/rust.test/compilable/loop1.rs b/gcc/testsuite/rust.test/compile/loop1.rs
index a8ee2f5..a8ee2f5 100644
--- a/gcc/testsuite/rust.test/compilable/loop1.rs
+++ b/gcc/testsuite/rust.test/compile/loop1.rs
diff --git a/gcc/testsuite/rust.test/compilable/loop2.rs b/gcc/testsuite/rust.test/compile/loop2.rs
index 3de3ea8..3de3ea8 100644
--- a/gcc/testsuite/rust.test/compilable/loop2.rs
+++ b/gcc/testsuite/rust.test/compile/loop2.rs
diff --git a/gcc/testsuite/rust.test/compilable/loop3.rs b/gcc/testsuite/rust.test/compile/loop3.rs
index 76fadfb..76fadfb 100644
--- a/gcc/testsuite/rust.test/compilable/loop3.rs
+++ b/gcc/testsuite/rust.test/compile/loop3.rs
diff --git a/gcc/testsuite/rust.test/compilable/loop4.rs b/gcc/testsuite/rust.test/compile/loop4.rs
index f7b5935..f7b5935 100644
--- a/gcc/testsuite/rust.test/compilable/loop4.rs
+++ b/gcc/testsuite/rust.test/compile/loop4.rs
diff --git a/gcc/testsuite/rust.test/compilable/loop5.rs b/gcc/testsuite/rust.test/compile/loop5.rs
index 4004cd3..4004cd3 100644
--- a/gcc/testsuite/rust.test/compilable/loop5.rs
+++ b/gcc/testsuite/rust.test/compile/loop5.rs
diff --git a/gcc/testsuite/rust.test/compilable/loop6.rs b/gcc/testsuite/rust.test/compile/loop6.rs
index ecd3ad4..ecd3ad4 100644
--- a/gcc/testsuite/rust.test/compilable/loop6.rs
+++ b/gcc/testsuite/rust.test/compile/loop6.rs
diff --git a/gcc/testsuite/rust.test/compilable/loop7.rs b/gcc/testsuite/rust.test/compile/loop7.rs
index 0cd8445..0cd8445 100644
--- a/gcc/testsuite/rust.test/compilable/loop7.rs
+++ b/gcc/testsuite/rust.test/compile/loop7.rs
diff --git a/gcc/testsuite/rust.test/compilable/methods1.rs b/gcc/testsuite/rust.test/compile/methods1.rs
index cffa02e..cffa02e 100644
--- a/gcc/testsuite/rust.test/compilable/methods1.rs
+++ b/gcc/testsuite/rust.test/compile/methods1.rs
diff --git a/gcc/testsuite/rust.test/compilable/methods2.rs b/gcc/testsuite/rust.test/compile/methods2.rs
index 96a3211..96a3211 100644
--- a/gcc/testsuite/rust.test/compilable/methods2.rs
+++ b/gcc/testsuite/rust.test/compile/methods2.rs
diff --git a/gcc/testsuite/rust.test/compilable/name_resolve1.rs b/gcc/testsuite/rust.test/compile/name_resolve1.rs
index 817f48b..817f48b 100644
--- a/gcc/testsuite/rust.test/compilable/name_resolve1.rs
+++ b/gcc/testsuite/rust.test/compile/name_resolve1.rs
diff --git a/gcc/testsuite/rust.test/compilable/nested_struct1.rs b/gcc/testsuite/rust.test/compile/nested_struct1.rs
index 3880be0..3880be0 100644
--- a/gcc/testsuite/rust.test/compilable/nested_struct1.rs
+++ b/gcc/testsuite/rust.test/compile/nested_struct1.rs
diff --git a/gcc/testsuite/rust.test/compilable/parameter_usage1.rs b/gcc/testsuite/rust.test/compile/parameter_usage1.rs
index 7bba6c6..7bba6c6 100644
--- a/gcc/testsuite/rust.test/compilable/parameter_usage1.rs
+++ b/gcc/testsuite/rust.test/compile/parameter_usage1.rs
diff --git a/gcc/testsuite/rust.test/compilable/parens1.rs b/gcc/testsuite/rust.test/compile/parens1.rs
index 33d9d86..33d9d86 100644
--- a/gcc/testsuite/rust.test/compilable/parens1.rs
+++ b/gcc/testsuite/rust.test/compile/parens1.rs
diff --git a/gcc/testsuite/rust.test/compilable/recursive_fn1.rs b/gcc/testsuite/rust.test/compile/recursive_fn1.rs
index 89c21d0..89c21d0 100644
--- a/gcc/testsuite/rust.test/compilable/recursive_fn1.rs
+++ b/gcc/testsuite/rust.test/compile/recursive_fn1.rs
diff --git a/gcc/testsuite/rust.test/compilable/scoping1.rs b/gcc/testsuite/rust.test/compile/scoping1.rs
index 74af41e..74af41e 100644
--- a/gcc/testsuite/rust.test/compilable/scoping1.rs
+++ b/gcc/testsuite/rust.test/compile/scoping1.rs
diff --git a/gcc/testsuite/rust.test/compilable/self_type1.rs b/gcc/testsuite/rust.test/compile/self_type1.rs
index 373d6dd..373d6dd 100644
--- a/gcc/testsuite/rust.test/compilable/self_type1.rs
+++ b/gcc/testsuite/rust.test/compile/self_type1.rs
diff --git a/gcc/testsuite/rust.test/compilable/shadow1.rs b/gcc/testsuite/rust.test/compile/shadow1.rs
index 3cb1ec5..3cb1ec5 100644
--- a/gcc/testsuite/rust.test/compilable/shadow1.rs
+++ b/gcc/testsuite/rust.test/compile/shadow1.rs
diff --git a/gcc/testsuite/rust.test/compilable/shadow2.rs b/gcc/testsuite/rust.test/compile/shadow2.rs
index fbac8c0..fbac8c0 100644
--- a/gcc/testsuite/rust.test/compilable/shadow2.rs
+++ b/gcc/testsuite/rust.test/compile/shadow2.rs
diff --git a/gcc/testsuite/rust.test/compilable/static_function.rs b/gcc/testsuite/rust.test/compile/static_function.rs
index 7a564af..7a564af 100644
--- a/gcc/testsuite/rust.test/compilable/static_function.rs
+++ b/gcc/testsuite/rust.test/compile/static_function.rs
diff --git a/gcc/testsuite/rust.test/compilable/static_var1.rs b/gcc/testsuite/rust.test/compile/static_var1.rs
index 8464f41..8464f41 100644
--- a/gcc/testsuite/rust.test/compilable/static_var1.rs
+++ b/gcc/testsuite/rust.test/compile/static_var1.rs
diff --git a/gcc/testsuite/rust.test/compilable/str1.rs b/gcc/testsuite/rust.test/compile/str1.rs
index 08882785..08882785 100644
--- a/gcc/testsuite/rust.test/compilable/str1.rs
+++ b/gcc/testsuite/rust.test/compile/str1.rs
diff --git a/gcc/testsuite/rust.test/compilable/struct_access1.rs b/gcc/testsuite/rust.test/compile/struct_access1.rs
index bc12b93..bc12b93 100644
--- a/gcc/testsuite/rust.test/compilable/struct_access1.rs
+++ b/gcc/testsuite/rust.test/compile/struct_access1.rs
diff --git a/gcc/testsuite/rust.test/compilable/struct_base_init_1.rs b/gcc/testsuite/rust.test/compile/struct_base_init_1.rs
index 3c0b24a..3c0b24a 100644
--- a/gcc/testsuite/rust.test/compilable/struct_base_init_1.rs
+++ b/gcc/testsuite/rust.test/compile/struct_base_init_1.rs
diff --git a/gcc/testsuite/rust.test/compilable/struct_init.rs b/gcc/testsuite/rust.test/compile/struct_init.rs
index 6081476..6081476 100644
--- a/gcc/testsuite/rust.test/compilable/struct_init.rs
+++ b/gcc/testsuite/rust.test/compile/struct_init.rs
diff --git a/gcc/testsuite/rust.test/compilable/struct_init_2.rs b/gcc/testsuite/rust.test/compile/struct_init_2.rs
index 8d210b8..8d210b8 100644
--- a/gcc/testsuite/rust.test/compilable/struct_init_2.rs
+++ b/gcc/testsuite/rust.test/compile/struct_init_2.rs
diff --git a/gcc/testsuite/rust.test/compilable/struct_init_3.rs b/gcc/testsuite/rust.test/compile/struct_init_3.rs
index fb1e58e..fb1e58e 100644
--- a/gcc/testsuite/rust.test/compilable/struct_init_3.rs
+++ b/gcc/testsuite/rust.test/compile/struct_init_3.rs
diff --git a/gcc/testsuite/rust.test/compilable/struct_init_4.rs b/gcc/testsuite/rust.test/compile/struct_init_4.rs
index 2cc8a19..2cc8a19 100644
--- a/gcc/testsuite/rust.test/compilable/struct_init_4.rs
+++ b/gcc/testsuite/rust.test/compile/struct_init_4.rs
diff --git a/gcc/testsuite/rust.test/compilable/struct_init_5.rs b/gcc/testsuite/rust.test/compile/struct_init_5.rs
index c79ea71..c79ea71 100644
--- a/gcc/testsuite/rust.test/compilable/struct_init_5.rs
+++ b/gcc/testsuite/rust.test/compile/struct_init_5.rs
diff --git a/gcc/testsuite/rust.test/compilable/struct_init_6.rs b/gcc/testsuite/rust.test/compile/struct_init_6.rs
index 51b90bc..51b90bc 100644
--- a/gcc/testsuite/rust.test/compilable/struct_init_6.rs
+++ b/gcc/testsuite/rust.test/compile/struct_init_6.rs
diff --git a/gcc/testsuite/rust.test/compilable/struct_init_7.rs b/gcc/testsuite/rust.test/compile/struct_init_7.rs
index 615eae7..615eae7 100644
--- a/gcc/testsuite/rust.test/compilable/struct_init_7.rs
+++ b/gcc/testsuite/rust.test/compile/struct_init_7.rs
diff --git a/gcc/testsuite/rust.test/compilable/struct_init_8.rs b/gcc/testsuite/rust.test/compile/struct_init_8.rs
index e62f40a..e62f40a 100644
--- a/gcc/testsuite/rust.test/compilable/struct_init_8.rs
+++ b/gcc/testsuite/rust.test/compile/struct_init_8.rs
diff --git a/gcc/testsuite/rust.test/compilable/tuple1.rs b/gcc/testsuite/rust.test/compile/tuple1.rs
index 8b89601..8b89601 100644
--- a/gcc/testsuite/rust.test/compilable/tuple1.rs
+++ b/gcc/testsuite/rust.test/compile/tuple1.rs
diff --git a/gcc/testsuite/rust.test/compilable/tuple2.rs b/gcc/testsuite/rust.test/compile/tuple2.rs
index 51333d8..51333d8 100644
--- a/gcc/testsuite/rust.test/compilable/tuple2.rs
+++ b/gcc/testsuite/rust.test/compile/tuple2.rs
diff --git a/gcc/testsuite/rust.test/compilable/tuple3.rs b/gcc/testsuite/rust.test/compile/tuple3.rs
index d0fb6fc..d0fb6fc 100644
--- a/gcc/testsuite/rust.test/compilable/tuple3.rs
+++ b/gcc/testsuite/rust.test/compile/tuple3.rs
diff --git a/gcc/testsuite/rust.test/compilable/tuple_field_access.rs b/gcc/testsuite/rust.test/compile/tuple_field_access.rs
index 8d1bbe9..8d1bbe9 100644
--- a/gcc/testsuite/rust.test/compilable/tuple_field_access.rs
+++ b/gcc/testsuite/rust.test/compile/tuple_field_access.rs
diff --git a/gcc/testsuite/rust.test/compilable/tuple_struct1.rs b/gcc/testsuite/rust.test/compile/tuple_struct1.rs
index 65e29f7..65e29f7 100644
--- a/gcc/testsuite/rust.test/compilable/tuple_struct1.rs
+++ b/gcc/testsuite/rust.test/compile/tuple_struct1.rs
diff --git a/gcc/testsuite/rust.test/compilable/tuple_struct2.rs b/gcc/testsuite/rust.test/compile/tuple_struct2.rs
index 5e0a76e..5e0a76e 100644
--- a/gcc/testsuite/rust.test/compilable/tuple_struct2.rs
+++ b/gcc/testsuite/rust.test/compile/tuple_struct2.rs
diff --git a/gcc/testsuite/rust.test/compilable/type_infer1.rs b/gcc/testsuite/rust.test/compile/type_infer1.rs
index bc4b09a..bc4b09a 100644
--- a/gcc/testsuite/rust.test/compilable/type_infer1.rs
+++ b/gcc/testsuite/rust.test/compile/type_infer1.rs
diff --git a/gcc/testsuite/rust.test/compilable/type_infer2.rs b/gcc/testsuite/rust.test/compile/type_infer2.rs
index 614c67d..614c67d 100644
--- a/gcc/testsuite/rust.test/compilable/type_infer2.rs
+++ b/gcc/testsuite/rust.test/compile/type_infer2.rs
diff --git a/gcc/testsuite/rust.test/compilable/type_infer3.rs b/gcc/testsuite/rust.test/compile/type_infer3.rs
index b20b565..b20b565 100644
--- a/gcc/testsuite/rust.test/compilable/type_infer3.rs
+++ b/gcc/testsuite/rust.test/compile/type_infer3.rs
diff --git a/gcc/testsuite/rust.test/compilable/type_infer4.rs b/gcc/testsuite/rust.test/compile/type_infer4.rs
index 8e123e2..8e123e2 100644
--- a/gcc/testsuite/rust.test/compilable/type_infer4.rs
+++ b/gcc/testsuite/rust.test/compile/type_infer4.rs
diff --git a/gcc/testsuite/rust.test/compilable/type_infer5.rs b/gcc/testsuite/rust.test/compile/type_infer5.rs
index 65c7058..65c7058 100644
--- a/gcc/testsuite/rust.test/compilable/type_infer5.rs
+++ b/gcc/testsuite/rust.test/compile/type_infer5.rs
diff --git a/gcc/testsuite/rust.test/compilable/type_infer6.rs b/gcc/testsuite/rust.test/compile/type_infer6.rs
index f6eac9e..f6eac9e 100644
--- a/gcc/testsuite/rust.test/compilable/type_infer6.rs
+++ b/gcc/testsuite/rust.test/compile/type_infer6.rs
diff --git a/gcc/testsuite/rust.test/compilable/unary_operators.rs b/gcc/testsuite/rust.test/compile/unary_operators.rs
index 1ed9666..1ed9666 100644
--- a/gcc/testsuite/rust.test/compilable/unary_operators.rs
+++ b/gcc/testsuite/rust.test/compile/unary_operators.rs
diff --git a/gcc/testsuite/rust.test/compilable/unit_type1.rs b/gcc/testsuite/rust.test/compile/unit_type1.rs
index ea1ebb3..ea1ebb3 100644
--- a/gcc/testsuite/rust.test/compilable/unit_type1.rs
+++ b/gcc/testsuite/rust.test/compile/unit_type1.rs
diff --git a/gcc/testsuite/rust.test/compilable/unused1.rs b/gcc/testsuite/rust.test/compile/unused1.rs
index cb50188..cb50188 100644
--- a/gcc/testsuite/rust.test/compilable/unused1.rs
+++ b/gcc/testsuite/rust.test/compile/unused1.rs
diff --git a/gcc/testsuite/rust.test/compilable/usize1.rs b/gcc/testsuite/rust.test/compile/usize1.rs
index 0df0a85..0df0a85 100644
--- a/gcc/testsuite/rust.test/compilable/usize1.rs
+++ b/gcc/testsuite/rust.test/compile/usize1.rs
diff --git a/gcc/testsuite/rust.test/execute/empty_main.rs b/gcc/testsuite/rust.test/execute/empty_main.rs
new file mode 100644
index 0000000..6442e1e
--- /dev/null
+++ b/gcc/testsuite/rust.test/execute/empty_main.rs
@@ -0,0 +1,3 @@
+fn main() -> i32 {
+ 0
+}
diff --git a/gcc/testsuite/rust.test/execute/execute.exp b/gcc/testsuite/rust.test/execute/execute.exp
new file mode 100644
index 0000000..d4e9949
--- /dev/null
+++ b/gcc/testsuite/rust.test/execute/execute.exp
@@ -0,0 +1,35 @@
+# Copyright (C) 2021 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/>.
+
+#
+# Rust torture test suite.
+#
+
+# Load support procs.
+load_lib rust-dg.exp
+
+# Initialize `dg'.
+dg-init
+
+# Main loop.
+set saved-dg-do-what-default ${dg-do-what-default}
+
+set dg-do-what-default "run"
+gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.rs]] "" "-w"
+set dg-do-what-default ${saved-dg-do-what-default}
+
+# All done.
+dg-finish
diff --git a/gcc/testsuite/rust.test/execute/exit_error.rs b/gcc/testsuite/rust.test/execute/exit_error.rs
new file mode 100644
index 0000000..02f0c8b
--- /dev/null
+++ b/gcc/testsuite/rust.test/execute/exit_error.rs
@@ -0,0 +1,5 @@
+// { dg-xfail-run-if "" { *-*-* } }
+// { dg-excess-errors "Noisy debug print" }
+fn main() -> i32 {
+ 1
+}
diff --git a/gcc/testsuite/rust.test/fail_compilation/arrays1.rs b/gcc/testsuite/rust.test/fail_compilation/arrays1.rs
deleted file mode 100644
index 797f1ca..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/arrays1.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-fn main() {
- let xs: [i32; 5] = [1, 2, 3, 4, 5];
- let a: bool = xs[0];
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/arrays2.rs b/gcc/testsuite/rust.test/fail_compilation/arrays2.rs
deleted file mode 100644
index 9ecf322..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/arrays2.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-fn main() {
- let array: [i32; 5] = [1, 2, 3];
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/bad_type1.rs b/gcc/testsuite/rust.test/fail_compilation/bad_type1.rs
deleted file mode 100644
index 83e16f3..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/bad_type1.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-fn main() {
- let logical: bool = 123;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/break1.rs b/gcc/testsuite/rust.test/fail_compilation/break1.rs
deleted file mode 100644
index 401a575..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/break1.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-fn main() {
- let a;
- a = 1;
- break a;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/break2.rs b/gcc/testsuite/rust.test/fail_compilation/break2.rs
deleted file mode 100644
index 53cee9a..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/break2.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-fn main() {
- let mut a = 1;
- let mut b = 1;
-
- let mut c;
- while b > 10 {
- if (b == 2) {
- break b;
- }
- c = a + b;
- a = b;
- b = c;
- }
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/continue1.rs b/gcc/testsuite/rust.test/fail_compilation/continue1.rs
deleted file mode 100644
index 2ec25a4..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/continue1.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-fn main() {
- let mut a = 1;
- let mut b = 1;
-
- let _fib = {
- continue;
- 123
- };
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/func1.rs b/gcc/testsuite/rust.test/fail_compilation/func1.rs
deleted file mode 100644
index 5578c27..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/func1.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-fn test(x: i32) -> bool {
- return x + 1;
-}
-
-fn main() {
- let an_integer = 5;
-
- let call_test = test(1);
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/func2.rs b/gcc/testsuite/rust.test/fail_compilation/func2.rs
deleted file mode 100644
index eae433a..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/func2.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-fn test(a: i32, b: i32) -> i32 {
- a + b
-}
-
-fn main() {
- let a = test(1);
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/func3.rs b/gcc/testsuite/rust.test/fail_compilation/func3.rs
deleted file mode 100644
index 781caf7..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/func3.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-fn test(a: i32, b: i32) -> i32 {
- a + b
-}
-
-fn main() {
- let a = test(1, true);
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/generics1.rs b/gcc/testsuite/rust.test/fail_compilation/generics1.rs
deleted file mode 100644
index 71ff7d6..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/generics1.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-struct GenericStruct<T>(T, usize);
-
-fn main() {
- let a2: GenericStruct<i8>;
- a2 = GenericStruct::<_>(1, 456);
-
- let b2: i32 = a2.0;
- let c2: usize = a2.1;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/generics2.rs b/gcc/testsuite/rust.test/fail_compilation/generics2.rs
deleted file mode 100644
index 7fe09e7..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/generics2.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-struct GenericStruct<T>(T, usize);
-
-fn main() {
- let a2: GenericStruct<i8>;
- a2 = GenericStruct(1, 456);
-
- let b2: i32 = a2.0;
- let c2: usize = a2.1;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/generics3.rs b/gcc/testsuite/rust.test/fail_compilation/generics3.rs
deleted file mode 100644
index 80ccdec..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/generics3.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-struct GenericStruct<T>(T, usize);
-
-fn main() {
- let a2;
- a2 = GenericStruct::<i8>(1, 456);
-
- let b2: i32 = a2.0;
- let c2: usize = a2.1;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/generics5.rs b/gcc/testsuite/rust.test/fail_compilation/generics5.rs
deleted file mode 100644
index ef8250b..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/generics5.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-struct GenericStruct<T>(T, usize);
-
-fn main() {
- let a2;
- a2 = GenericStruct::<i8, T>(1, 456);
-
- let b2: i32 = a2.0;
- let c2: usize = a2.1;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/immutable1.rs b/gcc/testsuite/rust.test/fail_compilation/immutable1.rs
deleted file mode 100644
index 5713d3b1..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/immutable1.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-static x: i32 = 3;
-
-fn main() {
- x = 1;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/immutable2.rs b/gcc/testsuite/rust.test/fail_compilation/immutable2.rs
deleted file mode 100644
index e316e72..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/immutable2.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-const TEST_CONST: i32 = 10;
-
-fn main() {
- TEST_CONST = 1;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/immutable3.rs b/gcc/testsuite/rust.test/fail_compilation/immutable3.rs
deleted file mode 100644
index b310193..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/immutable3.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-fn main() {
- let a = 1;
- a += 2;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/immutable4.rs b/gcc/testsuite/rust.test/fail_compilation/immutable4.rs
deleted file mode 100644
index d2e740f..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/immutable4.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-fn main() {
- let array: [i32; 3] = [0; 3];
- array[0] = 1;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/missing_return1.rs b/gcc/testsuite/rust.test/fail_compilation/missing_return1.rs
deleted file mode 100644
index 500d007..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/missing_return1.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-fn test1() -> i32 {}
-
-fn main() {
- let call1 = test1();
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/redef_error1.rs b/gcc/testsuite/rust.test/fail_compilation/redef_error1.rs
deleted file mode 100644
index 9acdf5f..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/redef_error1.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-struct S1 {
- x: f64,
- y: f64,
-}
-
-struct S1(i32, bool);
-
-fn main() {}
diff --git a/gcc/testsuite/rust.test/fail_compilation/redef_error2.rs b/gcc/testsuite/rust.test/fail_compilation/redef_error2.rs
deleted file mode 100644
index c04d2cf..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/redef_error2.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-const TEST: i32 = 2;
-const TEST: f32 = 3.0;
-
-fn main() {}
diff --git a/gcc/testsuite/rust.test/fail_compilation/redef_error3.rs b/gcc/testsuite/rust.test/fail_compilation/redef_error3.rs
deleted file mode 100644
index 9ffa4e5..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/redef_error3.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-fn test() -> bool {
- true
-}
-
-fn test() -> i32 {
- 123
-}
-
-fn main() {}
diff --git a/gcc/testsuite/rust.test/fail_compilation/redef_error5.rs b/gcc/testsuite/rust.test/fail_compilation/redef_error5.rs
deleted file mode 100644
index 342a67e..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/redef_error5.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-struct Foo(i32, bool);
-
-impl Foo {
- const TEST: i32 = 123;
- const TEST: bool = false;
-}
-
-fn main() {}
diff --git a/gcc/testsuite/rust.test/fail_compilation/shadow1.rs b/gcc/testsuite/rust.test/fail_compilation/shadow1.rs
deleted file mode 100644
index 18c5c58..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/shadow1.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-fn main() {
- let mut x = 5;
- let mut x;
- x = true;
- x = x + 2;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/static_var1.rs b/gcc/testsuite/rust.test/fail_compilation/static_var1.rs
deleted file mode 100644
index d94c8c1..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/static_var1.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-static x = 3;
-
-fn main() {
- let y = x +1;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/struct_init1.rs b/gcc/testsuite/rust.test/fail_compilation/struct_init1.rs
deleted file mode 100644
index 3eadaef..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/struct_init1.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-struct Foo {
- a: f32,
- b: f32,
-}
-
-fn main() {
- let a = Foo { 0: 10.0, 1: 20.0 };
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/tuple1.rs b/gcc/testsuite/rust.test/fail_compilation/tuple1.rs
deleted file mode 100644
index d551365..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/tuple1.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-fn main() {
- let a: (i32, bool) = (123, 123);
- let b;
- b = (456, 5f32);
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/tuple_struct1.rs b/gcc/testsuite/rust.test/fail_compilation/tuple_struct1.rs
deleted file mode 100644
index 0df07d9..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/tuple_struct1.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-struct Foo {
- one: i32,
- two: i32,
-}
-
-fn main() {
- let a = Foo(1, 2);
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/tuple_struct2.rs b/gcc/testsuite/rust.test/fail_compilation/tuple_struct2.rs
deleted file mode 100644
index 6c3c0ab..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/tuple_struct2.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-struct Bar(i32, i32, bool);
-
-fn main() {
- let a = Bar(1, 2);
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/tuple_struct3.rs b/gcc/testsuite/rust.test/fail_compilation/tuple_struct3.rs
deleted file mode 100644
index 832df8b..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/tuple_struct3.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-struct Foo(i32, i32, bool);
-
-fn main() {
- let c = Foo(1, 2f32, true);
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/unary_negation.rs b/gcc/testsuite/rust.test/fail_compilation/unary_negation.rs
deleted file mode 100644
index 476b908..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/unary_negation.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-fn main() {
- let a: i32 = -1;
- let b: i32 = 3 - -1;
- let c: bool = !false;
- let d: i32 = !3;
-
- let e: f32 = -true;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/unary_not.rs b/gcc/testsuite/rust.test/fail_compilation/unary_not.rs
deleted file mode 100644
index f358f0e..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/unary_not.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-fn main() {
- let a: i32 = -1;
- let b: i32 = 3 - -1;
- let c: bool = !false;
- let d: i32 = !3;
-
- let e: f32 = !5f32;
-}
diff --git a/gcc/testsuite/rust.test/fail_compilation/usize1.rs b/gcc/testsuite/rust.test/fail_compilation/usize1.rs
deleted file mode 100644
index 92393e7..0000000
--- a/gcc/testsuite/rust.test/fail_compilation/usize1.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-fn main() {
- let a = [1, 2, 3];
- let b: u32 = 1;
- let c = a[b];
-}
diff --git a/gcc/testsuite/rust.test/rust-test.exp b/gcc/testsuite/rust.test/rust-test.exp
deleted file mode 100644
index 20ebe25..0000000
--- a/gcc/testsuite/rust.test/rust-test.exp
+++ /dev/null
@@ -1,437 +0,0 @@
-# Copyright (C) 2012-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/>.
-
-# Test using the DMD testsuite.
-# Load support procs.
-load_lib rust-dg.exp
-
-#
-# Convert DMD arguments to RUST equivalent
-#
-
-proc rust-convert-args { args } {
- set out ""
-
- foreach arg [split [lindex $args 0] " "] {
- # List of switches kept in ASCII collated order.
- if [string match "-D" $arg] {
- lappend out "-fdoc"
-
- } elseif { [regexp -- {^-I([\w+/-]+)} $arg pattern path] } {
- lappend out "-I$path"
-
- } elseif { [regexp -- {^-J([\w+/-]+)} $arg pattern path] } {
- lappend out "-J$path"
-
- } elseif [string match "-allinst" $arg] {
- lappend out "-fall-instantiations"
-
- } elseif [string match "-betterC" $arg] {
- lappend out "-fno-druntime"
-
- } elseif { [string match "-boundscheck" $arg]
- || [string match "-boundscheck=on" $arg] } {
- lappend out "-fbounds-check"
-
- } elseif { [string match "-boundscheck=off" $arg]
- || [string match "-noboundscheck" $arg] } {
- lappend out "-fno-bounds-check"
-
- } elseif [string match "-boundscheck=safeonly" $arg] {
- lappend out "-fbounds-check=safeonly"
-
- } elseif [string match "-c" $arg] {
- lappend out "-c"
-
- } elseif [string match "-d" $arg] {
- lappend out "-Wno-deprecated"
-
- } elseif [string match "-de" $arg] {
- lappend out "-Wdeprecated"
- lappend out "-Werror"
-
- } elseif [string match "-debug" $arg] {
- lappend out "-fdebug"
-
- } elseif [regexp -- {^-debug=(\w+)} $arg pattern value] {
- lappend out "-fdebug=$value"
-
- } elseif [string match "-dip1000" $arg] {
- lappend out "-ftransition=dip1000"
-
- } elseif [string match "-dip25" $arg] {
- lappend out "-ftransition=dip25"
-
- } elseif [string match "-dw" $arg] {
- lappend out "-Wdeprecated"
- lappend out "-Wno-error"
-
- } elseif [string match "-fPIC" $arg] {
- lappend out "-fPIC"
-
- } elseif { [string match "-g" $arg]
- || [string match "-gc" $arg] } {
- lappend out "-g"
-
- } elseif [string match "-inline" $arg] {
- lappend out "-finline-functions"
-
- } elseif [string match "-main" $arg] {
- lappend out "-fmain"
-
- } elseif [regexp -- {^-mv=([\w+=./-]+)} $arg pattern value] {
- lappend out "-fmodule-file=$value"
-
- } elseif [string match "-O" $arg] {
- lappend out "-O2"
-
- } elseif [string match "-release" $arg] {
- lappend out "-frelease"
-
- } elseif [regexp -- {^-transition=(\w+)} $arg pattern value] {
- lappend out "-ftransition=$value"
-
- } elseif [string match "-unittest" $arg] {
- lappend out "-funittest"
-
- } elseif [string match "-verrors=spec" $arg] {
- lappend out "-Wspeculative"
-
- } elseif [regexp -- {^-verrors=(\d+)} $arg pattern num] {
- lappend out "-fmax-errors=$num"
-
- } elseif [regexp -- {^-version=(\w+)} $arg pattern value] {
- lappend out "-fversion=$value"
-
- } elseif [string match "-vtls" $arg] {
- lappend out "-ftransition=tls"
-
- } elseif [string match "-w" $arg] {
- lappend out "-Wall"
- lappend out "-Werror"
-
- } elseif [string match "-wi" $arg] {
- lappend out "-Wall"
- lappend out "-Wno-error"
-
- } else {
- # print "Unhandled Argument: $arg"
- }
- }
-
- return $out
-}
-
-proc rust-copy-extra { base extra } {
- # Split base, folder/file.
- set type [file dirname $extra]
-
- # print "Filename: $base - $extra"
-
- set fdin [open $base/$extra r]
- fconfigure $fdin -encoding binary
-
- file mkdir $type
- set fdout [open $extra w]
- fconfigure $fdout -encoding binary
-
- while { [gets $fdin copy_line] >= 0 } {
- set out_line $copy_line
- puts $fdout $out_line
- }
-
- close $fdin
- close $fdout
-
- # Remove file once test is finished.
- upvar 2 cleanup_extra_files cleanups
- lappend cleanups $extra
-
- return $extra
-}
-
-#
-# Translate DMD test directives to dejagnu equivalent.
-#
-# COMPILE_SEPARATELY: Not handled.
-# EXECUTE_ARGS: Parameters to add to the execution of the test.
-# COMPILED_IMPORTS: List of modules files that are imported by the main
-# source file that should be included in compilation.
-# Currently handled the same as EXTRA_SOURCES.
-# EXTRA_SOURCES: List of extra sources to build and link along with
-# the test.
-# EXTRA_FILES: List of extra files to copy for the test runs.
-# PERMUTE_ARGS: The set of arguments to permute in multiple compiler
-# invocations. An empty set means only one permutation
-# with no arguments.
-# TEST_OUTPUT: The output expected from the compilation.
-# POST_SCRIPT: Not handled.
-# REQUIRED_ARGS: Arguments to add to the compiler command line.
-# DISABLED: Not handled.
-#
-
-proc dmd2dg { base test } {
- global DEFAULT_DFLAGS
- global PERMUTE_ARGS
- global RUST_EXECUTE_ARGS
-
- set PERMUTE_ARGS $DEFAULT_DFLAGS
- set RUST_EXECUTE_ARGS ""
-
- set extra_sources ""
- set extra_files ""
-
- # Split base, folder/file.
- set type [file dirname $test]
- set name [file tail $test]
-
- print "Filename: $base - $test"
-
- set fdin [open $base/$test r]
- #fconfigure $fdin -encoding binary
-
- file mkdir $type
- set fdout [open $test w]
- #fconfigure $fdout -encoding binary
-
- while { [gets $fdin copy_line] >= 0 } {
- set out_line $copy_line
-
- if [regexp -- {COMPILE_SEPARATELY} $copy_line] {
- # COMPILE_SEPARATELY is not handled.
- regsub -- {COMPILE_SEPARATELY.*$} $copy_line "" out_line
-
- } elseif [regexp -- {DISABLED} $copy_line] {
- # DISABLED is not handled.
- regsub -- {DISABLED.*$} $copy_line "" out_line
-
- } elseif [regexp -- {POST_SCRIPT} $copy_line] {
- # POST_SCRIPT is not handled
- regsub -- {POST_SCRIPT.*$} $copy_line "" out_line
-
- } elseif [regexp -- {PERMUTE_ARGS\s*:\s*(.*)} $copy_line match args] {
- # PERMUTE_ARGS is handled by rust-do-test.
- set PERMUTE_ARGS [rust-convert-args $args]
- regsub -- {PERMUTE_ARGS.*$} $copy_line "" out_line
-
- } elseif [regexp -- {EXECUTE_ARGS\s*:\s*(.*)} $copy_line match args] {
- # EXECUTE_ARGS is handled by rust_load.
- foreach arg $args {
- lappend RUST_EXECUTE_ARGS $arg
- }
- regsub -- {EXECUTE_ARGS.*$} $copy_line "" out_line
-
- } elseif [regexp -- {REQUIRED_ARGS\s*:\s*(.*)} $copy_line match args] {
- # Convert all listed arguments to from dmd to rust-style.
- set new_option "{ dg-additional-options \"[rust-convert-args $args]\" }"
- regsub -- {REQUIRED_ARGS.*$} $copy_line $new_option out_line
-
- } elseif [regexp -- {EXTRA_SOURCES\s*:\s*(.*)} $copy_line match sources] {
- # EXTRA_SOURCES are appended to extra_sources list
- foreach srcfile $sources {
- lappend extra_sources $srcfile
- }
- regsub -- {EXTRA_SOURCES.*$} $copy_line "" out_line
-
- } elseif [regexp -- {EXTRA_CPP_SOURCES\s*:\s*(.*)} $copy_line match sources] {
- # EXTRA_CPP_SOURCES are appended to extra_sources list
- foreach srcfile $sources {
- # C++ sources are found in the extra-files directory.
- lappend extra_sources "extra-files/$srcfile"
- }
- regsub -- {EXTRA_CPP_SOURCES.*$} $copy_line "" out_line
-
- } elseif [regexp -- {EXTRA_FILES\s*:\s*(.*)} $copy_line match files] {
- # EXTRA_FILES are appended to extra_files list
- foreach file $files {
- lappend extra_files $file
- }
- regsub -- {EXTRA_FILES.*$} $copy_line "" out_line
-
- } elseif [regexp -- {COMPILED_IMPORTS\s*:\s*(.*)} $copy_line match sources] {
- # COMPILED_IMPORTS are appended to extra_sources list
- foreach import $sources {
- lappend extra_sources $import
- }
- regsub -- {COMPILED_IMPORTS.*$} $copy_line "" out_line
-
- }
-
- puts $fdout $out_line
- }
-
- # Now that all extra sources and files have been collected, copy them all
- # to the testsuite build directory.
- if { [llength $extra_sources] > 0 } {
- foreach srcfile $extra_sources {
- rust-copy-extra $base "$type/$srcfile"
- }
- set out_line "// { dg-additional-sources \"$extra_sources\" }"
- puts $fdout $out_line
- }
-
- if { [llength $extra_files] > 0 } {
- foreach file $extra_files {
- rust-copy-extra $base "$type/$file"
- }
- set out_line "// { dg-additional-files \"$extra_files\" }"
- puts $fdout $out_line
- }
-
- # Add specific options for test type
-
- # DMD's testsuite is extremely verbose, compiler messages from constructs
- # such as pragma(msg, ...) would otherwise cause tests to fail.
- set out_line "// { dg-prune-output .* }"
- puts $fdout $out_line
-
- # Compilable files are successful if an output is generated.
- # Fail compilable are successful if an output is not generated.
- # Runnable must compile, link, and return 0 to be successful by default.
- switch $type {
- runnable {
- if ![isnative] {
- set out_line "// { dg-final { output-exists } }"
- puts $fdout $out_line
- }
- }
-
- compilable {
- puts $fdout "// { dg-final { output-exists } }"
- }
-
- fail_compilation {
- puts $fdout "// { dg-do compile }"
- puts $fdout "// { dg-final { output-exists-not } }"
- }
- }
-
- close $fdin
- close $fdout
-
- return $test
-}
-
-
-proc rust-permute-options { options } {
- set result { }
- set n [expr 1<<[llength $options]]
- for { set i 0 } { $i<$n } { incr i } {
- set option ""
- for { set j 0 } { $j<[llength $options] } { incr j } {
- if [expr $i & 1 << $j] {
- append option [lindex $options $j]
- append option " "
- }
- }
- lappend result $option
-
- }
- return $result
-}
-
-
-proc rust-do-test { } {
- global srcdir subdir
- global dg-do-what-default
- global verbose
-
- # If a testcase doesn't have special options, use these.
- global DEFAULT_DFLAGS
- if ![info exists DEFAULT_DFLAGS] then {
- set DEFAULT_DFLAGS "-g -O2"
- }
-
- # These are special options to use on testcase, and override DEFAULT_DFLAGS
- global PERMUTE_ARGS
-
- # Set if an extra option should be passed to link to shared druntime.
- global SHARED_OPTION
-
- # Additional arguments for rust_load
- global RUST_EXECUTE_ARGS
-
- # Initialize `dg'.
- dg-init
-
- # Allow blank linkes in output for all of rust.test.
- global allow_blank_lines
- set save_allow_blank_lines $allow_blank_lines
- if { !$allow_blank_lines } {
- set allow_blank_lines 2
- }
-
- # Create rust.test link so test names include that subdir.
- catch { file link $subdir . }
-
- # Main loop.
-
- # set verbose 1
- # set dg-final-code ""
- # Find all tests and pass to routine.
- foreach test [lsort [find $srcdir/$subdir *]] {
- regexp -- "(.*)/(.+)/(.+)\.rs$" $test match base dir name ext
- set ext "rs"
-
- # Skip invalid test extensions
- if { [lsearch "rs" $ext] == -1 } {
- continue
- }
-
- # Convert to DG test.
- set imports [format "-I%s/%s" $base $dir]
- set cleanup_extra_files ""
- # Include $subdir prefix so test names follow DejaGnu conventions.
- set filename "$subdir/[dmd2dg $base $dir/$name.$ext]"
-
- if { $dir == "runnable" } {
- append PERMUTE_ARGS " $SHARED_OPTION"
- }
- set options [rust-permute-options [lsort -unique $PERMUTE_ARGS]]
-
- switch $dir {
- compilable {
- for { set i 0 } { $i<[llength $options] } { incr i } {
- set flags [lindex $options $i]
- set dg-do-what-default "compile"
- rust-dg-runtest $filename $flags $imports
- }
- }
-
- fail_compilation {
- for { set i 0 } { $i<[llength $options] } { incr i } {
- set flags [lindex $options $i]
- set dg-do-what-default "compile"
- rust-dg-runtest $filename $flags $imports
- }
- }
- }
-
- # Cleanup test directory.
- foreach srcfile $cleanup_extra_files {
- file delete $subdir/$srcfile
- }
- file delete $filename
- }
-
- set allow_blank_lines $save_allow_blank_lines
-
- # All done.
- dg-finish
-}
-
-rust-do-test
-
diff --git a/gcc/testsuite/rust.test/xfail_compile/arrays1.rs b/gcc/testsuite/rust.test/xfail_compile/arrays1.rs
new file mode 100644
index 0000000..ee844a6
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/arrays1.rs
@@ -0,0 +1,5 @@
+fn main() {
+ let xs: [i32; 5] = [1, 2, 3, 4, 5];
+ let a: bool = xs[0]; // { dg-error "expected .bool. got .i32." }
+ // { dg-error "failure in setting up let stmt type" "" { target { *-*-* } } .-1 }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/arrays2.rs b/gcc/testsuite/rust.test/xfail_compile/arrays2.rs
new file mode 100644
index 0000000..69d362d
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/arrays2.rs
@@ -0,0 +1,5 @@
+fn main() {
+ let array: [i32; 5] = [1, 2, 3]; // { dg-error "mismatch in array capacity" }
+ // { dg-error "expected ..i32:5.. got ..i32:3.." "" { target { *-*-* } } .-1 }
+ // { dg-error "failure in setting up let stmt type" "" { target { *-*-* } } .-2 }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/bad_type1.rs b/gcc/testsuite/rust.test/xfail_compile/bad_type1.rs
new file mode 100644
index 0000000..336661e
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/bad_type1.rs
@@ -0,0 +1,4 @@
+fn main() {
+ let logical: bool = 123; // { dg-error "expected .bool. got .<integer>." }
+ // { dg-error "failure in setting up let stmt type" "" { target { *-*-* } } .-1 }
+}
diff --git a/gcc/testsuite/rust.test/fail_compilation/bad_type2.rs b/gcc/testsuite/rust.test/xfail_compile/bad_type2.rs
index f1e17ed..b596189 100644
--- a/gcc/testsuite/rust.test/fail_compilation/bad_type2.rs
+++ b/gcc/testsuite/rust.test/xfail_compile/bad_type2.rs
@@ -8,7 +8,8 @@ fn main() {
let mut x;
x = 1;
- x = true;
+ x = true; // { dg-error "expected .<integer>. got .bool." }
+ // { dg-error "type resolution failure in AssignmentExpr" "" { target { *-*-* } } .-1 }
let call_test = test(1);
}
diff --git a/gcc/testsuite/rust.test/xfail_compile/break1.rs b/gcc/testsuite/rust.test/xfail_compile/break1.rs
new file mode 100644
index 0000000..be3c9e8
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/break1.rs
@@ -0,0 +1,7 @@
+// { dg-excess-errors "Noisy error and debug" }
+fn main() { // { dg-error "expected .... got .<tyty::error>." }
+ let a;
+ a = 1;
+ break a; // { dg-error "cannot `break` outside of a loop"
+ // { dg-error "failed to type resolve expression" "" { target { *-*-* } } .-1 }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/break2.rs b/gcc/testsuite/rust.test/xfail_compile/break2.rs
new file mode 100644
index 0000000..da7fa77
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/break2.rs
@@ -0,0 +1,16 @@
+// { dg-excess-errors "Noisy error and debug" }
+fn main() {
+ let mut a = 1;
+ let mut b = 1;
+
+ let mut c;
+ while b > 10 {
+ if (b == 2) {
+ break b; // { dg-error "can only break with a value inside `loop`"
+ // { dg-error "failed to type resolve expression" "" { target { *-*-* } } .-1 }
+ }
+ c = a + b;
+ a = b;
+ b = c;
+ }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/continue1.rs b/gcc/testsuite/rust.test/xfail_compile/continue1.rs
new file mode 100644
index 0000000..de48ef2
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/continue1.rs
@@ -0,0 +1,11 @@
+// { dg-excess-errors "Noisy error and debug" }
+fn main() {
+ let mut a = 1;
+ let mut b = 1;
+
+ let _fib = {
+ continue; // { dg-error "cannot `continue` outside of a loop" }
+ // { dg-error "failed to type resolve expression" "" { target { *-*-* } } .-1 }
+ 123
+ };
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/func1.rs b/gcc/testsuite/rust.test/xfail_compile/func1.rs
new file mode 100644
index 0000000..7c1ce52
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/func1.rs
@@ -0,0 +1,9 @@
+fn test(x: i32) -> bool { // { dg-error "expected .bool. got .<tyty::error>.." }
+ return x + 1; // { dg-error "expected .bool. got .i32." }
+}
+
+fn main() {
+ let an_integer = 5;
+
+ let call_test = test(1);
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/func2.rs b/gcc/testsuite/rust.test/xfail_compile/func2.rs
new file mode 100644
index 0000000..1a8a30b
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/func2.rs
@@ -0,0 +1,10 @@
+// { dg-excess-errors "Noisy error and debug" }
+fn test(a: i32, b: i32) -> i32 {
+ a + b
+}
+
+fn main() {
+ let a = test(1); // { dg-error "unexpected number of arguments 1 expected 2"
+ // { dg-error "failed to lookup type to CallExpr" "" { target { *-*-* } } .-1 }
+ // { dg-error "failed to type resolve expression" "" { target { *-*-* } } .-2 }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/func3.rs b/gcc/testsuite/rust.test/xfail_compile/func3.rs
new file mode 100644
index 0000000..6cedf8e
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/func3.rs
@@ -0,0 +1,7 @@
+fn test(a: i32, b: i32) -> i32 {
+ a + b
+}
+
+fn main() {
+ let a = test(1, true); // { dg-error "expected .i32. got .bool." }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/generics1.rs b/gcc/testsuite/rust.test/xfail_compile/generics1.rs
new file mode 100644
index 0000000..7f2493d
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/generics1.rs
@@ -0,0 +1,11 @@
+// { dg-error "expected .i32. got .i8." "" { target { *-*-* } } 0 }
+
+struct GenericStruct<T>(T, usize);
+
+fn main() {
+ let a2: GenericStruct<i8>;
+ a2 = GenericStruct::<_>(1, 456);
+
+ let b2: i32 = a2.0; // { dg-error "failure in setting up let stmt type" }
+ let c2: usize = a2.1;
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/generics2.rs b/gcc/testsuite/rust.test/xfail_compile/generics2.rs
new file mode 100644
index 0000000..d7a1b50
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/generics2.rs
@@ -0,0 +1,11 @@
+// { dg-error "expected .i32. got .i8." "" { target { *-*-* } } 0 }
+
+struct GenericStruct<T>(T, usize);
+
+fn main() {
+ let a2: GenericStruct<i8>;
+ a2 = GenericStruct(1, 456);
+
+ let b2: i32 = a2.0; // { dg-error "failure in setting up let stmt type" }
+ let c2: usize = a2.1;
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/generics3.rs b/gcc/testsuite/rust.test/xfail_compile/generics3.rs
new file mode 100644
index 0000000..14bcc59
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/generics3.rs
@@ -0,0 +1,10 @@
+// { dg-error "expected .i32. got .i8." "" { target { *-*-* } } 0 }
+struct GenericStruct<T>(T, usize);
+
+fn main() {
+ let a2;
+ a2 = GenericStruct::<i8>(1, 456);
+
+ let b2: i32 = a2.0; // { dg-error "failure in setting up let stmt type" }
+ let c2: usize = a2.1;
+}
diff --git a/gcc/testsuite/rust.test/fail_compilation/generics4.rs b/gcc/testsuite/rust.test/xfail_compile/generics4.rs
index 2052ce6..8097832 100644
--- a/gcc/testsuite/rust.test/fail_compilation/generics4.rs
+++ b/gcc/testsuite/rust.test/xfail_compile/generics4.rs
@@ -1,3 +1,4 @@
+// { dg-excess-errors "Noisy error and debug" }
struct GenericStruct<T>(T, usize);
fn main() {
diff --git a/gcc/testsuite/rust.test/xfail_compile/generics5.rs b/gcc/testsuite/rust.test/xfail_compile/generics5.rs
new file mode 100644
index 0000000..5b03bd9
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/generics5.rs
@@ -0,0 +1,13 @@
+// Current errors are too noisy to match specific ones.
+// { dg-error "failed to resolve TypePath: T" "" { target { *-*-* } } 0 }
+// { dg-error "unresolved type" "" { target { *-*-* } } 0 }
+
+struct GenericStruct<T>(T, usize);
+
+fn main() {
+ let a2;
+ a2 = GenericStruct::<i8, T>(1, 456);
+
+ let b2: i32 = a2.0;
+ let c2: usize = a2.1;
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/immutable1.rs b/gcc/testsuite/rust.test/xfail_compile/immutable1.rs
new file mode 100644
index 0000000..d78c1b7
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/immutable1.rs
@@ -0,0 +1,5 @@
+static x: i32 = 3;
+
+fn main() {
+ x = 1; /* { dg-error "cannot assign to immutable" } */
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/immutable2.rs b/gcc/testsuite/rust.test/xfail_compile/immutable2.rs
new file mode 100644
index 0000000..86e70fe
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/immutable2.rs
@@ -0,0 +1,5 @@
+const TEST_CONST: i32 = 10;
+
+fn main() {
+ TEST_CONST = 1; // { dg-error "cannot assign to immutable" }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/immutable3.rs b/gcc/testsuite/rust.test/xfail_compile/immutable3.rs
new file mode 100644
index 0000000..fb60280
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/immutable3.rs
@@ -0,0 +1,4 @@
+fn main() {
+ let a = 1;
+ a += 2; // { dg-error "cannot assign to immutable" }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/immutable4.rs b/gcc/testsuite/rust.test/xfail_compile/immutable4.rs
new file mode 100644
index 0000000..fb14554
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/immutable4.rs
@@ -0,0 +1,4 @@
+fn main() {
+ let array: [i32; 3] = [0; 3];
+ array[0] = 1; // { dg-error "cannot assign to immutable" }
+}
diff --git a/gcc/testsuite/rust.test/fail_compilation/immutable5.rs b/gcc/testsuite/rust.test/xfail_compile/immutable5.rs
index c442ba5..db23609 100644
--- a/gcc/testsuite/rust.test/fail_compilation/immutable5.rs
+++ b/gcc/testsuite/rust.test/xfail_compile/immutable5.rs
@@ -2,5 +2,5 @@ struct Foo(f32, i32);
fn main() {
let a = Foo(1, 2);
- a.0 = 22;
+ a.0 = 22; // { dg-error "cannot assign to immutable" }
}
diff --git a/gcc/testsuite/rust.test/fail_compilation/implicit_returns_err1.rs b/gcc/testsuite/rust.test/xfail_compile/implicit_returns_err1.rs
index b450e18..37eb562 100644
--- a/gcc/testsuite/rust.test/fail_compilation/implicit_returns_err1.rs
+++ b/gcc/testsuite/rust.test/xfail_compile/implicit_returns_err1.rs
@@ -1,3 +1,5 @@
+// { dg-error "expected .* got .*" "" { target { *-*-* } } 0 }
+
fn test(x: i32) -> i32 {
if x > 1 {
1
diff --git a/gcc/testsuite/rust.test/fail_compilation/implicit_returns_err2.rs b/gcc/testsuite/rust.test/xfail_compile/implicit_returns_err2.rs
index b5fbd0a..3b9a402 100644
--- a/gcc/testsuite/rust.test/fail_compilation/implicit_returns_err2.rs
+++ b/gcc/testsuite/rust.test/xfail_compile/implicit_returns_err2.rs
@@ -1,3 +1,5 @@
+// { dg-error "expected .* got .*" "" { target { *-*-* } } 0 }
+
fn test(x: i32) -> i32 {
return 1;
true
diff --git a/gcc/testsuite/rust.test/fail_compilation/implicit_returns_err3.rs b/gcc/testsuite/rust.test/xfail_compile/implicit_returns_err3.rs
index a83385e..2a64fcf 100644
--- a/gcc/testsuite/rust.test/fail_compilation/implicit_returns_err3.rs
+++ b/gcc/testsuite/rust.test/xfail_compile/implicit_returns_err3.rs
@@ -1,3 +1,4 @@
+// { dg-error "expected .* got .*" "" { target { *-*-* } } 0 }
fn test(x: i32) -> i32 {
if x > 1 {
1
diff --git a/gcc/testsuite/rust.test/xfail_compile/missing_return1.rs b/gcc/testsuite/rust.test/xfail_compile/missing_return1.rs
new file mode 100644
index 0000000..d4ed4d9
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/missing_return1.rs
@@ -0,0 +1,6 @@
+// { dg-error "expected .* got .*" "" { target { *-*-* } } 0 }
+fn test1() -> i32 {}
+
+fn main() {
+ let call1 = test1();
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/redef_error1.rs b/gcc/testsuite/rust.test/xfail_compile/redef_error1.rs
new file mode 100644
index 0000000..cc25b76
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/redef_error1.rs
@@ -0,0 +1,9 @@
+// { dg-excess-errors "Noisy error and debug" }
+struct S1 { // { dg-error "was defined here" }
+ x: f64,
+ y: f64,
+}
+
+struct S1(i32, bool); // { dg-error "redefined multiple times" }
+
+fn main() {}
diff --git a/gcc/testsuite/rust.test/xfail_compile/redef_error2.rs b/gcc/testsuite/rust.test/xfail_compile/redef_error2.rs
new file mode 100644
index 0000000..3e7e62f
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/redef_error2.rs
@@ -0,0 +1,5 @@
+// { dg-excess-errors "Noisy error and debug" }
+const TEST: i32 = 2; // { dg-error "was defined here" }
+const TEST: f32 = 3.0; // { dg-error "redefined multiple times" }
+
+fn main() {}
diff --git a/gcc/testsuite/rust.test/xfail_compile/redef_error3.rs b/gcc/testsuite/rust.test/xfail_compile/redef_error3.rs
new file mode 100644
index 0000000..6be31e6
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/redef_error3.rs
@@ -0,0 +1,10 @@
+// { dg-excess-errors "Noisy error and debug" }
+fn test() -> bool { // { dg-error "was defined here" }
+ true
+}
+
+fn test() -> i32 { // { dg-error "redefined multiple times" }
+ 123
+}
+
+fn main() {}
diff --git a/gcc/testsuite/rust.test/fail_compilation/redef_error4.rs b/gcc/testsuite/rust.test/xfail_compile/redef_error4.rs
index 5b20e1b..21f3415 100644
--- a/gcc/testsuite/rust.test/fail_compilation/redef_error4.rs
+++ b/gcc/testsuite/rust.test/xfail_compile/redef_error4.rs
@@ -1,3 +1,5 @@
+// { dg-excess-errors "Noisy error and debug" }
+
struct Foo(i32, bool);
impl Foo {
@@ -5,11 +7,11 @@ impl Foo {
Foo(a, b)
}
- fn test() -> i32 {
+ fn test() -> i32 { // { dg-error "was defined here" }
test()
}
- fn test() -> bool {
+ fn test() -> bool { // { dg-error "redefined multiple times" }
true
}
}
diff --git a/gcc/testsuite/rust.test/xfail_compile/redef_error5.rs b/gcc/testsuite/rust.test/xfail_compile/redef_error5.rs
new file mode 100644
index 0000000..4b3c7af
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/redef_error5.rs
@@ -0,0 +1,9 @@
+// { dg-excess-errors "Noisy error and debug" }
+struct Foo(i32, bool);
+
+impl Foo {
+ const TEST: i32 = 123; // { dg-error "was defined here" }
+ const TEST: bool = false; // { dg-error "redefined multiple times" }
+}
+
+fn main() {}
diff --git a/gcc/testsuite/rust.test/xfail_compile/shadow1.rs b/gcc/testsuite/rust.test/xfail_compile/shadow1.rs
new file mode 100644
index 0000000..35779bb
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/shadow1.rs
@@ -0,0 +1,7 @@
+// { dg-excess-errors "Noisy error and debug" }
+fn main() {
+ let mut x = 5;
+ let mut x;
+ x = true;
+ x = x + 2; // { dg-error "cannot apply this operator to types bool and <integer>" }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/static_var1.rs b/gcc/testsuite/rust.test/xfail_compile/static_var1.rs
new file mode 100644
index 0000000..b3b5751
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/static_var1.rs
@@ -0,0 +1,5 @@
+static x = 3; // { dg-error "expecting ':' but '=' found" }
+
+fn main() {// { dg-error "failed to parse item in crate" }
+ let y = x +1;
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/struct_init1.rs b/gcc/testsuite/rust.test/xfail_compile/struct_init1.rs
new file mode 100644
index 0000000..87ed443
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/struct_init1.rs
@@ -0,0 +1,9 @@
+struct Foo {
+ a: f32,
+ b: f32,
+}
+
+fn main() {
+ let a = Foo { 0: 10.0, 1: 20.0 }; // { dg-error "failed to resolve type for field" }
+ // { dg-error "unknown field" "" { target { *-*-* } } .-1 }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/tuple1.rs b/gcc/testsuite/rust.test/xfail_compile/tuple1.rs
new file mode 100644
index 0000000..84179b1
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/tuple1.rs
@@ -0,0 +1,5 @@
+fn main() {
+ let a: (i32, bool) = (123, 123); // { dg-error "expected .bool. got .<integer>." }
+ let b;
+ b = (456, 5f32);
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/tuple_struct1.rs b/gcc/testsuite/rust.test/xfail_compile/tuple_struct1.rs
new file mode 100644
index 0000000..5e45c1f
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/tuple_struct1.rs
@@ -0,0 +1,10 @@
+struct Foo {
+ one: i32,
+ two: i32,
+}
+
+fn main() {
+ let a = Foo(1, 2); // { dg-error "expected function, tuple struct or tuple variant, found struct `Foo`" }
+ // { dg-error "failed to lookup type to CallExpr" "" { target { *-*-* } } .-1 }
+ // { dg-error "failed to type resolve expression" "" { target { *-*-* } } .-2 }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/tuple_struct2.rs b/gcc/testsuite/rust.test/xfail_compile/tuple_struct2.rs
new file mode 100644
index 0000000..8e2f74b
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/tuple_struct2.rs
@@ -0,0 +1,7 @@
+struct Bar(i32, i32, bool);
+
+fn main() {
+ let a = Bar(1, 2); // { dg-error "unexpected number of arguments 2 expected 3" }
+ // { dg-error "failed to lookup type to CallExpr" "" { target { *-*-* } } .-1 }
+ // { dg-error "failed to type resolve expression" "" { target { *-*-* } } .-2 }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/tuple_struct3.rs b/gcc/testsuite/rust.test/xfail_compile/tuple_struct3.rs
new file mode 100644
index 0000000..c52a610
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/tuple_struct3.rs
@@ -0,0 +1,5 @@
+struct Foo(i32, i32, bool);
+
+fn main() {
+ let c = Foo(1, 2f32, true); // { dg-error "expected .i32. got .f32." }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/unary_negation.rs b/gcc/testsuite/rust.test/xfail_compile/unary_negation.rs
new file mode 100644
index 0000000..1acb853
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/unary_negation.rs
@@ -0,0 +1,10 @@
+// { dg-excess-errors "Noisy error and debug" }
+
+fn main() {
+ let a: i32 = -1;
+ let b: i32 = 3 - -1;
+ let c: bool = !false;
+ let d: i32 = !3;
+
+ let e: f32 = -true; // // { dg-error "cannot apply unary - to bool" }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/unary_not.rs b/gcc/testsuite/rust.test/xfail_compile/unary_not.rs
new file mode 100644
index 0000000..1620b40
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/unary_not.rs
@@ -0,0 +1,9 @@
+// { dg-excess-errors "Noisy error and debug" }
+fn main() {
+ let a: i32 = -1;
+ let b: i32 = 3 - -1;
+ let c: bool = !false;
+ let d: i32 = !3;
+
+ let e: f32 = !5f32; // { dg-error "cannot apply unary ! to f32" }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/usize1.rs b/gcc/testsuite/rust.test/xfail_compile/usize1.rs
new file mode 100644
index 0000000..8c12789
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/usize1.rs
@@ -0,0 +1,5 @@
+fn main() {
+ let a = [1, 2, 3];
+ let b: u32 = 1;
+ let c = a[b]; // { dg-error "expected .usize. got .u32." }
+}
diff --git a/gcc/testsuite/rust.test/xfail_compile/xfail_compile.exp b/gcc/testsuite/rust.test/xfail_compile/xfail_compile.exp
new file mode 100644
index 0000000..68453a1
--- /dev/null
+++ b/gcc/testsuite/rust.test/xfail_compile/xfail_compile.exp
@@ -0,0 +1,36 @@
+# Copyright (C) 2021 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/>.
+
+#
+# Rust test suite.
+# These tests are expected to raise an error in the frontend
+#
+
+# Load support procs.
+load_lib rust-dg.exp
+
+# Initialize `dg'.
+dg-init
+
+# Main loop.
+set saved-dg-do-what-default ${dg-do-what-default}
+
+set dg-do-what-default "compile"
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.rs]] "" "-w"
+set dg-do-what-default ${saved-dg-do-what-default}
+
+# All done.
+dg-finish