# This checks if -fdump-noaddr dumps are done consistently. proc dump_compare { src options } { global srcdir subdir global tmpdir exec echo $src global torture_with_loops set option_list $torture_with_loops set dumpbase dump-noaddr # ??? passing -dumpbase to the gcc driver doesn't work, since it will pass # another -dumpbase option to override it. # loop through all the options foreach option $option_list { # c-torture-compile ${dumpbase}_1 "$option $options -DMASK=1 -x c -da -fdump-tree-all" # c-torture-compile ${dumpbase}_2 "$option $options -DMASK=2 -x c -da -fdump-tree-all" # c-torture-compile ${dumpbase}_3 "$option $options -DMASK=3 -x c -da -fdump-tree-all" file delete -force dump1 file delete -force dump2 file mkdir dump1 file mkdir dump2 cd dump1 c-torture-compile $src "$option $options -DMASK=1 -x c --param ggc-min-heapsize=1 -da -fdump-tree-all -fdump-noaddr" cd ../dump2 c-torture-compile $src "$option $options -DMASK=2 -x c -da -fdump-tree-all -fdump-noaddr" cd .. foreach dump1 [lsort [glob -nocomplain dump1/*]] { regsub dump1/ $dump1 dump2/ dump2 set dumptail "gcc.c-torture/unsorted/[file tail $dump1]" #puts "$option $dump1" set tmp [ diff "$dump1" "$dump2" ] if { $tmp == 0 } { untested "$dumptail, $option comparison" } elseif { $tmp == 1 } { pass "$dumptail, $option comparison" } else { fail "$dumptail, $option comparison" } #exec diff $dump1 $dump2 } } file delete -force dump1 file delete -force dump2 } catch {dump_compare $src $options} result puts $result verbose result return 1