1+ use super :: types:: FailureReason ;
12use rayon:: prelude:: * ;
23use std:: process:: Command ;
34
4- enum FailureReason {
5- RunC ( String ) ,
6- RunRust ( String ) ,
7- Difference ( String , String , String ) ,
8- }
9-
105pub fn compare_outputs (
116 intrinsic_name_list : & Vec < String > ,
127 toolchain : & str ,
@@ -18,11 +13,7 @@ pub fn compare_outputs(
1813 . filter_map ( |intrinsic_name| {
1914 let c = Command :: new ( "sh" )
2015 . arg ( "-c" )
21- . arg ( format ! (
22- "{runner} ./c_programs/{intrinsic_name}" ,
23- runner = runner,
24- intrinsic_name = intrinsic_name,
25- ) )
16+ . arg ( format ! ( "{runner} ./c_programs/{intrinsic_name}" ) )
2617 . output ( ) ;
2718
2819 let rust = if target != "aarch64_be-unknown-linux-gnu" {
@@ -31,9 +22,6 @@ pub fn compare_outputs(
3122 . arg ( "-c" )
3223 . arg ( format ! (
3324 "cargo {toolchain} run --target {target} --bin {intrinsic_name} --release" ,
34- intrinsic_name = intrinsic_name,
35- toolchain = toolchain,
36- target = target
3725 ) )
3826 . env ( "RUSTFLAGS" , "-Cdebuginfo=0" )
3927 . output ( )
@@ -42,9 +30,6 @@ pub fn compare_outputs(
4230 . arg ( "-c" )
4331 . arg ( format ! (
4432 "{runner} ./rust_programs/target/{target}/release/{intrinsic_name}" ,
45- runner = runner,
46- target = target,
47- intrinsic_name = intrinsic_name,
4833 ) )
4934 . output ( )
5035 } ;
@@ -55,14 +40,19 @@ pub fn compare_outputs(
5540 } ;
5641
5742 if !c. status . success ( ) {
58- error ! ( "Failed to run C program for intrinsic {}" , intrinsic_name) ;
43+ error ! (
44+ "Failed to run C program for intrinsic {intrinsic_name}\n stdout: {stdout}\n stderr: {stderr}" ,
45+ stdout = std:: str :: from_utf8( & c. stdout) . unwrap_or( "" ) ,
46+ stderr = std:: str :: from_utf8( & c. stderr) . unwrap_or( "" ) ,
47+ ) ;
5948 return Some ( FailureReason :: RunC ( intrinsic_name. clone ( ) ) ) ;
6049 }
6150
6251 if !rust. status . success ( ) {
6352 error ! (
64- "Failed to run rust program for intrinsic {}" ,
65- intrinsic_name
53+ "Failed to run Rust program for intrinsic {intrinsic_name}\n stdout: {stdout}\n stderr: {stderr}" ,
54+ stdout = std:: str :: from_utf8( & rust. stdout) . unwrap_or( "" ) ,
55+ stderr = std:: str :: from_utf8( & rust. stderr) . unwrap_or( "" ) ,
6656 ) ;
6757 return Some ( FailureReason :: RunRust ( intrinsic_name. clone ( ) ) ) ;
6858 }
0 commit comments