@@ -195,7 +195,7 @@ macro_rules! check {
195
195
}
196
196
) *
197
197
198
- mod _compiler_rt {
198
+ mod _test {
199
199
use qc:: * ;
200
200
use std:: mem;
201
201
use quickcheck:: TestResult ;
@@ -207,56 +207,40 @@ macro_rules! check {
207
207
let my_answer = super :: $name( super :: super :: $name,
208
208
$( $arg) ,* ) ;
209
209
let compiler_rt_fn = :: compiler_rt:: get( stringify!( $name) ) ;
210
- unsafe {
211
- let compiler_rt_answer =
212
- super :: $name( mem:: transmute( compiler_rt_fn) ,
213
- $( $arg) ,* ) ;
214
- match ( my_answer, compiler_rt_answer) {
215
- ( None , _) | ( _, None ) => TestResult :: discard( ) ,
216
- ( Some ( a) , Some ( b) ) => {
217
- TestResult :: from_bool( a == b)
218
- }
219
- }
220
- }
221
- }
222
-
223
- :: quickcheck:: quickcheck( my_check as fn ( $( $t) ,* ) -> TestResult )
224
- }
225
- ) *
226
- }
227
-
228
- mod _gcc_s {
229
- use qc:: * ;
230
- use std:: mem;
231
- use quickcheck:: TestResult ;
232
-
233
- $(
234
- #[ test]
235
- fn $name( ) {
236
- fn my_check( $( $arg: $t) ,* ) -> TestResult {
237
- let my_answer = super :: $name( super :: super :: $name,
238
- $( $arg) ,* ) ;
239
- let gcc_s_fn = :: gcc_s:: get( stringify!( $name) ) . unwrap( ) ;
240
- unsafe {
241
- let gcc_s_answer =
242
- super :: $name( mem:: transmute( gcc_s_fn) ,
243
- $( $arg) ,* ) ;
244
- match ( my_answer, gcc_s_answer) {
245
- ( None , _) | ( _, None ) => TestResult :: discard( ) ,
246
- ( Some ( a) , Some ( b) ) => {
247
- TestResult :: from_bool( a == b)
248
- }
249
- }
210
+ let compiler_rt_answer = unsafe {
211
+ super :: $name( mem:: transmute( compiler_rt_fn) ,
212
+ $( $arg) ,* )
213
+ } ;
214
+ let gcc_s_answer =
215
+ match :: gcc_s:: get( stringify!( $name) ) {
216
+ Some ( f) => unsafe {
217
+ Some ( super :: $name( mem:: transmute( f) ,
218
+ $( $arg) ,* ) )
219
+ } ,
220
+ None => None ,
221
+ } ;
222
+
223
+ let print_values = || {
224
+ print!( "{} - Args: " , stringify!( $name) ) ;
225
+ $( print!( "{:?} " , $arg) ; ) *
226
+ print!( "\n " ) ;
227
+ println!( " rustc-builtins: {:?}" , my_answer) ;
228
+ println!( " compiler_rt: {:?}" , compiler_rt_answer) ;
229
+ println!( " gcc_s: {:?}" , gcc_s_answer) ;
230
+ } ;
231
+
232
+ if my_answer != compiler_rt_answer {
233
+ print_values( ) ;
234
+ TestResult :: from_bool( false )
235
+ } else if gcc_s_answer. is_some( ) &&
236
+ my_answer != gcc_s_answer. unwrap( ) {
237
+ print_values( ) ;
238
+ TestResult :: from_bool( false )
239
+ } else {
240
+ TestResult :: from_bool( true )
250
241
}
251
242
}
252
243
253
- // If it's not in libgcc, or we couldn't find libgcc, then
254
- // just ignore this. We should have tests through
255
- // compiler-rt in any case
256
- if :: gcc_s:: get( stringify!( $name) ) . is_none( ) {
257
- return
258
- }
259
-
260
244
:: quickcheck:: quickcheck( my_check as fn ( $( $t) ,* ) -> TestResult )
261
245
}
262
246
) *
0 commit comments