diff --git a/expected_results.json b/expected_results.json index e9f331d5..203f05be 100644 --- a/expected_results.json +++ b/expected_results.json @@ -1 +1 @@ -{"chapter_6/valid/rh_assignment.c": {"return_code": 1}, "chapter_6/valid/if_nested_2.c": {"return_code": 2}, "chapter_6/valid/if_nested_3.c": {"return_code": 3}, "chapter_6/valid/nested_ternary.c": {"return_code": 7}, "chapter_6/valid/binary_false_condition.c": {"return_code": 0}, "chapter_6/valid/else.c": {"return_code": 2}, "chapter_6/valid/nested_ternary_2.c": {"return_code": 15}, "chapter_6/valid/ternary_short_circuit.c": {"return_code": 1}, "chapter_6/valid/multiple_if.c": {"return_code": 8}, "chapter_6/valid/if_null_body.c": {"return_code": 1}, "chapter_6/valid/ternary_rh_binop.c": {"return_code": 1}, "chapter_6/valid/ternary_middle_assignment.c": {"return_code": 2}, "chapter_6/valid/if_nested_4.c": {"return_code": 4}, "chapter_6/valid/ternary_middle_binop.c": {"return_code": 1}, "chapter_6/valid/if_taken.c": {"return_code": 1}, "chapter_6/valid/if_not_taken.c": {"return_code": 0}, "chapter_6/valid/if_nested_5.c": {"return_code": 1}, "chapter_6/valid/assign_ternary.c": {"return_code": 2}, "chapter_6/valid/ternary.c": {"return_code": 4}, "chapter_6/valid/if_nested.c": {"return_code": 1}, "chapter_6/valid/ternary_short_circuit_2.c": {"return_code": 2}, "chapter_6/valid/binary_condition.c": {"return_code": 5}, "chapter_6/valid/extra_credit/goto_label_and_var.c": {"return_code": 5}, "chapter_6/valid/extra_credit/goto_label_main_2.c": {"return_code": 1}, "chapter_6/valid/extra_credit/bitwise_ternary.c": {"return_code": 5}, "chapter_6/valid/extra_credit/goto_label_main.c": {"return_code": 0}, "chapter_6/valid/extra_credit/goto_nested_label.c": {"return_code": 5}, "chapter_6/valid/extra_credit/goto_backwards.c": {"return_code": 5}, "chapter_6/valid/extra_credit/goto_label.c": {"return_code": 1}, "chapter_6/valid/extra_credit/compound_if_expression.c": {"return_code": 1}, "chapter_6/valid/extra_credit/goto_after_declaration.c": {"return_code": 1}, "chapter_8/valid/for.c": {"return_code": 16}, "chapter_8/valid/continue.c": {"return_code": 1}, "chapter_8/valid/multi_continue_same_loop.c": {"return_code": 1}, "chapter_8/valid/for_absent_post.c": {"return_code": 0}, "chapter_8/valid/null_for_header.c": {"return_code": 4}, "chapter_8/valid/nested_loop.c": {"return_code": 1}, "chapter_8/valid/nested_break.c": {"return_code": 250}, "chapter_8/valid/do_while.c": {"return_code": 16}, "chapter_8/valid/for_absent_condition.c": {"return_code": 0}, "chapter_8/valid/do_while_break_immediate.c": {"return_code": 10}, "chapter_8/valid/continue_empty_post.c": {"return_code": 30}, "chapter_8/valid/nested_continue.c": {"return_code": 24}, "chapter_8/valid/break.c": {"return_code": 1}, "chapter_8/valid/for_nested_shadow.c": {"return_code": 1}, "chapter_8/valid/empty_expression.c": {"return_code": 0}, "chapter_8/valid/multi_break.c": {"return_code": 1}, "chapter_8/valid/for_decl.c": {"return_code": 101}, "chapter_8/valid/for_shadow.c": {"return_code": 1}, "chapter_8/valid/break_immediate.c": {"return_code": 1}, "chapter_8/valid/while.c": {"return_code": 6}, "chapter_8/valid/empty_loop_body.c": {"return_code": 252}, "chapter_8/valid/extra_credit/switch_fallthrough.c": {"return_code": 6}, "chapter_8/valid/extra_credit/compound_assignment_for_loop.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_break.c": {"return_code": 10}, "chapter_8/valid/extra_credit/switch_default.c": {"return_code": 22}, "chapter_8/valid/extra_credit/switch_default_fallthrough.c": {"return_code": 0}, "chapter_8/valid/extra_credit/switch_in_loop.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_no_case.c": {"return_code": 4}, "chapter_8/valid/extra_credit/switch_nested_not_taken.c": {"return_code": 2}, "chapter_8/valid/extra_credit/switch_decl.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_with_continue.c": {"return_code": 5}, "chapter_8/valid/extra_credit/switch_empty.c": {"return_code": 12}, "chapter_8/valid/extra_credit/goto_bypass_condition.c": {"return_code": 10}, "chapter_8/valid/extra_credit/switch_nested_switch.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_default_not_last.c": {"return_code": 0}, "chapter_8/valid/extra_credit/switch_assign_in_condition.c": {"return_code": 2}, "chapter_8/valid/extra_credit/switch.c": {"return_code": 3}, "chapter_8/valid/extra_credit/switch_goto_mid_case.c": {"return_code": 1}, "chapter_14/valid/libraries/static_pointer.c": {"return_code": 0}, "chapter_14/valid/libraries/global_pointer.c": {"return_code": 1}, "chapter_14/valid/function_calls/address_of_argument.c": {"return_code": 0}, "chapter_14/valid/function_calls/update_value_through_pointer_parameter.c": {"return_code": 0}, "chapter_14/valid/function_calls/return_pointer.c": {"return_code": 0}, "chapter_14/valid/extra_credit/compound_assign_through_pointer.c": {"return_code": 0}, "chapter_14/valid/declarators/declare_pointer_in_for_loop.c": {"return_code": 5}, "chapter_14/valid/declarators/abstract_declarators.c": {"return_code": 0}, "chapter_14/valid/declarators/declarators.c": {"return_code": 0}, "chapter_14/valid/dereference/static_var_indirection.c": {"return_code": 0}, "chapter_14/valid/dereference/multilevel_indirection.c": {"return_code": 0}, "chapter_14/valid/dereference/read_through_pointers.c": {"return_code": 0}, "chapter_14/valid/dereference/update_through_pointers.c": {"return_code": 0}, "chapter_14/valid/dereference/address_of_dereference.c": {"return_code": 0}, "chapter_14/valid/dereference/simple.c": {"return_code": 3}, "chapter_14/valid/dereference/dereference_expression_result.c": {"return_code": 0}, "chapter_14/valid/casts/cast_between_pointer_types.c": {"return_code": 0}, "chapter_14/valid/casts/pointer_int_casts.c": {"return_code": 0}, "chapter_14/valid/casts/null_pointer_conversion.c": {"return_code": 0}, "chapter_14/valid/comparisons/compare_pointers.c": {"return_code": 0}, "chapter_14/valid/comparisons/pointers_as_conditions.c": {"return_code": 0}, "chapter_14/valid/comparisons/compare_to_null.c": {"return_code": 0}, "chapter_10/valid/static_then_extern.c": {"return_code": 3}, "chapter_10/valid/push_arg_on_page_boundary.c": {"return_code": 1}, "chapter_10/valid/static_local_multiple_scopes.c": {"return_code": 0, "stdout": "Aa\nBb\nCc\nDd\nEe\nFf\nGg\nHh\nIi\nJj\nKk\nLl\nMm\nNn\nOo\nPp\nQq\nRr\nSs\nTt\nUu\nVv\nWw\nXx\nYy\nZz\n"}, "chapter_10/valid/tentative_definition.c": {"return_code": 5}, "chapter_10/valid/static_variables_in_expressions.c": {"return_code": 0}, "chapter_10/valid/static_recursive_call.c": {"return_code": 0, "stdout": "ABCDEFGHIJKLMNOPQRSTUVWXYZ"}, "chapter_10/valid/shadow_static_local_var.c": {"return_code": 0}, "chapter_10/valid/multiple_static_local.c": {"return_code": 29}, "chapter_10/valid/multiple_static_file_scope_vars.c": {"return_code": 4}, "chapter_10/valid/static_local_uninitialized.c": {"return_code": 4}, "chapter_10/valid/type_before_storage_class.c": {"return_code": 7}, "chapter_10/valid/extern_block_scope_variable.c": {"return_code": 3}, "chapter_10/valid/distinct_local_and_extern.c": {"return_code": 7}, "chapter_10/valid/libraries/internal_hides_external_linkage.c": {"return_code": 0}, "chapter_10/valid/libraries/external_tentative_var.c": {"return_code": 0}, "chapter_10/valid/libraries/external_linkage_function.c": {"return_code": 0}, "chapter_10/valid/libraries/external_variable.c": {"return_code": 0}, "chapter_10/valid/libraries/internal_linkage_var.c": {"return_code": 0}, "chapter_10/valid/libraries/external_var_scoping.c": {"return_code": 0}, "chapter_10/valid/libraries/internal_linkage_function.c": {"return_code": 0}, "chapter_10/valid/extra_credit/goto_skip_static_initializer.c": {"return_code": 10}, "chapter_2/valid/neg.c": {"return_code": 251}, "chapter_2/valid/negate_int_max.c": {"return_code": 1}, "chapter_2/valid/redundant_parens.c": {"return_code": 246}, "chapter_2/valid/neg_zero.c": {"return_code": 0}, "chapter_2/valid/bitwise_int_min.c": {"return_code": 254}, "chapter_2/valid/bitwise_zero.c": {"return_code": 255}, "chapter_2/valid/parens_3.c": {"return_code": 4}, "chapter_2/valid/parens_2.c": {"return_code": 253}, "chapter_2/valid/bitwise.c": {"return_code": 243}, "chapter_2/valid/nested_ops_2.c": {"return_code": 1}, "chapter_2/valid/nested_ops.c": {"return_code": 2}, "chapter_2/valid/parens.c": {"return_code": 254}, "chapter_1/valid/return_0.c": {"return_code": 0}, "chapter_1/valid/newlines.c": {"return_code": 0}, "chapter_1/valid/return_2.c": {"return_code": 2}, "chapter_1/valid/multi_digit.c": {"return_code": 100}, "chapter_1/valid/tabs.c": {"return_code": 0}, "chapter_1/valid/spaces.c": {"return_code": 0}, "chapter_1/valid/no_newlines.c": {"return_code": 0}, "chapter_13/valid/floating_expressions/logical.c": {"return_code": 0}, "chapter_13/valid/floating_expressions/arithmetic_ops.c": {"return_code": 0}, "chapter_13/valid/floating_expressions/static_initialized_double.c": {"return_code": 0}, "chapter_13/valid/floating_expressions/comparisons.c": {"return_code": 0}, "chapter_13/valid/floating_expressions/simple.c": {"return_code": 1}, "chapter_13/valid/floating_expressions/loop_controlling_expression.c": {"return_code": 100}, "chapter_13/valid/libraries/double_parameters.c": {"return_code": 0}, "chapter_13/valid/libraries/use_arg_after_fun_call.c": {"return_code": 4}, "chapter_13/valid/libraries/double_and_int_params_recursive.c": {"return_code": 0}, "chapter_13/valid/libraries/extern_double.c": {"return_code": 1}, "chapter_13/valid/libraries/double_params_and_result.c": {"return_code": 1}, "chapter_13/valid/explicit_casts/double_to_signed.c": {"return_code": 0}, "chapter_13/valid/explicit_casts/unsigned_to_double.c": {"return_code": 0}, "chapter_13/valid/explicit_casts/signed_to_double.c": {"return_code": 0}, "chapter_13/valid/explicit_casts/double_to_unsigned.c": {"return_code": 0}, "chapter_13/valid/implicit_casts/convert_for_assignment.c": {"return_code": 0}, "chapter_13/valid/implicit_casts/common_type.c": {"return_code": 0}, "chapter_13/valid/implicit_casts/static_initializers.c": {"return_code": 0}, "chapter_13/valid/implicit_casts/complex_arithmetic_common_type.c": {"return_code": 1}, "chapter_13/valid/constants/round_constants.c": {"return_code": 0}, "chapter_13/valid/constants/constant_doubles.c": {"return_code": 0}, "chapter_13/valid/special_values/subnormal_not_zero.c": {"return_code": 0}, "chapter_13/valid/special_values/negative_zero.c": {"return_code": 0}, "chapter_13/valid/special_values/infinity.c": {"return_code": 0}, "chapter_13/valid/function_calls/double_parameters.c": {"return_code": 0}, "chapter_13/valid/function_calls/double_and_int_parameters.c": {"return_code": 0}, "chapter_13/valid/function_calls/standard_library_call.c": {"return_code": 0}, "chapter_13/valid/function_calls/use_arg_after_fun_call.c": {"return_code": 4}, "chapter_13/valid/function_calls/return_double.c": {"return_code": 1}, "chapter_13/valid/function_calls/double_and_int_params_recursive.c": {"return_code": 0}, "chapter_13/valid/extra_credit/compound_assign.c": {"return_code": 0}, "chapter_13/valid/extra_credit/nan.c": {"return_code": 0}, "chapter_13/valid/extra_credit/compound_assign_implicit_cast.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/temporary_lifetime.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/ignore_retval.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/return_space_overlap.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/return_big_struct_on_page_boundary.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/simple.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/return_struct_on_page_boundary.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/return_incomplete_type.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/stack_clobber.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/libraries/return_calling_conventions.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/libraries/missing_retval.c": {"return_code": 1}, "chapter_18/valid/params_and_returns/libraries/access_retval_members.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/libraries/retval_struct_sizes.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/semantic_analysis/resolve_tags.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/semantic_analysis/namespaces.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/semantic_analysis/incomplete_structs.c": {"return_code": 0, "stdout": "I'm a struct!\n"}, "chapter_18/valid/no_structure_parameters/semantic_analysis/cast_struct_to_void.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/global_struct.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/param_struct_pointer.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/return_struct_pointer.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/opaque_struct.c": {"return_code": 0, "stdout": "new struct\nstatic struct\nglobal struct\n"}, "chapter_18/valid/no_structure_parameters/libraries/array_of_structs.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/initializers/auto_struct_initializers.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/initializers/static_struct_initializers.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/initializers/nested_static_struct_initializers.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/initializers/nested_auto_struct_initializers.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/smoke_tests/static_vs_auto.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/smoke_tests/simple.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/size_and_offset_calculations/member_offsets.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/size_and_offset_calculations/sizeof_exps.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/size_and_offset_calculations/sizeof_type.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/scalar_member_access/arrow.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/scalar_member_access/linked_list.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/scalar_member_access/static_structs.c": {"return_code": 0, "stdout": "zero\nmn\nop\nwx\nyz\nBCD\nCDE\nDEF\nEFG\nbcd\ncde\n"}, "chapter_18/valid/no_structure_parameters/scalar_member_access/nested_struct.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/scalar_member_access/dot.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/parse_and_lex/postfix_precedence.c": {"return_code": 1}, "chapter_18/valid/no_structure_parameters/parse_and_lex/trailing_comma.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/parse_and_lex/space_around_struct_member.c": {"return_code": 1}, "chapter_18/valid/no_structure_parameters/parse_and_lex/struct_member_looks_like_const.c": {"return_code": 3}, "chapter_18/valid/no_structure_parameters/struct_copy/copy_struct_through_pointer.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/struct_copy/copy_struct_with_arrow_operator.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/struct_copy/copy_struct.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/struct_copy/stack_clobber.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/struct_copy/copy_struct_with_dot_operator.c": {"return_code": 0}, "chapter_18/valid/parameters/pass_args_on_page_boundary.c": {"return_code": 0}, "chapter_18/valid/parameters/incomplete_param_type.c": {"return_code": 3}, "chapter_18/valid/parameters/simple.c": {"return_code": 0}, "chapter_18/valid/parameters/stack_clobber.c": {"return_code": 0}, "chapter_18/valid/parameters/libraries/param_calling_conventions.c": {"return_code": 0}, "chapter_18/valid/parameters/libraries/struct_sizes.c": {"return_code": 0}, "chapter_18/valid/parameters/libraries/pass_struct.c": {"return_code": 0}, "chapter_18/valid/parameters/libraries/modify_param.c": {"return_code": 0}, "chapter_18/valid/parameters/libraries/classify_params.c": {"return_code": 0}, "chapter_15/valid/initialization/automatic.c": {"return_code": 0}, "chapter_15/valid/initialization/static.c": {"return_code": 0}, "chapter_15/valid/initialization/trailing_comma_initializer.c": {"return_code": 3}, "chapter_15/valid/initialization/automatic_nested.c": {"return_code": 0}, "chapter_15/valid/initialization/static_nested.c": {"return_code": 0}, "chapter_15/valid/libraries/set_array_val.c": {"return_code": 0}, "chapter_15/valid/libraries/return_pointer_to_array.c": {"return_code": 0}, "chapter_15/valid/libraries/global_array.c": {"return_code": 0}, "chapter_15/valid/subscripting/subscript_nested.c": {"return_code": 0}, "chapter_15/valid/subscripting/subscript_pointer.c": {"return_code": 0}, "chapter_15/valid/subscripting/array_of_pointers_to_arrays.c": {"return_code": 0}, "chapter_15/valid/subscripting/simple_subscripts.c": {"return_code": 0}, "chapter_15/valid/subscripting/simple.c": {"return_code": 3}, "chapter_15/valid/subscripting/complex_operands.c": {"return_code": 0}, "chapter_15/valid/subscripting/addition_subscript_equivalence.c": {"return_code": 0}, "chapter_15/valid/subscripting/subscript_precedence.c": {"return_code": 1}, "chapter_15/valid/allocation/test_alignment.c": {"return_code": 0}, "chapter_15/valid/pointer_arithmetic/pointer_add.c": {"return_code": 0}, "chapter_15/valid/pointer_arithmetic/add_dereference_and_assign.c": {"return_code": 0}, "chapter_15/valid/pointer_arithmetic/pointer_diff.c": {"return_code": 0}, "chapter_15/valid/pointer_arithmetic/compare.c": {"return_code": 0}, "chapter_15/valid/declarators/big_array.c": {"return_code": 0}, "chapter_15/valid/declarators/equivalent_declarators.c": {"return_code": 0}, "chapter_15/valid/declarators/return_nested_array.c": {"return_code": 0}, "chapter_15/valid/declarators/array_as_argument.c": {"return_code": 0}, "chapter_15/valid/declarators/for_loop_array.c": {"return_code": 0}, "chapter_15/valid/casts/multi_dim_casts.c": {"return_code": 0}, "chapter_15/valid/casts/implicit_and_explicit_conversions.c": {"return_code": 0}, "chapter_15/valid/casts/cast_array_of_pointers.c": {"return_code": 1}, "chapter_17/valid/void/cast_to_void.c": {"return_code": 12}, "chapter_17/valid/void/void_function.c": {"return_code": 0}, "chapter_17/valid/void/void_for_loop.c": {"return_code": 0, "stdout": "ZYXWVUTSRQPONMLKJIHGFEDCBAABCDEFGHIJKLMNOPQRSTUVWXYZZYXWVUTSRQPONMLKJIHGFEDCBA"}, "chapter_17/valid/void/ternary.c": {"return_code": 0}, "chapter_17/valid/libraries/pass_alloced_memory.c": {"return_code": 0}, "chapter_17/valid/libraries/test_for_memory_leaks.c": {"return_code": 0}, "chapter_17/valid/libraries/sizeof_extern.c": {"return_code": 1}, "chapter_17/valid/sizeof/sizeof_basic_types.c": {"return_code": 0}, "chapter_17/valid/sizeof/sizeof_consts.c": {"return_code": 0}, "chapter_17/valid/sizeof/sizeof_expressions.c": {"return_code": 0}, "chapter_17/valid/sizeof/sizeof_array.c": {"return_code": 0}, "chapter_17/valid/sizeof/sizeof_derived_types.c": {"return_code": 0}, "chapter_17/valid/sizeof/simple.c": {"return_code": 0}, "chapter_17/valid/sizeof/sizeof_result_is_ulong.c": {"return_code": 0}, "chapter_17/valid/sizeof/sizeof_not_evaluated.c": {"return_code": 4}, "chapter_17/valid/void_pointer/array_of_pointers_to_void.c": {"return_code": 0}, "chapter_17/valid/void_pointer/conversion_by_assignment.c": {"return_code": 0}, "chapter_17/valid/void_pointer/explicit_cast.c": {"return_code": 0}, "chapter_17/valid/void_pointer/simple.c": {"return_code": 100}, "chapter_17/valid/void_pointer/memory_management_functions.c": {"return_code": 0}, "chapter_17/valid/void_pointer/common_pointer_type.c": {"return_code": 0}, "chapter_16/valid/strings_as_lvalues/addr_of_string.c": {"return_code": 0, "stdout": "Sample\tstring!\n\n"}, "chapter_16/valid/strings_as_lvalues/standard_library_calls.c": {"return_code": 0, "stdout": "Hello, World!\n"}, "chapter_16/valid/strings_as_lvalues/array_of_strings.c": {"return_code": 0}, "chapter_16/valid/strings_as_lvalues/cast_string_pointer.c": {"return_code": 0}, "chapter_16/valid/strings_as_lvalues/empty_string.c": {"return_code": 0}, "chapter_16/valid/strings_as_lvalues/pointer_operations.c": {"return_code": 0}, "chapter_16/valid/strings_as_lvalues/simple.c": {"return_code": 108}, "chapter_16/valid/strings_as_lvalues/adjacent_strings.c": {"return_code": 0, "stdout": "Hello, World\n"}, "chapter_16/valid/strings_as_lvalues/string_special_characters.c": {"return_code": 0, "stdout": "Hello\"world\nHello\\World\nLine\nbreak!\nTesting, 123.\n^@1 _\\]\n"}, "chapter_16/valid/strings_as_lvalues/strings_in_function_calls.c": {"return_code": 0}, "chapter_16/valid/libraries/return_char.c": {"return_code": 0}, "chapter_16/valid/libraries/char_arguments.c": {"return_code": 0}, "chapter_16/valid/libraries/global_char.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/array_init_special_chars.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/terminating_null_bytes.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/simple.c": {"return_code": 99}, "chapter_16/valid/strings_as_initializers/partial_initialize_via_string.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/adjacent_strings_in_initializer.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/transfer_by_eightbyte.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/literals_and_compound_initializers.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/write_to_array.c": {"return_code": 0, "stdout": "abc\nabx\nHello\nWorld\nJello\n"}, "chapter_16/valid/strings_as_initializers/test_alignment.c": {"return_code": 0}, "chapter_16/valid/char_constants/return_char_constant.c": {"return_code": 99}, "chapter_16/valid/char_constants/escape_sequences.c": {"return_code": 0}, "chapter_16/valid/char_constants/control_characters.c": {"return_code": 0}, "chapter_16/valid/char_constants/char_constant_operations.c": {"return_code": 0}, "chapter_16/valid/chars/partial_initialization.c": {"return_code": 0}, "chapter_16/valid/chars/convert_by_assignment.c": {"return_code": 0}, "chapter_16/valid/chars/type_specifiers.c": {"return_code": 0}, "chapter_16/valid/chars/push_arg_on_page_boundary.c": {"return_code": 1}, "chapter_16/valid/chars/integer_promotion.c": {"return_code": 0}, "chapter_16/valid/chars/chained_casts.c": {"return_code": 0}, "chapter_16/valid/chars/return_char.c": {"return_code": 0}, "chapter_16/valid/chars/char_arguments.c": {"return_code": 0}, "chapter_16/valid/chars/char_expressions.c": {"return_code": 0}, "chapter_16/valid/chars/access_through_char_pointer.c": {"return_code": 0}, "chapter_16/valid/chars/common_type.c": {"return_code": 0}, "chapter_16/valid/chars/static_initializers.c": {"return_code": 0}, "chapter_16/valid/chars/explicit_casts.c": {"return_code": 0}, "chapter_9/valid/arguments_in_registers/parameter_shadows_own_function.c": {"return_code": 2}, "chapter_9/valid/arguments_in_registers/expression_args.c": {"return_code": 2}, "chapter_9/valid/arguments_in_registers/single_arg.c": {"return_code": 6}, "chapter_9/valid/arguments_in_registers/hello_world.c": {"return_code": 0, "stdout": "Hello, World!\n"}, "chapter_9/valid/arguments_in_registers/parameter_shadows_function.c": {"return_code": 3}, "chapter_9/valid/arguments_in_registers/parameters_are_preserved.c": {"return_code": 1}, "chapter_9/valid/arguments_in_registers/forward_decl_multi_arg.c": {"return_code": 1}, "chapter_9/valid/arguments_in_registers/fibonacci.c": {"return_code": 8}, "chapter_9/valid/arguments_in_registers/param_shadows_local_var.c": {"return_code": 20}, "chapter_9/valid/no_arguments/function_shadows_variable.c": {"return_code": 11}, "chapter_9/valid/no_arguments/use_function_in_expression.c": {"return_code": 21}, "chapter_9/valid/no_arguments/no_return_value.c": {"return_code": 3}, "chapter_9/valid/no_arguments/multiple_declarations.c": {"return_code": 3}, "chapter_9/valid/no_arguments/precedence.c": {"return_code": 0}, "chapter_9/valid/no_arguments/forward_decl.c": {"return_code": 3}, "chapter_9/valid/no_arguments/variable_shadows_function.c": {"return_code": 7}, "chapter_9/valid/libraries/system_call.c": {"return_code": 0, "stdout": "H"}, "chapter_9/valid/libraries/many_args.c": {"return_code": 115}, "chapter_9/valid/libraries/addition.c": {"return_code": 3}, "chapter_9/valid/libraries/no_function_calls/division.c": {"return_code": 1}, "chapter_9/valid/libraries/no_function_calls/local_stack_variables.c": {"return_code": 100}, "chapter_9/valid/extra_credit/compound_assign_function_result.c": {"return_code": 1}, "chapter_9/valid/extra_credit/goto_label_multiple_functions.c": {"return_code": 5}, "chapter_9/valid/extra_credit/goto_shared_name.c": {"return_code": 1}, "chapter_9/valid/stack_arguments/call_putchar.c": {"return_code": 8, "stdout": "A"}, "chapter_9/valid/stack_arguments/lots_of_arguments.c": {"return_code": 1}, "chapter_9/valid/stack_arguments/stack_alignment.c": {"return_code": 3}, "chapter_9/valid/stack_arguments/test_for_memory_leaks.c": {"return_code": 1}, "chapter_12/valid/unsigned_expressions/logical.c": {"return_code": 0}, "chapter_12/valid/unsigned_expressions/arithmetic_wraparound.c": {"return_code": 1}, "chapter_12/valid/unsigned_expressions/arithmetic_ops.c": {"return_code": 0}, "chapter_12/valid/unsigned_expressions/comparisons.c": {"return_code": 0}, "chapter_12/valid/unsigned_expressions/simple.c": {"return_code": 1}, "chapter_12/valid/unsigned_expressions/static_variables.c": {"return_code": 1}, "chapter_12/valid/unsigned_expressions/locals.c": {"return_code": 0}, "chapter_12/valid/libraries/unsigned_args.c": {"return_code": 0}, "chapter_12/valid/libraries/unsigned_global_var.c": {"return_code": 1}, "chapter_12/valid/explicit_casts/same_size_conversion.c": {"return_code": 0}, "chapter_12/valid/explicit_casts/extension.c": {"return_code": 0}, "chapter_12/valid/explicit_casts/round_trip_casts.c": {"return_code": 0}, "chapter_12/valid/explicit_casts/chained_casts.c": {"return_code": 0}, "chapter_12/valid/explicit_casts/truncate.c": {"return_code": 0}, "chapter_12/valid/type_specifiers/signed_type_specifiers.c": {"return_code": 0}, "chapter_12/valid/type_specifiers/unsigned_type_specifiers.c": {"return_code": 0}, "chapter_12/valid/implicit_casts/convert_by_assignment.c": {"return_code": 0}, "chapter_12/valid/implicit_casts/promote_constants.c": {"return_code": 0}, "chapter_12/valid/implicit_casts/common_type.c": {"return_code": 0}, "chapter_12/valid/implicit_casts/static_initializers.c": {"return_code": 0}, "chapter_12/valid/extra_credit/switch_uint.c": {"return_code": 0}, "chapter_12/valid/extra_credit/compound_assign_uint.c": {"return_code": 1}, "chapter_12/valid/extra_credit/bitwise_unsigned_shift.c": {"return_code": 0}, "chapter_12/valid/extra_credit/bitwise_unsigned_ops.c": {"return_code": 0}, "chapter_5/valid/null_then_return.c": {"return_code": 0}, "chapter_5/valid/empty_function_body.c": {"return_code": 0}, "chapter_5/valid/short_circuit_or.c": {"return_code": 0}, "chapter_5/valid/assignment_in_initializer.c": {"return_code": 0}, "chapter_5/valid/non_short_circuit_or.c": {"return_code": 1}, "chapter_5/valid/null_statement.c": {"return_code": 0}, "chapter_5/valid/short_circuit_and_fail.c": {"return_code": 0}, "chapter_5/valid/local_var_missing_return.c": {"return_code": 0}, "chapter_5/valid/exp_then_declaration.c": {"return_code": 1}, "chapter_5/valid/add_variables.c": {"return_code": 3}, "chapter_5/valid/assign_val_in_initializer.c": {"return_code": 5}, "chapter_5/valid/assignment_lowest_precedence.c": {"return_code": 1}, "chapter_5/valid/allocate_temps_and_vars.c": {"return_code": 1}, "chapter_5/valid/use_assignment_result.c": {"return_code": 4}, "chapter_5/valid/use_val_in_own_initializer.c": {"return_code": 0}, "chapter_5/valid/unused_exp.c": {"return_code": 0}, "chapter_5/valid/return_var.c": {"return_code": 2}, "chapter_5/valid/mixed_precedence_assignment.c": {"return_code": 4}, "chapter_5/valid/assign.c": {"return_code": 2}, "chapter_5/valid/extra_credit/bitwise_shiftr_assign.c": {"return_code": 77}, "chapter_5/valid/extra_credit/bitwise_shiftl_variable.c": {"return_code": 24}, "chapter_5/valid/extra_credit/compound_bitwise_and.c": {"return_code": 2}, "chapter_5/valid/extra_credit/compound_minus.c": {"return_code": 2}, "chapter_5/valid/extra_credit/compound_multiply.c": {"return_code": 12}, "chapter_5/valid/extra_credit/compound_bitwise_xor.c": {"return_code": 2}, "chapter_5/valid/extra_credit/compound_bitwise_or.c": {"return_code": 31}, "chapter_5/valid/extra_credit/compound_assignment_chained.c": {"return_code": 1}, "chapter_5/valid/extra_credit/compound_divide.c": {"return_code": 2}, "chapter_5/valid/extra_credit/compound_bitwise_shiftr.c": {"return_code": 102}, "chapter_5/valid/extra_credit/compound_assignment_use_result.c": {"return_code": 1}, "chapter_5/valid/extra_credit/compound_bitwise_shiftl.c": {"return_code": 48}, "chapter_5/valid/extra_credit/compound_plus.c": {"return_code": 4}, "chapter_5/valid/extra_credit/compound_mod.c": {"return_code": 2}, "chapter_7/valid/declaration_only.c": {"return_code": 1}, "chapter_7/valid/assign_to_self_2.c": {"return_code": 3}, "chapter_7/valid/hidden_then_visible.c": {"return_code": 1}, "chapter_7/valid/hidden_variable.c": {"return_code": 1}, "chapter_7/valid/assign_to_self.c": {"return_code": 4}, "chapter_7/valid/inner_uninitialized.c": {"return_code": 4}, "chapter_7/valid/multiple_vars_same_name.c": {"return_code": 2}, "chapter_7/valid/use_in_inner_scope.c": {"return_code": 3}, "chapter_7/valid/empty_blocks.c": {"return_code": 30}, "chapter_7/valid/nested_if.c": {"return_code": 1}, "chapter_7/valid/similar_var_names.c": {"return_code": 28}, "chapter_7/valid/extra_credit/goto_before_declaration.c": {"return_code": 0}, "chapter_7/valid/extra_credit/compound_subtract_in_block.c": {"return_code": 1}, "chapter_7/valid/extra_credit/goto_inner_scope.c": {"return_code": 1}, "chapter_4/valid/le_true.c": {"return_code": 2}, "chapter_4/valid/ne_true.c": {"return_code": 1}, "chapter_4/valid/ge_false.c": {"return_code": 0}, "chapter_4/valid/not_zero.c": {"return_code": 1}, "chapter_4/valid/precedence_2.c": {"return_code": 0}, "chapter_4/valid/ge_true.c": {"return_code": 2}, "chapter_4/valid/eq_precedence.c": {"return_code": 1}, "chapter_4/valid/eq_false.c": {"return_code": 0}, "chapter_4/valid/or_short_circuit.c": {"return_code": 1}, "chapter_4/valid/not_sum.c": {"return_code": 1}, "chapter_4/valid/precedence_4.c": {"return_code": 1}, "chapter_4/valid/and_short_circuit.c": {"return_code": 0}, "chapter_4/valid/precedence_3.c": {"return_code": 0}, "chapter_4/valid/compare_arithmetic_results.c": {"return_code": 1}, "chapter_4/valid/and_false.c": {"return_code": 0}, "chapter_4/valid/precedence_5.c": {"return_code": 1}, "chapter_4/valid/associativity.c": {"return_code": 1}, "chapter_4/valid/gt_true.c": {"return_code": 1}, "chapter_4/valid/lt_false.c": {"return_code": 0}, "chapter_4/valid/or_true.c": {"return_code": 3}, "chapter_4/valid/or_false.c": {"return_code": 0}, "chapter_4/valid/eq_true.c": {"return_code": 1}, "chapter_4/valid/ne_false.c": {"return_code": 0}, "chapter_4/valid/multi_short_circuit.c": {"return_code": 0}, "chapter_4/valid/gt_false.c": {"return_code": 0}, "chapter_4/valid/operate_on_booleans.c": {"return_code": 0}, "chapter_4/valid/not.c": {"return_code": 0}, "chapter_4/valid/le_false.c": {"return_code": 0}, "chapter_4/valid/nested_ops.c": {"return_code": 0}, "chapter_4/valid/precedence.c": {"return_code": 1}, "chapter_4/valid/not_sum_2.c": {"return_code": 0}, "chapter_4/valid/and_true.c": {"return_code": 1}, "chapter_4/valid/lt_true.c": {"return_code": 1}, "chapter_3/valid/mod.c": {"return_code": 0}, "chapter_3/valid/unop_add.c": {"return_code": 0}, "chapter_3/valid/associativity_3.c": {"return_code": 8}, "chapter_3/valid/mult.c": {"return_code": 6}, "chapter_3/valid/sub.c": {"return_code": 255}, "chapter_3/valid/div_neg.c": {"return_code": 254}, "chapter_3/valid/unop_parens.c": {"return_code": 253}, "chapter_3/valid/add.c": {"return_code": 3}, "chapter_3/valid/associativity.c": {"return_code": 252}, "chapter_3/valid/associativity_2.c": {"return_code": 1}, "chapter_3/valid/div.c": {"return_code": 2}, "chapter_3/valid/sub_neg.c": {"return_code": 3}, "chapter_3/valid/associativity_and_precedence.c": {"return_code": 10}, "chapter_3/valid/parens.c": {"return_code": 14}, "chapter_3/valid/precedence.c": {"return_code": 14}, "chapter_3/valid/extra_credit/bitwise_shiftr.c": {"return_code": 62}, "chapter_3/valid/extra_credit/bitwise_and.c": {"return_code": 1}, "chapter_3/valid/extra_credit/bitwise_shiftl.c": {"return_code": 140}, "chapter_3/valid/extra_credit/bitwise_or.c": {"return_code": 3}, "chapter_3/valid/extra_credit/bitwise_shift_precedence.c": {"return_code": 0}, "chapter_3/valid/extra_credit/bitwise_xor.c": {"return_code": 6}, "chapter_3/valid/extra_credit/bitwise_shift_associativity_2.c": {"return_code": 16}, "chapter_3/valid/extra_credit/bitwise_shift_associativity.c": {"return_code": 132}, "chapter_3/valid/extra_credit/bitwise_precedence.c": {"return_code": 21}, "chapter_11/valid/long_expressions/long_args.c": {"return_code": 0}, "chapter_11/valid/long_expressions/logical.c": {"return_code": 0}, "chapter_11/valid/long_expressions/type_specifiers.c": {"return_code": 0}, "chapter_11/valid/long_expressions/multi_op.c": {"return_code": 1}, "chapter_11/valid/long_expressions/large_constants.c": {"return_code": 0}, "chapter_11/valid/long_expressions/arithmetic_ops.c": {"return_code": 0}, "chapter_11/valid/long_expressions/return_long.c": {"return_code": 1}, "chapter_11/valid/long_expressions/comparisons.c": {"return_code": 0}, "chapter_11/valid/long_expressions/simple.c": {"return_code": 1}, "chapter_11/valid/long_expressions/static_long.c": {"return_code": 1}, "chapter_11/valid/long_expressions/long_and_int_locals.c": {"return_code": 0}, "chapter_11/valid/long_expressions/assign.c": {"return_code": 1}, "chapter_11/valid/libraries/long_args.c": {"return_code": 0}, "chapter_11/valid/libraries/maintain_stack_alignment.c": {"return_code": 12}, "chapter_11/valid/libraries/return_long.c": {"return_code": 0}, "chapter_11/valid/libraries/long_global_var.c": {"return_code": 0}, "chapter_11/valid/explicit_casts/truncate.c": {"return_code": 0}, "chapter_11/valid/explicit_casts/sign_extend.c": {"return_code": 0}, "chapter_11/valid/implicit_casts/convert_by_assignment.c": {"return_code": 0}, "chapter_11/valid/implicit_casts/common_type.c": {"return_code": 0}, "chapter_11/valid/implicit_casts/long_constants.c": {"return_code": 0}, "chapter_11/valid/implicit_casts/convert_function_arguments.c": {"return_code": 0}, "chapter_11/valid/implicit_casts/convert_static_initializer.c": {"return_code": 0}, "chapter_11/valid/extra_credit/bitwise_long_op.c": {"return_code": 0}, "chapter_11/valid/extra_credit/compound_assign_to_int.c": {"return_code": 0}, "chapter_11/valid/extra_credit/compound_assign_to_long.c": {"return_code": 0}, "chapter_11/valid/extra_credit/switch_int.c": {"return_code": 0}, "chapter_11/valid/extra_credit/switch_long.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_truncate.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_cast_to_double.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_ulong.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_double.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_conditional_jump.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_extensions_and_copies.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/negative_zero.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_long.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_uint.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_cast_from_double.c": {"return_code": 0}, "chapter_19/constant_folding/int_only/fold_unary.c": {"return_code": 0}, "chapter_19/constant_folding/int_only/fold_conditional_jump.c": {"return_code": 0}, "chapter_19/constant_folding/int_only/fold_binary.c": {"return_code": 0}, "chapter_19/constant_folding/int_only/fold_control_flow.c": {"return_code": 0}, "chapter_19/constant_folding/int_only/fold_exception.c": {"return_code": 0}, "chapter_19/unreachable_code_elimination/remove_useless_starting_label.c": {"return_code": 99}, "chapter_19/unreachable_code_elimination/dead_for_loop.c": {"return_code": 10}, "chapter_19/unreachable_code_elimination/and_clause.c": {"return_code": 0}, "chapter_19/unreachable_code_elimination/keep_final_jump.c": {"return_code": 17}, "chapter_19/unreachable_code_elimination/remove_jump_keep_label.c": {"return_code": 10}, "chapter_19/unreachable_code_elimination/dead_branch_inside_loop.c": {"return_code": 0}, "chapter_19/unreachable_code_elimination/empty.c": {"return_code": 0}, "chapter_19/unreachable_code_elimination/infinite_loop.c": {"return_code": 11}, "chapter_19/unreachable_code_elimination/constant_if_else.c": {"return_code": 45}, "chapter_19/unreachable_code_elimination/dead_blocks_with_predecessors.c": {"return_code": 5}, "chapter_19/unreachable_code_elimination/remove_conditional_jumps.c": {"return_code": 1}, "chapter_19/unreachable_code_elimination/dead_after_return.c": {"return_code": 2}, "chapter_19/unreachable_code_elimination/empty_block.c": {"return_code": 0}, "chapter_19/unreachable_code_elimination/dead_after_if_else.c": {"return_code": 0}, "chapter_19/unreachable_code_elimination/or_clause.c": {"return_code": 1}, "chapter_19/copy_propagation/all_types/pointer_arithmetic.c": {"return_code": 2}, "chapter_19/copy_propagation/all_types/store_doesnt_kill.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/propagate_into_type_conversions.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/redundant_double_copies.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/char_type_conversion.c": {"return_code": 1, "stdout": "CBA@"}, "chapter_19/copy_propagation/all_types/alias_analysis.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/copy_struct.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/redundant_struct_copies.c": {"return_code": 1}, "chapter_19/copy_propagation/all_types/propagate_null_pointer.c": {"return_code": 1}, "chapter_19/copy_propagation/all_types/propagate_all_types.c": {"return_code": 1}, "chapter_19/copy_propagation/all_types/funcall_kills_aliased.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/dont_propagate/static_are_aliased.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/dont_propagate/store_kills_aliased.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/dont_propagate/copy_to_offset.c": {"return_code": 3}, "chapter_19/copy_propagation/all_types/dont_propagate/dont_propagate_addr_of.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/dont_propagate/type_conversion.c": {"return_code": 1}, "chapter_19/copy_propagation/all_types/dont_propagate/zero_neg_zero_different.c": {"return_code": 1}, "chapter_19/copy_propagation/int_only/killed_then_redefined.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/different_paths_same_copy.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/multi_path_no_kill.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/redundant_copies.c": {"return_code": 20}, "chapter_19/copy_propagation/int_only/fig_19_8.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/propagate_into_complex_expressions.c": {"return_code": 1}, "chapter_19/copy_propagation/int_only/propagate_static.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/propagate_static_var.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/kill_and_add_copies.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/init_all_copies.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/propagate_params.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/nested_loops.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/constant_propagation.c": {"return_code": 6}, "chapter_19/copy_propagation/int_only/propagate_var.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/different_source_values_same_copy.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/dont_propagate/source_killed_on_one_path.c": {"return_code": 0, "stdout": "DA"}, "chapter_19/copy_propagation/int_only/dont_propagate/one_reaching_copy.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/dont_propagate/dest_killed.c": {"return_code": 4}, "chapter_19/copy_propagation/int_only/dont_propagate/no_copies_reach_entry.c": {"return_code": 4}, "chapter_19/copy_propagation/int_only/dont_propagate/listing_19_14.c": {"return_code": 101}, "chapter_19/copy_propagation/int_only/dont_propagate/add_all_blocks_to_worklist.c": {"return_code": 100}, "chapter_19/copy_propagation/int_only/dont_propagate/multi_values.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/dont_propagate/static_dst_killed.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/dont_propagate/static_src_killed.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/dont_propagate/source_killed.c": {"return_code": 0}, "chapter_19/dead_store_elimination/all_types/aliased_dead_at_exit.c": {"return_code": 0}, "chapter_19/dead_store_elimination/all_types/getaddr_doesnt_gen.c": {"return_code": 0}, "chapter_19/dead_store_elimination/all_types/copy_to_dead_struct.c": {"return_code": 4}, "chapter_19/dead_store_elimination/all_types/delete_dead_pt_ii_instructions.c": {"return_code": 5}, "chapter_19/dead_store_elimination/all_types/dont_elim/funcall_generates_aliased.c": {"return_code": 4}, "chapter_19/dead_store_elimination/all_types/dont_elim/copytooffset_doesnt_kill.c": {"return_code": 0}, "chapter_19/dead_store_elimination/all_types/dont_elim/use_and_update.c": {"return_code": 1}, "chapter_19/dead_store_elimination/all_types/dont_elim/recognize_all_uses.c": {"return_code": 0}, "chapter_19/dead_store_elimination/all_types/dont_elim/never_kill_store.c": {"return_code": 4}, "chapter_19/dead_store_elimination/all_types/dont_elim/load_generates_aliased.c": {"return_code": 10}, "chapter_19/dead_store_elimination/int_only/static_not_always_live.c": {"return_code": 23}, "chapter_19/dead_store_elimination/int_only/fig_19_11.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/dead_store_static_var.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/loop_dead_store.c": {"return_code": 0, "stdout": "CHNTZ"}, "chapter_19/dead_store_elimination/int_only/simple.c": {"return_code": 3}, "chapter_19/dead_store_elimination/int_only/delete_arithmetic_ops.c": {"return_code": 5}, "chapter_19/dead_store_elimination/int_only/elim_second_copy.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/initialize_blocks_with_empty_set.c": {"return_code": 1}, "chapter_19/dead_store_elimination/int_only/dont_elim/self_copy.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/dont_elim/static_vars_at_exit.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/dont_elim/used_one_path.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/dont_elim/recognize_all_uses.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/dont_elim/dont_remove_funcall.c": {"return_code": 0, "stdout": "C"}, "chapter_19/dead_store_elimination/int_only/dont_elim/add_all_to_worklist.c": {"return_code": 0, "stdout": "ML"}, "chapter_19/dead_store_elimination/int_only/dont_elim/nested_loops.c": {"return_code": 0, "stdout": "DKHEB"}, "chapter_19/dead_store_elimination/int_only/dont_elim/loop.c": {"return_code": 1}, "chapter_19/dead_store_elimination/int_only/dont_elim/static_vars_fun.c": {"return_code": 5}, "chapter_19/whole_pipeline/all_types/fold_infinity.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/fold_cast_to_double.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/signed_unsigned_conversion.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/alias_analysis_change.c": {"return_code": 0, "stdout": "A"}, "chapter_19/whole_pipeline/all_types/fold_char_condition.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/fold_negative_zero.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/fold_negative_values.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/listing_19_5_more_types.c": {"return_code": 9}, "chapter_19/whole_pipeline/all_types/fold_cast_from_double.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/fold_extension_and_truncation.c": {"return_code": 0}, "chapter_19/whole_pipeline/int_only/dead_condition.c": {"return_code": 10}, "chapter_19/whole_pipeline/int_only/listing_19_5.c": {"return_code": 9}, "chapter_19/whole_pipeline/int_only/elim_and_copy_prop.c": {"return_code": 10}, "chapter_19/whole_pipeline/int_only/remainder_test.c": {"return_code": 0}, "chapter_19/whole_pipeline/int_only/int_min.c": {"return_code": 0}, "chapter_20/all_types/no_coalescing/mixed_ints.c": {"return_code": 9}, "chapter_20/all_types/no_coalescing/dbl_trivially_colorable.c": {"return_code": 3}, "chapter_20/all_types/no_coalescing/dbl_fun_call.c": {"return_code": 1}, "chapter_20/all_types/no_coalescing/stack_alignment.c": {"return_code": 1}, "chapter_20/all_types/no_coalescing/track_dbl_arg_registers.c": {"return_code": 1}, "chapter_20/all_types/no_coalescing/fourteen_pseudos_interfere.c": {"return_code": 0}, "chapter_20/all_types/no_coalescing/div_interference.c": {"return_code": 1}, "chapter_20/all_types/no_coalescing/test_spilling_dbls.c": {"return_code": 3}, "chapter_20/all_types/no_coalescing/store_pointer_in_register.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/same_instr_interference.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/test_spill_metric.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/unary_interference.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/optimistic_coloring.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/track_arg_registers.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/many_pseudos_fewer_conflicts.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/same_instr_no_interference.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/copy_no_interference.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/force_spill.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/callee_saved_stack_alignment.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/idiv_interference.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/preserve_across_fun_call.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/use_all_hardregs.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/test_spill_metric_2.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/loop.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/trivially_colorable.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/cdq_interference.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/coalesce_prevents_spill.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/george_coalesce.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/briggs_coalesce.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/integer_promotions.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/propagate_into_copytooffset.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/propagate_into_store.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/propagate_into_copyfromoffset.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/propagate_into_load.c": {"return_code": 0}, "chapter_13/valid/explicit_casts/cvttsd2si_rewrite.c": {"return_code": 0}, "chapter_13/valid/explicit_casts/rewrite_cvttsd2si_regression.c": {"return_code": 0}, "chapter_13/valid/function_calls/push_xmm.c": {"return_code": 0}, "chapter_16/valid/chars/rewrite_movz_regression.c": {"return_code": 0}, "chapter_12/valid/explicit_casts/rewrite_movz_regression.c": {"return_code": 0}, "chapter_11/valid/long_expressions/rewrite_large_multiply_regression.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/rewrite_regression_test.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/cmp_no_updates.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/bin_uses_operands.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/division_uses_ax.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/cmp_generates_operands.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/eax_live_at_exit.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/unary_uses_operand.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/funcall_generates_args.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/briggs_coalesce_hardreg.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/briggs_dont_coalesce.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/george_dont_coalesce_2.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/george_dont_coalesce.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/no_george_test_for_pseudos.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/george_off_by_one.c": {"return_code": 0}, "chapter_3/valid/extra_credit/bitwise_variable_shift_count.c": {"return_code": 76}, "chapter_3/valid/extra_credit/bitwise_shiftr_negative.c": {"return_code": 255}, "chapter_4/valid/extra_credit/bitwise_shift_precedence.c": {"return_code": 1}, "chapter_4/valid/extra_credit/bitwise_and_precedence.c": {"return_code": 0}, "chapter_5/valid/extra_credit/bitwise_in_initializer.c": {"return_code": 11}, "chapter_5/valid/extra_credit/compound_assignment_lowest_precedence.c": {"return_code": 1}, "chapter_5/valid/extra_credit/bitwise_ops_vars.c": {"return_code": 9}, "chapter_5/valid/extra_credit/compound_bitwise_chained.c": {"return_code": 1}, "chapter_5/valid/extra_credit/compound_bitwise_assignment_lowest_precedence.c": {"return_code": 1}, "chapter_5/valid/extra_credit/prefix_incr_and_decr.c": {"return_code": 1}, "chapter_5/valid/extra_credit/postfix_incr_and_decr.c": {"return_code": 1}, "chapter_5/valid/extra_credit/postfix_precedence.c": {"return_code": 1}, "chapter_5/valid/extra_credit/incr_parenthesized.c": {"return_code": 1}, "chapter_6/valid/lh_assignment.c": {"return_code": 1}, "chapter_6/valid/extra_credit/prefix_if.c": {"return_code": 1}, "chapter_6/valid/extra_credit/postfix_in_ternary.c": {"return_code": 9}, "chapter_6/valid/extra_credit/prefix_in_ternary.c": {"return_code": 2}, "chapter_6/valid/extra_credit/compound_assign_ternary.c": {"return_code": 8}, "chapter_6/valid/extra_credit/lh_compound_assignment.c": {"return_code": 1}, "chapter_6/valid/extra_credit/postfix_if.c": {"return_code": 1}, "chapter_5/valid/extra_credit/incr_in_binary_expr.c": {"return_code": 1}, "chapter_5/valid/extra_credit/incr_expression_statement.c": {"return_code": 1}, "chapter_6/valid/ternary_precedence.c": {"return_code": 20}, "chapter_6/valid/extra_credit/label_token.c": {"return_code": 1}, "chapter_6/valid/extra_credit/whitespace_after_label.c": {"return_code": 1}, "chapter_6/valid/extra_credit/unused_label.c": {"return_code": 0}, "chapter_6/valid/extra_credit/label_all_statements.c": {"return_code": 100}, "chapter_7/valid/extra_credit/goto_sibling_scope.c": {"return_code": 11}, "chapter_7/valid/extra_credit/goto_outer_scope.c": {"return_code": 1}, "chapter_8/valid/extra_credit/loop_header_postfix_and_prefix.c": {"return_code": 1}, "chapter_8/valid/extra_credit/label_loops_breaks_and_continues.c": {"return_code": 12}, "chapter_8/valid/extra_credit/goto_bypass_init_exp.c": {"return_code": 1}, "chapter_8/valid/extra_credit/compound_assignment_controlling_expression.c": {"return_code": 1}, "chapter_8/valid/extra_credit/goto_bypass_post_exp.c": {"return_code": 11}, "chapter_8/valid/extra_credit/label_loop_body.c": {"return_code": 1}, "chapter_8/valid/extra_credit/post_exp_incr.c": {"return_code": 21}, "chapter_8/valid/extra_credit/switch_nested_cases.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_with_continue_2.c": {"return_code": 5}, "chapter_8/valid/extra_credit/switch_not_taken.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_default_only.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_single_case.c": {"return_code": 1}, "chapter_8/valid/extra_credit/case_block.c": {"return_code": 1}, "chapter_8/valid/extra_credit/duffs_device.c": {"return_code": 1}, "chapter_8/valid/extra_credit/loop_in_switch.c": {"return_code": 123}, "chapter_9/valid/arguments_in_registers/dont_clobber_edx.c": {"return_code": 1}, "chapter_9/valid/extra_credit/label_naming_scheme.c": {"return_code": 0}, "chapter_9/valid/extra_credit/dont_clobber_ecx.c": {"return_code": 1}, "chapter_10/valid/extra_credit/bitwise_ops_file_scope_vars.c": {"return_code": 0}, "chapter_10/valid/extra_credit/label_file_scope_var_same_name.c": {"return_code": 0}, "chapter_10/valid/extra_credit/increment_global_vars.c": {"return_code": 0}, "chapter_10/valid/extra_credit/switch_on_extern.c": {"return_code": 0}, "chapter_10/valid/extra_credit/compound_assignment_static_var.c": {"return_code": 0}, "chapter_10/valid/extra_credit/label_static_var_same_name.c": {"return_code": 5}, "chapter_10/valid/extra_credit/switch_skip_extern_decl.c": {"return_code": 0}, "chapter_10/valid/extra_credit/switch_skip_static_initializer.c": {"return_code": 10}, "chapter_10/valid/extra_credit/libraries/same_label_same_fun.c": {"return_code": 0}, "chapter_4/valid/extra_credit/bitwise_xor_precedence.c": {"return_code": 5}, "chapter_4/valid/extra_credit/bitwise_or_precedence.c": {"return_code": 5}, "chapter_11/valid/extra_credit/increment_long.c": {"return_code": 0}, "chapter_11/valid/extra_credit/bitshift.c": {"return_code": 0}, "chapter_12/valid/extra_credit/compound_bitwise.c": {"return_code": 0}, "chapter_12/valid/extra_credit/compound_bitshift.c": {"return_code": 0}, "chapter_11/valid/extra_credit/compound_bitwise.c": {"return_code": 0}, "chapter_11/valid/extra_credit/compound_bitshift.c": {"return_code": 0}, "chapter_13/valid/extra_credit/incr_and_decr.c": {"return_code": 0}, "chapter_12/valid/extra_credit/unsigned_incr_decr.c": {"return_code": 0}, "chapter_14/valid/extra_credit/eval_compound_lhs_once.c": {"return_code": 0, "stdout": "A"}, "chapter_14/valid/extra_credit/incr_and_decr_through_pointer.c": {"return_code": 0}, "chapter_14/valid/extra_credit/bitwise_ops_with_dereferenced_ptrs.c": {"return_code": 0}, "chapter_14/valid/extra_credit/switch_dereferenced_pointer.c": {"return_code": 0}, "chapter_14/valid/extra_credit/bitshift_dereferenced_ptrs.c": {"return_code": 0}, "chapter_14/valid/extra_credit/compound_assign_conversion.c": {"return_code": 0}, "chapter_14/valid/extra_credit/compound_bitwise_dereferenced_ptrs.c": {"return_code": 0}, "chapter_12/valid/extra_credit/postfix_precedence.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_lval_evaluated_once.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_assign_to_nested_subscript.c": {"return_code": 0}, "chapter_15/valid/extra_credit/incr_and_decr_nested_pointers.c": {"return_code": 0}, "chapter_15/valid/extra_credit/incr_and_decr_pointers.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_pointer_assignment.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_nested_pointer_assignment.c": {"return_code": 0}, "chapter_15/valid/extra_credit/postfix_prefix_precedence.c": {"return_code": 0}, "chapter_15/valid/extra_credit/incr_decr_subscripted_vals.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_assign_to_subscripted_val.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_bitwise_subscript.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_assign_array_of_pointers.c": {"return_code": 0}, "chapter_15/valid/extra_credit/bitwise_subscript.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_assign_and_increment.c": {"return_code": 0}} \ No newline at end of file +{"chapter_6/valid/rh_assignment.c": {"return_code": 1}, "chapter_6/valid/if_nested_2.c": {"return_code": 2}, "chapter_6/valid/if_nested_3.c": {"return_code": 3}, "chapter_6/valid/nested_ternary.c": {"return_code": 7}, "chapter_6/valid/binary_false_condition.c": {"return_code": 0}, "chapter_6/valid/else.c": {"return_code": 2}, "chapter_6/valid/nested_ternary_2.c": {"return_code": 15}, "chapter_6/valid/ternary_short_circuit.c": {"return_code": 1}, "chapter_6/valid/multiple_if.c": {"return_code": 8}, "chapter_6/valid/if_null_body.c": {"return_code": 1}, "chapter_6/valid/ternary_rh_binop.c": {"return_code": 1}, "chapter_6/valid/ternary_middle_assignment.c": {"return_code": 2}, "chapter_6/valid/if_nested_4.c": {"return_code": 4}, "chapter_6/valid/ternary_middle_binop.c": {"return_code": 1}, "chapter_6/valid/if_taken.c": {"return_code": 1}, "chapter_6/valid/if_not_taken.c": {"return_code": 0}, "chapter_6/valid/if_nested_5.c": {"return_code": 1}, "chapter_6/valid/assign_ternary.c": {"return_code": 2}, "chapter_6/valid/ternary.c": {"return_code": 4}, "chapter_6/valid/if_nested.c": {"return_code": 1}, "chapter_6/valid/ternary_short_circuit_2.c": {"return_code": 2}, "chapter_6/valid/binary_condition.c": {"return_code": 5}, "chapter_6/valid/extra_credit/goto_label_and_var.c": {"return_code": 5}, "chapter_6/valid/extra_credit/goto_label_main_2.c": {"return_code": 1}, "chapter_6/valid/extra_credit/bitwise_ternary.c": {"return_code": 5}, "chapter_6/valid/extra_credit/goto_label_main.c": {"return_code": 0}, "chapter_6/valid/extra_credit/goto_nested_label.c": {"return_code": 5}, "chapter_6/valid/extra_credit/goto_backwards.c": {"return_code": 5}, "chapter_6/valid/extra_credit/goto_label.c": {"return_code": 1}, "chapter_6/valid/extra_credit/compound_if_expression.c": {"return_code": 1}, "chapter_6/valid/extra_credit/goto_after_declaration.c": {"return_code": 1}, "chapter_8/valid/for.c": {"return_code": 16}, "chapter_8/valid/continue.c": {"return_code": 1}, "chapter_8/valid/multi_continue_same_loop.c": {"return_code": 1}, "chapter_8/valid/for_absent_post.c": {"return_code": 0}, "chapter_8/valid/null_for_header.c": {"return_code": 4}, "chapter_8/valid/nested_loop.c": {"return_code": 1}, "chapter_8/valid/nested_break.c": {"return_code": 250}, "chapter_8/valid/do_while.c": {"return_code": 16}, "chapter_8/valid/for_absent_condition.c": {"return_code": 0}, "chapter_8/valid/do_while_break_immediate.c": {"return_code": 10}, "chapter_8/valid/continue_empty_post.c": {"return_code": 30}, "chapter_8/valid/nested_continue.c": {"return_code": 24}, "chapter_8/valid/break.c": {"return_code": 1}, "chapter_8/valid/for_nested_shadow.c": {"return_code": 1}, "chapter_8/valid/empty_expression.c": {"return_code": 0}, "chapter_8/valid/multi_break.c": {"return_code": 1}, "chapter_8/valid/for_decl.c": {"return_code": 101}, "chapter_8/valid/for_shadow.c": {"return_code": 1}, "chapter_8/valid/break_immediate.c": {"return_code": 1}, "chapter_8/valid/while.c": {"return_code": 6}, "chapter_8/valid/empty_loop_body.c": {"return_code": 252}, "chapter_8/valid/extra_credit/switch_fallthrough.c": {"return_code": 6}, "chapter_8/valid/extra_credit/compound_assignment_for_loop.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_break.c": {"return_code": 10}, "chapter_8/valid/extra_credit/switch_default.c": {"return_code": 22}, "chapter_8/valid/extra_credit/switch_default_fallthrough.c": {"return_code": 0}, "chapter_8/valid/extra_credit/switch_in_loop.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_no_case.c": {"return_code": 4}, "chapter_8/valid/extra_credit/switch_nested_not_taken.c": {"return_code": 2}, "chapter_8/valid/extra_credit/switch_decl.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_with_continue.c": {"return_code": 5}, "chapter_8/valid/extra_credit/switch_empty.c": {"return_code": 12}, "chapter_8/valid/extra_credit/goto_bypass_condition.c": {"return_code": 10}, "chapter_8/valid/extra_credit/switch_nested_switch.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_default_not_last.c": {"return_code": 0}, "chapter_8/valid/extra_credit/switch_assign_in_condition.c": {"return_code": 2}, "chapter_8/valid/extra_credit/switch.c": {"return_code": 3}, "chapter_8/valid/extra_credit/switch_goto_mid_case.c": {"return_code": 1}, "chapter_14/valid/libraries/static_pointer.c": {"return_code": 0}, "chapter_14/valid/libraries/global_pointer.c": {"return_code": 1}, "chapter_14/valid/function_calls/address_of_argument.c": {"return_code": 0}, "chapter_14/valid/function_calls/update_value_through_pointer_parameter.c": {"return_code": 0}, "chapter_14/valid/function_calls/return_pointer.c": {"return_code": 0}, "chapter_14/valid/extra_credit/compound_assign_through_pointer.c": {"return_code": 0}, "chapter_14/valid/declarators/declare_pointer_in_for_loop.c": {"return_code": 5}, "chapter_14/valid/declarators/abstract_declarators.c": {"return_code": 0}, "chapter_14/valid/declarators/declarators.c": {"return_code": 0}, "chapter_14/valid/dereference/static_var_indirection.c": {"return_code": 0}, "chapter_14/valid/dereference/multilevel_indirection.c": {"return_code": 0}, "chapter_14/valid/dereference/read_through_pointers.c": {"return_code": 0}, "chapter_14/valid/dereference/update_through_pointers.c": {"return_code": 0}, "chapter_14/valid/dereference/address_of_dereference.c": {"return_code": 0}, "chapter_14/valid/dereference/simple.c": {"return_code": 3}, "chapter_14/valid/dereference/dereference_expression_result.c": {"return_code": 0}, "chapter_14/valid/casts/cast_between_pointer_types.c": {"return_code": 0}, "chapter_14/valid/casts/pointer_int_casts.c": {"return_code": 0}, "chapter_14/valid/casts/null_pointer_conversion.c": {"return_code": 0}, "chapter_14/valid/comparisons/compare_pointers.c": {"return_code": 0}, "chapter_14/valid/comparisons/pointers_as_conditions.c": {"return_code": 0}, "chapter_14/valid/comparisons/compare_to_null.c": {"return_code": 0}, "chapter_10/valid/static_then_extern.c": {"return_code": 3}, "chapter_10/valid/push_arg_on_page_boundary.c": {"return_code": 1}, "chapter_10/valid/static_local_multiple_scopes.c": {"return_code": 0, "stdout": "Aa\nBb\nCc\nDd\nEe\nFf\nGg\nHh\nIi\nJj\nKk\nLl\nMm\nNn\nOo\nPp\nQq\nRr\nSs\nTt\nUu\nVv\nWw\nXx\nYy\nZz\n"}, "chapter_10/valid/tentative_definition.c": {"return_code": 5}, "chapter_10/valid/static_variables_in_expressions.c": {"return_code": 0}, "chapter_10/valid/static_recursive_call.c": {"return_code": 0, "stdout": "ABCDEFGHIJKLMNOPQRSTUVWXYZ"}, "chapter_10/valid/shadow_static_local_var.c": {"return_code": 0}, "chapter_10/valid/multiple_static_local.c": {"return_code": 29}, "chapter_10/valid/multiple_static_file_scope_vars.c": {"return_code": 4}, "chapter_10/valid/static_local_uninitialized.c": {"return_code": 4}, "chapter_10/valid/type_before_storage_class.c": {"return_code": 7}, "chapter_10/valid/extern_block_scope_variable.c": {"return_code": 3}, "chapter_10/valid/distinct_local_and_extern.c": {"return_code": 7}, "chapter_10/valid/libraries/internal_hides_external_linkage.c": {"return_code": 0}, "chapter_10/valid/libraries/external_tentative_var.c": {"return_code": 0}, "chapter_10/valid/libraries/external_linkage_function.c": {"return_code": 0}, "chapter_10/valid/libraries/external_variable.c": {"return_code": 0}, "chapter_10/valid/libraries/internal_linkage_var.c": {"return_code": 0}, "chapter_10/valid/libraries/external_var_scoping.c": {"return_code": 0}, "chapter_10/valid/libraries/internal_linkage_function.c": {"return_code": 0}, "chapter_10/valid/extra_credit/goto_skip_static_initializer.c": {"return_code": 10}, "chapter_2/valid/neg.c": {"return_code": 251}, "chapter_2/valid/negate_int_max.c": {"return_code": 1}, "chapter_2/valid/redundant_parens.c": {"return_code": 246}, "chapter_2/valid/neg_zero.c": {"return_code": 0}, "chapter_2/valid/bitwise_int_min.c": {"return_code": 254}, "chapter_2/valid/bitwise_zero.c": {"return_code": 255}, "chapter_2/valid/parens_3.c": {"return_code": 4}, "chapter_2/valid/parens_2.c": {"return_code": 253}, "chapter_2/valid/bitwise.c": {"return_code": 243}, "chapter_2/valid/nested_ops_2.c": {"return_code": 1}, "chapter_2/valid/nested_ops.c": {"return_code": 2}, "chapter_2/valid/parens.c": {"return_code": 254}, "chapter_1/valid/return_0.c": {"return_code": 0}, "chapter_1/valid/newlines.c": {"return_code": 0}, "chapter_1/valid/return_2.c": {"return_code": 2}, "chapter_1/valid/multi_digit.c": {"return_code": 100}, "chapter_1/valid/tabs.c": {"return_code": 0}, "chapter_1/valid/spaces.c": {"return_code": 0}, "chapter_1/valid/no_newlines.c": {"return_code": 0}, "chapter_13/valid/floating_expressions/logical.c": {"return_code": 0}, "chapter_13/valid/floating_expressions/arithmetic_ops.c": {"return_code": 0}, "chapter_13/valid/floating_expressions/static_initialized_double.c": {"return_code": 0}, "chapter_13/valid/floating_expressions/comparisons.c": {"return_code": 0}, "chapter_13/valid/floating_expressions/simple.c": {"return_code": 1}, "chapter_13/valid/floating_expressions/loop_controlling_expression.c": {"return_code": 100}, "chapter_13/valid/libraries/double_parameters.c": {"return_code": 0}, "chapter_13/valid/libraries/use_arg_after_fun_call.c": {"return_code": 4}, "chapter_13/valid/libraries/double_and_int_params_recursive.c": {"return_code": 0}, "chapter_13/valid/libraries/extern_double.c": {"return_code": 1}, "chapter_13/valid/libraries/double_params_and_result.c": {"return_code": 1}, "chapter_13/valid/explicit_casts/double_to_signed.c": {"return_code": 0}, "chapter_13/valid/explicit_casts/unsigned_to_double.c": {"return_code": 0}, "chapter_13/valid/explicit_casts/signed_to_double.c": {"return_code": 0}, "chapter_13/valid/explicit_casts/double_to_unsigned.c": {"return_code": 0}, "chapter_13/valid/implicit_casts/convert_for_assignment.c": {"return_code": 0}, "chapter_13/valid/implicit_casts/common_type.c": {"return_code": 0}, "chapter_13/valid/implicit_casts/static_initializers.c": {"return_code": 0}, "chapter_13/valid/implicit_casts/complex_arithmetic_common_type.c": {"return_code": 1}, "chapter_13/valid/constants/round_constants.c": {"return_code": 0}, "chapter_13/valid/constants/constant_doubles.c": {"return_code": 0}, "chapter_13/valid/special_values/subnormal_not_zero.c": {"return_code": 0}, "chapter_13/valid/special_values/negative_zero.c": {"return_code": 0}, "chapter_13/valid/special_values/infinity.c": {"return_code": 0}, "chapter_13/valid/function_calls/double_parameters.c": {"return_code": 0}, "chapter_13/valid/function_calls/double_and_int_parameters.c": {"return_code": 0}, "chapter_13/valid/function_calls/standard_library_call.c": {"return_code": 0}, "chapter_13/valid/function_calls/use_arg_after_fun_call.c": {"return_code": 4}, "chapter_13/valid/function_calls/return_double.c": {"return_code": 1}, "chapter_13/valid/function_calls/double_and_int_params_recursive.c": {"return_code": 0}, "chapter_13/valid/extra_credit/compound_assign.c": {"return_code": 0}, "chapter_13/valid/extra_credit/nan.c": {"return_code": 0}, "chapter_13/valid/extra_credit/compound_assign_implicit_cast.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/temporary_lifetime.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/ignore_retval.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/return_space_overlap.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/return_big_struct_on_page_boundary.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/simple.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/return_struct_on_page_boundary.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/return_incomplete_type.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/stack_clobber.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/libraries/return_calling_conventions.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/libraries/missing_retval.c": {"return_code": 1}, "chapter_18/valid/params_and_returns/libraries/access_retval_members.c": {"return_code": 0}, "chapter_18/valid/params_and_returns/libraries/retval_struct_sizes.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/semantic_analysis/resolve_tags.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/semantic_analysis/namespaces.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/semantic_analysis/incomplete_structs.c": {"return_code": 0, "stdout": "I'm a struct!\n"}, "chapter_18/valid/no_structure_parameters/semantic_analysis/cast_struct_to_void.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/global_struct.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/param_struct_pointer.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/return_struct_pointer.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/opaque_struct.c": {"return_code": 0, "stdout": "new struct\nstatic struct\nglobal struct\n"}, "chapter_18/valid/no_structure_parameters/libraries/array_of_structs.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/initializers/auto_struct_initializers.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/initializers/static_struct_initializers.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/initializers/nested_static_struct_initializers.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/libraries/initializers/nested_auto_struct_initializers.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/smoke_tests/static_vs_auto.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/smoke_tests/simple.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/size_and_offset_calculations/member_offsets.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/size_and_offset_calculations/sizeof_exps.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/size_and_offset_calculations/sizeof_type.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/scalar_member_access/arrow.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/scalar_member_access/linked_list.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/scalar_member_access/static_structs.c": {"return_code": 0, "stdout": "zero\nmn\nop\nwx\nyz\nBCD\nCDE\nDEF\nEFG\nbcd\ncde\n"}, "chapter_18/valid/no_structure_parameters/scalar_member_access/nested_struct.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/scalar_member_access/dot.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/parse_and_lex/postfix_precedence.c": {"return_code": 1}, "chapter_18/valid/no_structure_parameters/parse_and_lex/trailing_comma.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/parse_and_lex/space_around_struct_member.c": {"return_code": 1}, "chapter_18/valid/no_structure_parameters/parse_and_lex/struct_member_looks_like_const.c": {"return_code": 3}, "chapter_18/valid/no_structure_parameters/struct_copy/copy_struct_through_pointer.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/struct_copy/copy_struct_with_arrow_operator.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/struct_copy/copy_struct.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/struct_copy/stack_clobber.c": {"return_code": 0}, "chapter_18/valid/no_structure_parameters/struct_copy/copy_struct_with_dot_operator.c": {"return_code": 0}, "chapter_18/valid/parameters/pass_args_on_page_boundary.c": {"return_code": 0}, "chapter_18/valid/parameters/incomplete_param_type.c": {"return_code": 3}, "chapter_18/valid/parameters/simple.c": {"return_code": 0}, "chapter_18/valid/parameters/stack_clobber.c": {"return_code": 0}, "chapter_18/valid/parameters/libraries/param_calling_conventions.c": {"return_code": 0}, "chapter_18/valid/parameters/libraries/struct_sizes.c": {"return_code": 0}, "chapter_18/valid/parameters/libraries/pass_struct.c": {"return_code": 0}, "chapter_18/valid/parameters/libraries/modify_param.c": {"return_code": 0}, "chapter_18/valid/parameters/libraries/classify_params.c": {"return_code": 0}, "chapter_15/valid/initialization/automatic.c": {"return_code": 0}, "chapter_15/valid/initialization/static.c": {"return_code": 0}, "chapter_15/valid/initialization/trailing_comma_initializer.c": {"return_code": 3}, "chapter_15/valid/initialization/automatic_nested.c": {"return_code": 0}, "chapter_15/valid/initialization/static_nested.c": {"return_code": 0}, "chapter_15/valid/libraries/set_array_val.c": {"return_code": 0}, "chapter_15/valid/libraries/return_pointer_to_array.c": {"return_code": 0}, "chapter_15/valid/libraries/global_array.c": {"return_code": 0}, "chapter_15/valid/subscripting/subscript_nested.c": {"return_code": 0}, "chapter_15/valid/subscripting/subscript_pointer.c": {"return_code": 0}, "chapter_15/valid/subscripting/array_of_pointers_to_arrays.c": {"return_code": 0}, "chapter_15/valid/subscripting/simple_subscripts.c": {"return_code": 0}, "chapter_15/valid/subscripting/simple.c": {"return_code": 3}, "chapter_15/valid/subscripting/complex_operands.c": {"return_code": 0}, "chapter_15/valid/subscripting/addition_subscript_equivalence.c": {"return_code": 0}, "chapter_15/valid/subscripting/subscript_precedence.c": {"return_code": 1}, "chapter_15/valid/allocation/test_alignment.c": {"return_code": 0}, "chapter_15/valid/pointer_arithmetic/pointer_add.c": {"return_code": 0}, "chapter_15/valid/pointer_arithmetic/add_dereference_and_assign.c": {"return_code": 0}, "chapter_15/valid/pointer_arithmetic/pointer_diff.c": {"return_code": 0}, "chapter_15/valid/pointer_arithmetic/compare.c": {"return_code": 0}, "chapter_15/valid/declarators/big_array.c": {"return_code": 0}, "chapter_15/valid/declarators/equivalent_declarators.c": {"return_code": 0}, "chapter_15/valid/declarators/return_nested_array.c": {"return_code": 0}, "chapter_15/valid/declarators/array_as_argument.c": {"return_code": 0}, "chapter_15/valid/declarators/for_loop_array.c": {"return_code": 0}, "chapter_15/valid/casts/multi_dim_casts.c": {"return_code": 0}, "chapter_15/valid/casts/implicit_and_explicit_conversions.c": {"return_code": 0}, "chapter_15/valid/casts/cast_array_of_pointers.c": {"return_code": 1}, "chapter_17/valid/void/cast_to_void.c": {"return_code": 12}, "chapter_17/valid/void/void_function.c": {"return_code": 0}, "chapter_17/valid/void/void_for_loop.c": {"return_code": 0, "stdout": "ZYXWVUTSRQPONMLKJIHGFEDCBAABCDEFGHIJKLMNOPQRSTUVWXYZZYXWVUTSRQPONMLKJIHGFEDCBA"}, "chapter_17/valid/void/ternary.c": {"return_code": 0}, "chapter_17/valid/libraries/pass_alloced_memory.c": {"return_code": 0}, "chapter_17/valid/libraries/test_for_memory_leaks.c": {"return_code": 0}, "chapter_17/valid/libraries/sizeof_extern.c": {"return_code": 1}, "chapter_17/valid/sizeof/sizeof_basic_types.c": {"return_code": 0}, "chapter_17/valid/sizeof/sizeof_consts.c": {"return_code": 0}, "chapter_17/valid/sizeof/sizeof_expressions.c": {"return_code": 0}, "chapter_17/valid/sizeof/sizeof_array.c": {"return_code": 0}, "chapter_17/valid/sizeof/sizeof_derived_types.c": {"return_code": 0}, "chapter_17/valid/sizeof/simple.c": {"return_code": 0}, "chapter_17/valid/sizeof/sizeof_result_is_ulong.c": {"return_code": 0}, "chapter_17/valid/sizeof/sizeof_not_evaluated.c": {"return_code": 4}, "chapter_17/valid/void_pointer/array_of_pointers_to_void.c": {"return_code": 0}, "chapter_17/valid/void_pointer/conversion_by_assignment.c": {"return_code": 0}, "chapter_17/valid/void_pointer/explicit_cast.c": {"return_code": 0}, "chapter_17/valid/void_pointer/simple.c": {"return_code": 100}, "chapter_17/valid/void_pointer/memory_management_functions.c": {"return_code": 0}, "chapter_17/valid/void_pointer/common_pointer_type.c": {"return_code": 0}, "chapter_16/valid/strings_as_lvalues/addr_of_string.c": {"return_code": 0, "stdout": "Sample\tstring!\n\n"}, "chapter_16/valid/strings_as_lvalues/standard_library_calls.c": {"return_code": 0, "stdout": "Hello, World!\n"}, "chapter_16/valid/strings_as_lvalues/array_of_strings.c": {"return_code": 0}, "chapter_16/valid/strings_as_lvalues/cast_string_pointer.c": {"return_code": 0}, "chapter_16/valid/strings_as_lvalues/empty_string.c": {"return_code": 0}, "chapter_16/valid/strings_as_lvalues/pointer_operations.c": {"return_code": 0}, "chapter_16/valid/strings_as_lvalues/simple.c": {"return_code": 108}, "chapter_16/valid/strings_as_lvalues/adjacent_strings.c": {"return_code": 0, "stdout": "Hello, World\n"}, "chapter_16/valid/strings_as_lvalues/string_special_characters.c": {"return_code": 0, "stdout": "Hello\"world\nHello\\World\nLine\nbreak!\nTesting, 123.\n^@1 _\\]\n"}, "chapter_16/valid/strings_as_lvalues/strings_in_function_calls.c": {"return_code": 0}, "chapter_16/valid/libraries/return_char.c": {"return_code": 0}, "chapter_16/valid/libraries/char_arguments.c": {"return_code": 0}, "chapter_16/valid/libraries/global_char.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/array_init_special_chars.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/terminating_null_bytes.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/simple.c": {"return_code": 99}, "chapter_16/valid/strings_as_initializers/partial_initialize_via_string.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/adjacent_strings_in_initializer.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/transfer_by_eightbyte.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/literals_and_compound_initializers.c": {"return_code": 0}, "chapter_16/valid/strings_as_initializers/write_to_array.c": {"return_code": 0, "stdout": "abc\nabx\nHello\nWorld\nJello\n"}, "chapter_16/valid/strings_as_initializers/test_alignment.c": {"return_code": 0}, "chapter_16/valid/char_constants/return_char_constant.c": {"return_code": 99}, "chapter_16/valid/char_constants/escape_sequences.c": {"return_code": 0}, "chapter_16/valid/char_constants/control_characters.c": {"return_code": 0}, "chapter_16/valid/char_constants/char_constant_operations.c": {"return_code": 0}, "chapter_16/valid/chars/partial_initialization.c": {"return_code": 0}, "chapter_16/valid/chars/convert_by_assignment.c": {"return_code": 0}, "chapter_16/valid/chars/type_specifiers.c": {"return_code": 0}, "chapter_16/valid/chars/push_arg_on_page_boundary.c": {"return_code": 1}, "chapter_16/valid/chars/integer_promotion.c": {"return_code": 0}, "chapter_16/valid/chars/chained_casts.c": {"return_code": 0}, "chapter_16/valid/chars/return_char.c": {"return_code": 0}, "chapter_16/valid/chars/char_arguments.c": {"return_code": 0}, "chapter_16/valid/chars/char_expressions.c": {"return_code": 0}, "chapter_16/valid/chars/access_through_char_pointer.c": {"return_code": 0}, "chapter_16/valid/chars/common_type.c": {"return_code": 0}, "chapter_16/valid/chars/static_initializers.c": {"return_code": 0}, "chapter_16/valid/chars/explicit_casts.c": {"return_code": 0}, "chapter_9/valid/arguments_in_registers/parameter_shadows_own_function.c": {"return_code": 2}, "chapter_9/valid/arguments_in_registers/expression_args.c": {"return_code": 2}, "chapter_9/valid/arguments_in_registers/single_arg.c": {"return_code": 6}, "chapter_9/valid/arguments_in_registers/hello_world.c": {"return_code": 0, "stdout": "Hello, World!\n"}, "chapter_9/valid/arguments_in_registers/parameter_shadows_function.c": {"return_code": 3}, "chapter_9/valid/arguments_in_registers/parameters_are_preserved.c": {"return_code": 1}, "chapter_9/valid/arguments_in_registers/forward_decl_multi_arg.c": {"return_code": 1}, "chapter_9/valid/arguments_in_registers/fibonacci.c": {"return_code": 8}, "chapter_9/valid/arguments_in_registers/param_shadows_local_var.c": {"return_code": 20}, "chapter_9/valid/no_arguments/function_shadows_variable.c": {"return_code": 11}, "chapter_9/valid/no_arguments/use_function_in_expression.c": {"return_code": 21}, "chapter_9/valid/no_arguments/no_return_value.c": {"return_code": 3}, "chapter_9/valid/no_arguments/multiple_declarations.c": {"return_code": 3}, "chapter_9/valid/no_arguments/precedence.c": {"return_code": 0}, "chapter_9/valid/no_arguments/forward_decl.c": {"return_code": 3}, "chapter_9/valid/no_arguments/variable_shadows_function.c": {"return_code": 7}, "chapter_9/valid/libraries/system_call.c": {"return_code": 0, "stdout": "H"}, "chapter_9/valid/libraries/many_args.c": {"return_code": 115}, "chapter_9/valid/libraries/addition.c": {"return_code": 3}, "chapter_9/valid/libraries/no_function_calls/division.c": {"return_code": 1}, "chapter_9/valid/libraries/no_function_calls/local_stack_variables.c": {"return_code": 100}, "chapter_9/valid/extra_credit/compound_assign_function_result.c": {"return_code": 1}, "chapter_9/valid/extra_credit/goto_label_multiple_functions.c": {"return_code": 5}, "chapter_9/valid/extra_credit/goto_shared_name.c": {"return_code": 1}, "chapter_9/valid/stack_arguments/call_putchar.c": {"return_code": 8, "stdout": "A"}, "chapter_9/valid/stack_arguments/lots_of_arguments.c": {"return_code": 1}, "chapter_9/valid/stack_arguments/stack_alignment.c": {"return_code": 3}, "chapter_9/valid/stack_arguments/test_for_memory_leaks.c": {"return_code": 1}, "chapter_12/valid/unsigned_expressions/logical.c": {"return_code": 0}, "chapter_12/valid/unsigned_expressions/arithmetic_wraparound.c": {"return_code": 1}, "chapter_12/valid/unsigned_expressions/arithmetic_ops.c": {"return_code": 0}, "chapter_12/valid/unsigned_expressions/comparisons.c": {"return_code": 0}, "chapter_12/valid/unsigned_expressions/simple.c": {"return_code": 1}, "chapter_12/valid/unsigned_expressions/static_variables.c": {"return_code": 1}, "chapter_12/valid/unsigned_expressions/locals.c": {"return_code": 0}, "chapter_12/valid/libraries/unsigned_args.c": {"return_code": 0}, "chapter_12/valid/libraries/unsigned_global_var.c": {"return_code": 1}, "chapter_12/valid/explicit_casts/same_size_conversion.c": {"return_code": 0}, "chapter_12/valid/explicit_casts/extension.c": {"return_code": 0}, "chapter_12/valid/explicit_casts/round_trip_casts.c": {"return_code": 0}, "chapter_12/valid/explicit_casts/chained_casts.c": {"return_code": 0}, "chapter_12/valid/explicit_casts/truncate.c": {"return_code": 0}, "chapter_12/valid/type_specifiers/signed_type_specifiers.c": {"return_code": 0}, "chapter_12/valid/type_specifiers/unsigned_type_specifiers.c": {"return_code": 0}, "chapter_12/valid/implicit_casts/convert_by_assignment.c": {"return_code": 0}, "chapter_12/valid/implicit_casts/promote_constants.c": {"return_code": 0}, "chapter_12/valid/implicit_casts/common_type.c": {"return_code": 0}, "chapter_12/valid/implicit_casts/static_initializers.c": {"return_code": 0}, "chapter_12/valid/extra_credit/switch_uint.c": {"return_code": 0}, "chapter_12/valid/extra_credit/compound_assign_uint.c": {"return_code": 1}, "chapter_12/valid/extra_credit/bitwise_unsigned_shift.c": {"return_code": 0}, "chapter_12/valid/extra_credit/bitwise_unsigned_ops.c": {"return_code": 0}, "chapter_5/valid/null_then_return.c": {"return_code": 0}, "chapter_5/valid/empty_function_body.c": {"return_code": 0}, "chapter_5/valid/short_circuit_or.c": {"return_code": 0}, "chapter_5/valid/assignment_in_initializer.c": {"return_code": 0}, "chapter_5/valid/non_short_circuit_or.c": {"return_code": 1}, "chapter_5/valid/null_statement.c": {"return_code": 0}, "chapter_5/valid/short_circuit_and_fail.c": {"return_code": 0}, "chapter_5/valid/local_var_missing_return.c": {"return_code": 0}, "chapter_5/valid/exp_then_declaration.c": {"return_code": 1}, "chapter_5/valid/add_variables.c": {"return_code": 3}, "chapter_5/valid/assign_val_in_initializer.c": {"return_code": 5}, "chapter_5/valid/assignment_lowest_precedence.c": {"return_code": 1}, "chapter_5/valid/allocate_temps_and_vars.c": {"return_code": 1}, "chapter_5/valid/use_assignment_result.c": {"return_code": 4}, "chapter_5/valid/use_val_in_own_initializer.c": {"return_code": 0}, "chapter_5/valid/unused_exp.c": {"return_code": 0}, "chapter_5/valid/return_var.c": {"return_code": 2}, "chapter_5/valid/mixed_precedence_assignment.c": {"return_code": 4}, "chapter_5/valid/assign.c": {"return_code": 2}, "chapter_5/valid/extra_credit/bitwise_shiftr_assign.c": {"return_code": 77}, "chapter_5/valid/extra_credit/bitwise_shiftl_variable.c": {"return_code": 24}, "chapter_5/valid/extra_credit/compound_bitwise_and.c": {"return_code": 2}, "chapter_5/valid/extra_credit/compound_minus.c": {"return_code": 2}, "chapter_5/valid/extra_credit/compound_multiply.c": {"return_code": 12}, "chapter_5/valid/extra_credit/compound_bitwise_xor.c": {"return_code": 2}, "chapter_5/valid/extra_credit/compound_bitwise_or.c": {"return_code": 31}, "chapter_5/valid/extra_credit/compound_assignment_chained.c": {"return_code": 1}, "chapter_5/valid/extra_credit/compound_divide.c": {"return_code": 2}, "chapter_5/valid/extra_credit/compound_bitwise_shiftr.c": {"return_code": 102}, "chapter_5/valid/extra_credit/compound_assignment_use_result.c": {"return_code": 1}, "chapter_5/valid/extra_credit/compound_bitwise_shiftl.c": {"return_code": 48}, "chapter_5/valid/extra_credit/compound_plus.c": {"return_code": 4}, "chapter_5/valid/extra_credit/compound_mod.c": {"return_code": 2}, "chapter_7/valid/declaration_only.c": {"return_code": 1}, "chapter_7/valid/assign_to_self_2.c": {"return_code": 3}, "chapter_7/valid/hidden_then_visible.c": {"return_code": 1}, "chapter_7/valid/hidden_variable.c": {"return_code": 1}, "chapter_7/valid/assign_to_self.c": {"return_code": 4}, "chapter_7/valid/inner_uninitialized.c": {"return_code": 4}, "chapter_7/valid/multiple_vars_same_name.c": {"return_code": 2}, "chapter_7/valid/use_in_inner_scope.c": {"return_code": 3}, "chapter_7/valid/empty_blocks.c": {"return_code": 30}, "chapter_7/valid/nested_if.c": {"return_code": 1}, "chapter_7/valid/similar_var_names.c": {"return_code": 28}, "chapter_7/valid/extra_credit/goto_before_declaration.c": {"return_code": 0}, "chapter_7/valid/extra_credit/compound_subtract_in_block.c": {"return_code": 1}, "chapter_7/valid/extra_credit/goto_inner_scope.c": {"return_code": 1}, "chapter_4/valid/le_true.c": {"return_code": 2}, "chapter_4/valid/ne_true.c": {"return_code": 1}, "chapter_4/valid/ge_false.c": {"return_code": 0}, "chapter_4/valid/not_zero.c": {"return_code": 1}, "chapter_4/valid/precedence_2.c": {"return_code": 0}, "chapter_4/valid/ge_true.c": {"return_code": 2}, "chapter_4/valid/eq_precedence.c": {"return_code": 1}, "chapter_4/valid/eq_false.c": {"return_code": 0}, "chapter_4/valid/or_short_circuit.c": {"return_code": 1}, "chapter_4/valid/not_sum.c": {"return_code": 1}, "chapter_4/valid/precedence_4.c": {"return_code": 1}, "chapter_4/valid/and_short_circuit.c": {"return_code": 0}, "chapter_4/valid/precedence_3.c": {"return_code": 0}, "chapter_4/valid/compare_arithmetic_results.c": {"return_code": 1}, "chapter_4/valid/and_false.c": {"return_code": 0}, "chapter_4/valid/precedence_5.c": {"return_code": 1}, "chapter_4/valid/associativity.c": {"return_code": 1}, "chapter_4/valid/gt_true.c": {"return_code": 1}, "chapter_4/valid/lt_false.c": {"return_code": 0}, "chapter_4/valid/or_true.c": {"return_code": 3}, "chapter_4/valid/or_false.c": {"return_code": 0}, "chapter_4/valid/eq_true.c": {"return_code": 1}, "chapter_4/valid/ne_false.c": {"return_code": 0}, "chapter_4/valid/multi_short_circuit.c": {"return_code": 0}, "chapter_4/valid/gt_false.c": {"return_code": 0}, "chapter_4/valid/operate_on_booleans.c": {"return_code": 0}, "chapter_4/valid/not.c": {"return_code": 0}, "chapter_4/valid/le_false.c": {"return_code": 0}, "chapter_4/valid/nested_ops.c": {"return_code": 0}, "chapter_4/valid/precedence.c": {"return_code": 1}, "chapter_4/valid/not_sum_2.c": {"return_code": 0}, "chapter_4/valid/and_true.c": {"return_code": 1}, "chapter_4/valid/lt_true.c": {"return_code": 1}, "chapter_3/valid/mod.c": {"return_code": 0}, "chapter_3/valid/unop_add.c": {"return_code": 0}, "chapter_3/valid/associativity_3.c": {"return_code": 8}, "chapter_3/valid/mult.c": {"return_code": 6}, "chapter_3/valid/sub.c": {"return_code": 255}, "chapter_3/valid/div_neg.c": {"return_code": 254}, "chapter_3/valid/unop_parens.c": {"return_code": 253}, "chapter_3/valid/add.c": {"return_code": 3}, "chapter_3/valid/associativity.c": {"return_code": 252}, "chapter_3/valid/associativity_2.c": {"return_code": 1}, "chapter_3/valid/div.c": {"return_code": 2}, "chapter_3/valid/sub_neg.c": {"return_code": 3}, "chapter_3/valid/associativity_and_precedence.c": {"return_code": 10}, "chapter_3/valid/parens.c": {"return_code": 14}, "chapter_3/valid/precedence.c": {"return_code": 14}, "chapter_3/valid/extra_credit/bitwise_shiftr.c": {"return_code": 62}, "chapter_3/valid/extra_credit/bitwise_and.c": {"return_code": 1}, "chapter_3/valid/extra_credit/bitwise_shiftl.c": {"return_code": 140}, "chapter_3/valid/extra_credit/bitwise_or.c": {"return_code": 3}, "chapter_3/valid/extra_credit/bitwise_shift_precedence.c": {"return_code": 0}, "chapter_3/valid/extra_credit/bitwise_xor.c": {"return_code": 6}, "chapter_3/valid/extra_credit/bitwise_shift_associativity_2.c": {"return_code": 16}, "chapter_3/valid/extra_credit/bitwise_shift_associativity.c": {"return_code": 132}, "chapter_3/valid/extra_credit/bitwise_precedence.c": {"return_code": 21}, "chapter_11/valid/long_expressions/long_args.c": {"return_code": 0}, "chapter_11/valid/long_expressions/logical.c": {"return_code": 0}, "chapter_11/valid/long_expressions/type_specifiers.c": {"return_code": 0}, "chapter_11/valid/long_expressions/multi_op.c": {"return_code": 1}, "chapter_11/valid/long_expressions/large_constants.c": {"return_code": 0}, "chapter_11/valid/long_expressions/arithmetic_ops.c": {"return_code": 0}, "chapter_11/valid/long_expressions/return_long.c": {"return_code": 1}, "chapter_11/valid/long_expressions/comparisons.c": {"return_code": 0}, "chapter_11/valid/long_expressions/simple.c": {"return_code": 1}, "chapter_11/valid/long_expressions/static_long.c": {"return_code": 1}, "chapter_11/valid/long_expressions/long_and_int_locals.c": {"return_code": 0}, "chapter_11/valid/long_expressions/assign.c": {"return_code": 1}, "chapter_11/valid/libraries/long_args.c": {"return_code": 0}, "chapter_11/valid/libraries/maintain_stack_alignment.c": {"return_code": 12}, "chapter_11/valid/libraries/return_long.c": {"return_code": 0}, "chapter_11/valid/libraries/long_global_var.c": {"return_code": 0}, "chapter_11/valid/explicit_casts/truncate.c": {"return_code": 0}, "chapter_11/valid/explicit_casts/sign_extend.c": {"return_code": 0}, "chapter_11/valid/implicit_casts/convert_by_assignment.c": {"return_code": 0}, "chapter_11/valid/implicit_casts/common_type.c": {"return_code": 0}, "chapter_11/valid/implicit_casts/long_constants.c": {"return_code": 0}, "chapter_11/valid/implicit_casts/convert_function_arguments.c": {"return_code": 0}, "chapter_11/valid/implicit_casts/convert_static_initializer.c": {"return_code": 0}, "chapter_11/valid/extra_credit/bitwise_long_op.c": {"return_code": 0}, "chapter_11/valid/extra_credit/compound_assign_to_int.c": {"return_code": 0}, "chapter_11/valid/extra_credit/compound_assign_to_long.c": {"return_code": 0}, "chapter_11/valid/extra_credit/switch_int.c": {"return_code": 0}, "chapter_11/valid/extra_credit/switch_long.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_truncate.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_cast_to_double.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_ulong.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_double.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_conditional_jump.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_extensions_and_copies.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/negative_zero.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_long.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_uint.c": {"return_code": 0}, "chapter_19/constant_folding/all_types/fold_cast_from_double.c": {"return_code": 0}, "chapter_19/constant_folding/int_only/fold_unary.c": {"return_code": 0}, "chapter_19/constant_folding/int_only/fold_conditional_jump.c": {"return_code": 0}, "chapter_19/constant_folding/int_only/fold_binary.c": {"return_code": 0}, "chapter_19/constant_folding/int_only/fold_control_flow.c": {"return_code": 0}, "chapter_19/constant_folding/int_only/fold_exception.c": {"return_code": 0}, "chapter_19/unreachable_code_elimination/remove_useless_starting_label.c": {"return_code": 99}, "chapter_19/unreachable_code_elimination/dead_for_loop.c": {"return_code": 10}, "chapter_19/unreachable_code_elimination/and_clause.c": {"return_code": 0}, "chapter_19/unreachable_code_elimination/keep_final_jump.c": {"return_code": 17}, "chapter_19/unreachable_code_elimination/remove_jump_keep_label.c": {"return_code": 10}, "chapter_19/unreachable_code_elimination/dead_branch_inside_loop.c": {"return_code": 0}, "chapter_19/unreachable_code_elimination/empty.c": {"return_code": 0}, "chapter_19/unreachable_code_elimination/infinite_loop.c": {"return_code": 11}, "chapter_19/unreachable_code_elimination/constant_if_else.c": {"return_code": 45}, "chapter_19/unreachable_code_elimination/dead_blocks_with_predecessors.c": {"return_code": 5}, "chapter_19/unreachable_code_elimination/remove_conditional_jumps.c": {"return_code": 1}, "chapter_19/unreachable_code_elimination/dead_after_return.c": {"return_code": 2}, "chapter_19/unreachable_code_elimination/empty_block.c": {"return_code": 0}, "chapter_19/unreachable_code_elimination/dead_after_if_else.c": {"return_code": 0}, "chapter_19/unreachable_code_elimination/or_clause.c": {"return_code": 1}, "chapter_19/copy_propagation/all_types/pointer_arithmetic.c": {"return_code": 2}, "chapter_19/copy_propagation/all_types/store_doesnt_kill.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/propagate_into_type_conversions.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/redundant_double_copies.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/char_type_conversion.c": {"return_code": 1, "stdout": "CBA@"}, "chapter_19/copy_propagation/all_types/alias_analysis.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/copy_struct.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/redundant_struct_copies.c": {"return_code": 1}, "chapter_19/copy_propagation/all_types/propagate_null_pointer.c": {"return_code": 1}, "chapter_19/copy_propagation/all_types/propagate_all_types.c": {"return_code": 1}, "chapter_19/copy_propagation/all_types/funcall_kills_aliased.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/dont_propagate/static_are_aliased.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/dont_propagate/store_kills_aliased.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/dont_propagate/copy_to_offset.c": {"return_code": 3}, "chapter_19/copy_propagation/all_types/dont_propagate/dont_propagate_addr_of.c": {"return_code": 0}, "chapter_19/copy_propagation/all_types/dont_propagate/type_conversion.c": {"return_code": 1}, "chapter_19/copy_propagation/all_types/dont_propagate/zero_neg_zero_different.c": {"return_code": 1}, "chapter_19/copy_propagation/int_only/killed_then_redefined.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/different_paths_same_copy.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/multi_path_no_kill.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/redundant_copies.c": {"return_code": 20}, "chapter_19/copy_propagation/int_only/fig_19_8.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/propagate_into_complex_expressions.c": {"return_code": 1}, "chapter_19/copy_propagation/int_only/propagate_static.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/propagate_static_var.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/kill_and_add_copies.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/init_all_copies.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/propagate_params.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/nested_loops.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/constant_propagation.c": {"return_code": 6}, "chapter_19/copy_propagation/int_only/propagate_var.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/different_source_values_same_copy.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/dont_propagate/source_killed_on_one_path.c": {"return_code": 0, "stdout": "DA"}, "chapter_19/copy_propagation/int_only/dont_propagate/one_reaching_copy.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/dont_propagate/dest_killed.c": {"return_code": 4}, "chapter_19/copy_propagation/int_only/dont_propagate/no_copies_reach_entry.c": {"return_code": 4}, "chapter_19/copy_propagation/int_only/dont_propagate/listing_19_14.c": {"return_code": 101}, "chapter_19/copy_propagation/int_only/dont_propagate/add_all_blocks_to_worklist.c": {"return_code": 100}, "chapter_19/copy_propagation/int_only/dont_propagate/multi_values.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/dont_propagate/static_dst_killed.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/dont_propagate/static_src_killed.c": {"return_code": 0}, "chapter_19/copy_propagation/int_only/dont_propagate/source_killed.c": {"return_code": 0}, "chapter_19/dead_store_elimination/all_types/aliased_dead_at_exit.c": {"return_code": 0}, "chapter_19/dead_store_elimination/all_types/getaddr_doesnt_gen.c": {"return_code": 0}, "chapter_19/dead_store_elimination/all_types/copy_to_dead_struct.c": {"return_code": 4}, "chapter_19/dead_store_elimination/all_types/delete_dead_pt_ii_instructions.c": {"return_code": 5}, "chapter_19/dead_store_elimination/all_types/dont_elim/funcall_generates_aliased.c": {"return_code": 4}, "chapter_19/dead_store_elimination/all_types/dont_elim/copytooffset_doesnt_kill.c": {"return_code": 0}, "chapter_19/dead_store_elimination/all_types/dont_elim/use_and_update.c": {"return_code": 1}, "chapter_19/dead_store_elimination/all_types/dont_elim/recognize_all_uses.c": {"return_code": 0}, "chapter_19/dead_store_elimination/all_types/dont_elim/never_kill_store.c": {"return_code": 4}, "chapter_19/dead_store_elimination/all_types/dont_elim/load_generates_aliased.c": {"return_code": 10}, "chapter_19/dead_store_elimination/int_only/static_not_always_live.c": {"return_code": 23}, "chapter_19/dead_store_elimination/int_only/fig_19_11.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/dead_store_static_var.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/loop_dead_store.c": {"return_code": 0, "stdout": "CHNTZ"}, "chapter_19/dead_store_elimination/int_only/simple.c": {"return_code": 3}, "chapter_19/dead_store_elimination/int_only/delete_arithmetic_ops.c": {"return_code": 5}, "chapter_19/dead_store_elimination/int_only/elim_second_copy.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/initialize_blocks_with_empty_set.c": {"return_code": 1}, "chapter_19/dead_store_elimination/int_only/dont_elim/self_copy.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/dont_elim/static_vars_at_exit.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/dont_elim/used_one_path.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/dont_elim/recognize_all_uses.c": {"return_code": 0}, "chapter_19/dead_store_elimination/int_only/dont_elim/dont_remove_funcall.c": {"return_code": 0, "stdout": "C"}, "chapter_19/dead_store_elimination/int_only/dont_elim/add_all_to_worklist.c": {"return_code": 0, "stdout": "ML"}, "chapter_19/dead_store_elimination/int_only/dont_elim/nested_loops.c": {"return_code": 0, "stdout": "DKHEB"}, "chapter_19/dead_store_elimination/int_only/dont_elim/loop.c": {"return_code": 1}, "chapter_19/dead_store_elimination/int_only/dont_elim/static_vars_fun.c": {"return_code": 5}, "chapter_19/whole_pipeline/all_types/fold_infinity.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/fold_cast_to_double.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/signed_unsigned_conversion.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/alias_analysis_change.c": {"return_code": 0, "stdout": "A"}, "chapter_19/whole_pipeline/all_types/fold_char_condition.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/fold_negative_zero.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/fold_negative_values.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/listing_19_5_more_types.c": {"return_code": 9}, "chapter_19/whole_pipeline/all_types/fold_cast_from_double.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/fold_extension_and_truncation.c": {"return_code": 0}, "chapter_19/whole_pipeline/int_only/dead_condition.c": {"return_code": 10}, "chapter_19/whole_pipeline/int_only/listing_19_5.c": {"return_code": 9}, "chapter_19/whole_pipeline/int_only/elim_and_copy_prop.c": {"return_code": 10}, "chapter_19/whole_pipeline/int_only/remainder_test.c": {"return_code": 0}, "chapter_19/whole_pipeline/int_only/int_min.c": {"return_code": 0}, "chapter_20/all_types/no_coalescing/mixed_ints.c": {"return_code": 9}, "chapter_20/all_types/no_coalescing/dbl_trivially_colorable.c": {"return_code": 3}, "chapter_20/all_types/no_coalescing/dbl_fun_call.c": {"return_code": 1}, "chapter_20/all_types/no_coalescing/stack_alignment.c": {"return_code": 1}, "chapter_20/all_types/no_coalescing/track_dbl_arg_registers.c": {"return_code": 1}, "chapter_20/all_types/no_coalescing/fourteen_pseudos_interfere.c": {"return_code": 0}, "chapter_20/all_types/no_coalescing/div_interference.c": {"return_code": 1}, "chapter_20/all_types/no_coalescing/test_spilling_dbls.c": {"return_code": 3}, "chapter_20/all_types/no_coalescing/store_pointer_in_register.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/same_instr_interference.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/test_spill_metric.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/unary_interference.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/optimistic_coloring.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/track_arg_registers.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/many_pseudos_fewer_conflicts.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/same_instr_no_interference.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/copy_no_interference.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/force_spill.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/callee_saved_stack_alignment.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/idiv_interference.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/preserve_across_fun_call.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/use_all_hardregs.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/test_spill_metric_2.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/loop.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/trivially_colorable.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/cdq_interference.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/coalesce_prevents_spill.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/george_coalesce.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/briggs_coalesce.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/integer_promotions.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/propagate_into_copytooffset.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/propagate_into_store.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/propagate_into_copyfromoffset.c": {"return_code": 0}, "chapter_19/whole_pipeline/all_types/propagate_into_load.c": {"return_code": 0}, "chapter_13/valid/explicit_casts/cvttsd2si_rewrite.c": {"return_code": 0}, "chapter_13/valid/explicit_casts/rewrite_cvttsd2si_regression.c": {"return_code": 0}, "chapter_13/valid/function_calls/push_xmm.c": {"return_code": 0}, "chapter_16/valid/chars/rewrite_movz_regression.c": {"return_code": 0}, "chapter_12/valid/explicit_casts/rewrite_movz_regression.c": {"return_code": 0}, "chapter_11/valid/long_expressions/rewrite_large_multiply_regression.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/rewrite_regression_test.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/cmp_no_updates.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/bin_uses_operands.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/division_uses_ax.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/cmp_generates_operands.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/eax_live_at_exit.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/unary_uses_operand.c": {"return_code": 0}, "chapter_20/int_only/no_coalescing/funcall_generates_args.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/briggs_coalesce_hardreg.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/briggs_dont_coalesce.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/george_dont_coalesce_2.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/george_dont_coalesce.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/no_george_test_for_pseudos.c": {"return_code": 0}, "chapter_20/int_only/with_coalescing/george_off_by_one.c": {"return_code": 0}, "chapter_3/valid/extra_credit/bitwise_variable_shift_count.c": {"return_code": 76}, "chapter_3/valid/extra_credit/bitwise_shiftr_negative.c": {"return_code": 255}, "chapter_4/valid/extra_credit/bitwise_shift_precedence.c": {"return_code": 1}, "chapter_4/valid/extra_credit/bitwise_and_precedence.c": {"return_code": 0}, "chapter_5/valid/extra_credit/bitwise_in_initializer.c": {"return_code": 11}, "chapter_5/valid/extra_credit/compound_assignment_lowest_precedence.c": {"return_code": 1}, "chapter_5/valid/extra_credit/bitwise_ops_vars.c": {"return_code": 9}, "chapter_5/valid/extra_credit/compound_bitwise_chained.c": {"return_code": 1}, "chapter_5/valid/extra_credit/compound_bitwise_assignment_lowest_precedence.c": {"return_code": 1}, "chapter_5/valid/extra_credit/prefix_incr_and_decr.c": {"return_code": 1}, "chapter_5/valid/extra_credit/postfix_incr_and_decr.c": {"return_code": 1}, "chapter_5/valid/extra_credit/postfix_precedence.c": {"return_code": 1}, "chapter_5/valid/extra_credit/incr_parenthesized.c": {"return_code": 1}, "chapter_6/valid/lh_assignment.c": {"return_code": 1}, "chapter_6/valid/extra_credit/prefix_if.c": {"return_code": 1}, "chapter_6/valid/extra_credit/postfix_in_ternary.c": {"return_code": 9}, "chapter_6/valid/extra_credit/prefix_in_ternary.c": {"return_code": 2}, "chapter_6/valid/extra_credit/compound_assign_ternary.c": {"return_code": 8}, "chapter_6/valid/extra_credit/lh_compound_assignment.c": {"return_code": 1}, "chapter_6/valid/extra_credit/postfix_if.c": {"return_code": 1}, "chapter_5/valid/extra_credit/incr_in_binary_expr.c": {"return_code": 1}, "chapter_5/valid/extra_credit/incr_expression_statement.c": {"return_code": 1}, "chapter_6/valid/ternary_precedence.c": {"return_code": 20}, "chapter_6/valid/extra_credit/label_token.c": {"return_code": 1}, "chapter_6/valid/extra_credit/whitespace_after_label.c": {"return_code": 1}, "chapter_6/valid/extra_credit/unused_label.c": {"return_code": 0}, "chapter_6/valid/extra_credit/label_all_statements.c": {"return_code": 100}, "chapter_7/valid/extra_credit/goto_sibling_scope.c": {"return_code": 11}, "chapter_7/valid/extra_credit/goto_outer_scope.c": {"return_code": 1}, "chapter_8/valid/extra_credit/loop_header_postfix_and_prefix.c": {"return_code": 1}, "chapter_8/valid/extra_credit/label_loops_breaks_and_continues.c": {"return_code": 12}, "chapter_8/valid/extra_credit/goto_bypass_init_exp.c": {"return_code": 1}, "chapter_8/valid/extra_credit/compound_assignment_controlling_expression.c": {"return_code": 1}, "chapter_8/valid/extra_credit/goto_bypass_post_exp.c": {"return_code": 11}, "chapter_8/valid/extra_credit/label_loop_body.c": {"return_code": 1}, "chapter_8/valid/extra_credit/post_exp_incr.c": {"return_code": 21}, "chapter_8/valid/extra_credit/switch_nested_cases.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_with_continue_2.c": {"return_code": 5}, "chapter_8/valid/extra_credit/switch_not_taken.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_default_only.c": {"return_code": 1}, "chapter_8/valid/extra_credit/switch_single_case.c": {"return_code": 1}, "chapter_8/valid/extra_credit/case_block.c": {"return_code": 1}, "chapter_8/valid/extra_credit/duffs_device.c": {"return_code": 1}, "chapter_8/valid/extra_credit/loop_in_switch.c": {"return_code": 123}, "chapter_9/valid/arguments_in_registers/dont_clobber_edx.c": {"return_code": 1}, "chapter_9/valid/extra_credit/label_naming_scheme.c": {"return_code": 0}, "chapter_9/valid/extra_credit/dont_clobber_ecx.c": {"return_code": 1}, "chapter_10/valid/extra_credit/bitwise_ops_file_scope_vars.c": {"return_code": 0}, "chapter_10/valid/extra_credit/label_file_scope_var_same_name.c": {"return_code": 0}, "chapter_10/valid/extra_credit/increment_global_vars.c": {"return_code": 0}, "chapter_10/valid/extra_credit/switch_on_extern.c": {"return_code": 0}, "chapter_10/valid/extra_credit/compound_assignment_static_var.c": {"return_code": 0}, "chapter_10/valid/extra_credit/label_static_var_same_name.c": {"return_code": 5}, "chapter_10/valid/extra_credit/switch_skip_extern_decl.c": {"return_code": 0}, "chapter_10/valid/extra_credit/switch_skip_static_initializer.c": {"return_code": 10}, "chapter_10/valid/extra_credit/libraries/same_label_same_fun.c": {"return_code": 0}, "chapter_4/valid/extra_credit/bitwise_xor_precedence.c": {"return_code": 5}, "chapter_4/valid/extra_credit/bitwise_or_precedence.c": {"return_code": 5}, "chapter_11/valid/extra_credit/increment_long.c": {"return_code": 0}, "chapter_11/valid/extra_credit/bitshift.c": {"return_code": 0}, "chapter_12/valid/extra_credit/compound_bitwise.c": {"return_code": 0}, "chapter_12/valid/extra_credit/compound_bitshift.c": {"return_code": 0}, "chapter_11/valid/extra_credit/compound_bitwise.c": {"return_code": 0}, "chapter_11/valid/extra_credit/compound_bitshift.c": {"return_code": 0}, "chapter_13/valid/extra_credit/incr_and_decr.c": {"return_code": 0}, "chapter_12/valid/extra_credit/unsigned_incr_decr.c": {"return_code": 0}, "chapter_14/valid/extra_credit/eval_compound_lhs_once.c": {"return_code": 0, "stdout": "A"}, "chapter_14/valid/extra_credit/incr_and_decr_through_pointer.c": {"return_code": 0}, "chapter_14/valid/extra_credit/bitwise_ops_with_dereferenced_ptrs.c": {"return_code": 0}, "chapter_14/valid/extra_credit/switch_dereferenced_pointer.c": {"return_code": 0}, "chapter_14/valid/extra_credit/bitshift_dereferenced_ptrs.c": {"return_code": 0}, "chapter_14/valid/extra_credit/compound_assign_conversion.c": {"return_code": 0}, "chapter_14/valid/extra_credit/compound_bitwise_dereferenced_ptrs.c": {"return_code": 0}, "chapter_12/valid/extra_credit/postfix_precedence.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_lval_evaluated_once.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_assign_to_nested_subscript.c": {"return_code": 0}, "chapter_15/valid/extra_credit/incr_and_decr_nested_pointers.c": {"return_code": 0}, "chapter_15/valid/extra_credit/incr_and_decr_pointers.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_pointer_assignment.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_nested_pointer_assignment.c": {"return_code": 0}, "chapter_15/valid/extra_credit/postfix_prefix_precedence.c": {"return_code": 0}, "chapter_15/valid/extra_credit/incr_decr_subscripted_vals.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_assign_to_subscripted_val.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_bitwise_subscript.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_assign_array_of_pointers.c": {"return_code": 0}, "chapter_15/valid/extra_credit/bitwise_subscript.c": {"return_code": 0}, "chapter_15/valid/extra_credit/compound_assign_and_increment.c": {"return_code": 0}, "chapter_16/valid/extra_credit/incr_decr_unsigned_chars.c": {"return_code": 0}, "chapter_16/valid/extra_credit/promote_switch_cond_2.c": {"return_code": 0}, "chapter_16/valid/extra_credit/switch_on_char_const.c": {"return_code": 0}, "chapter_16/valid/extra_credit/incr_decr_chars.c": {"return_code": 0}, "chapter_16/valid/extra_credit/char_consts_as_cases.c": {"return_code": 0}, "chapter_16/valid/extra_credit/compound_bitwise_ops_chars.c": {"return_code": 0}, "chapter_16/valid/extra_credit/bitwise_ops_chars.c": {"return_code": 0}, "chapter_16/valid/extra_credit/bitwise_ops_character_constants.c": {"return_code": 0}, "chapter_16/valid/extra_credit/promote_switch_cond.c": {"return_code": 0}, "chapter_16/valid/extra_credit/compound_assign_chars.c": {"return_code": 0}, "chapter_16/valid/extra_credit/bitshift_chars.c": {"return_code": 0}} \ No newline at end of file diff --git a/test_properties.json b/test_properties.json index 4855e55c..07c1f25b 100644 --- a/test_properties.json +++ b/test_properties.json @@ -850,13 +850,87 @@ "compound" ], "chapter_15/valid/extra_credit/compound_assign_and_increment.c": [ - "compound", "increment" + "compound", + "increment" ], "chapter_15/valid/extra_credit/compound_bitwise_subscript.c": [ - "compound", "bitwise" + "compound", + "bitwise" ], "chapter_15/valid/extra_credit/bitwise_subscript.c": [ "bitwise" + ], + "chapter_16/invalid_parse/extra_credit/string_literal_label.c": [ + "goto" + ], + "chapter_16/invalid_parse/extra_credit/string_literal_goto.c": [ + "goto" + ], + "chapter_16/invalid_parse/extra_credit/character_const_goto.c": [ + "goto" + ], + "chapter_16/invalid_parse/extra_credit/character_const_label.c": [ + "goto" + ], + "chapter_16/invalid_types/extra_credit/bit_shift_string.c": [ + "bitwise" + ], + "chapter_16/invalid_types/extra_credit/bitwise_operation_on_string.c": [ + "bitwise" + ], + "chapter_16/invalid_types/extra_credit/case_statement_string.c": [ + "switch" + ], + "chapter_16/invalid_types/extra_credit/switch_on_string.c": [ + "switch" + ], + "chapter_16/invalid_types/extra_credit/compound_assign_from_string.c": [ + "compound" + ], + "chapter_16/invalid_types/extra_credit/compound_assign_to_string.c": [ + "compound" + ], + "chapter_16/invalid_types/extra_credit/postfix_incr_string.c": [ + "increment" + ], + "chapter_16/invalid_labels/extra_credit/duplicate_case_char_const.c": [ + "switch" + ], + "chapter_16/invalid_types/extra_credit/prefix_incr_string.c": [ + "increment" + ], + "chapter_16/valid/extra_credit/incr_decr_chars.c": [ + "increment" + ], + "chapter_16/valid/extra_credit/incr_decr_unsigned_chars.c": [ + "increment" + ], + "chapter_16/valid/extra_credit/compound_assign_chars.c": [ + "compound" + ], + "chapter_16/valid/extra_credit/bitshift_chars.c": [ + "bitwise" + ], + "chapter_16/valid/extra_credit/bitwise_ops_chars.c": [ + "bitwise" + ], + "chapter_16/valid/extra_credit/bitwise_ops_character_constants.c": [ + "bitwise" + ], + "chapter_16/valid/extra_credit/compound_bitwise_ops_chars.c": [ + "bitwise", "compound" + ], + "chapter_16/valid/extra_credit/promote_switch_cond.c": [ + "switch" + ], + "chapter_16/valid/extra_credit/promote_switch_cond_2.c": [ + "switch" + ], + "chapter_16/valid/extra_credit/switch_on_char_const.c": [ + "switch" + ], + "chapter_16/valid/extra_credit/char_consts_as_cases.c": [ + "switch" ] }, "requires_mathlib": [ diff --git a/tests/chapter_16/invalid_labels/extra_credit/duplicate_case_char_const.c b/tests/chapter_16/invalid_labels/extra_credit/duplicate_case_char_const.c new file mode 100644 index 00000000..3a4f6da3 --- /dev/null +++ b/tests/chapter_16/invalid_labels/extra_credit/duplicate_case_char_const.c @@ -0,0 +1,13 @@ +// Reject duplicate cases where one uses an integer constant and one uses +// a character constant +int main(void) { + static int i = 120; + switch (i) { + case 'x': // ASCII value 120 + return 1; + case 120: // duplicate + return 2; + default: + return 3; + } +} \ No newline at end of file diff --git a/tests/chapter_16/invalid_parse/extra_credit/character_const_goto.c b/tests/chapter_16/invalid_parse/extra_credit/character_const_goto.c new file mode 100644 index 00000000..abe443e5 --- /dev/null +++ b/tests/chapter_16/invalid_parse/extra_credit/character_const_goto.c @@ -0,0 +1,6 @@ +// You can't use a character constant as a label in a goto statement +int main(void) { + goto 'x'; + 'x'; + return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/invalid_parse/extra_credit/character_const_label.c b/tests/chapter_16/invalid_parse/extra_credit/character_const_label.c new file mode 100644 index 00000000..0a895dfd --- /dev/null +++ b/tests/chapter_16/invalid_parse/extra_credit/character_const_label.c @@ -0,0 +1,4 @@ +// You can't use a character constant as a label +int main(void) { + 'x': return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/invalid_parse/extra_credit/string_literal_goto.c b/tests/chapter_16/invalid_parse/extra_credit/string_literal_goto.c new file mode 100644 index 00000000..9762b126 --- /dev/null +++ b/tests/chapter_16/invalid_parse/extra_credit/string_literal_goto.c @@ -0,0 +1,5 @@ +// You can't use a string literal as a label in a goto statement +int main(void) { + goto "foo"; + return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/invalid_parse/extra_credit/string_literal_label.c b/tests/chapter_16/invalid_parse/extra_credit/string_literal_label.c new file mode 100644 index 00000000..20e7d01e --- /dev/null +++ b/tests/chapter_16/invalid_parse/extra_credit/string_literal_label.c @@ -0,0 +1,4 @@ +// You can't use a string literal as a label +int main(void) { + "foo": return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/invalid_types/extra_credit/bit_shift_string.c b/tests/chapter_16/invalid_types/extra_credit/bit_shift_string.c new file mode 100644 index 00000000..b1aed327 --- /dev/null +++ b/tests/chapter_16/invalid_types/extra_credit/bit_shift_string.c @@ -0,0 +1,5 @@ +// can't apply << or >> to strings +int main(void) { + "foo" << 3; + return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/invalid_types/extra_credit/bitwise_operation_on_string.c b/tests/chapter_16/invalid_types/extra_credit/bitwise_operation_on_string.c new file mode 100644 index 00000000..7761bb19 --- /dev/null +++ b/tests/chapter_16/invalid_types/extra_credit/bitwise_operation_on_string.c @@ -0,0 +1,5 @@ +// Can't apply bitwise operations to strings +int main(void) { + "My string" & 100; + return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/invalid_types/extra_credit/case_statement_string.c b/tests/chapter_16/invalid_types/extra_credit/case_statement_string.c new file mode 100644 index 00000000..bf382e0f --- /dev/null +++ b/tests/chapter_16/invalid_types/extra_credit/case_statement_string.c @@ -0,0 +1,9 @@ +// Can't use strings as labels for case statements +int main(void) { + switch (0) { + case "foo": + return 1; + default: + return 0; + } +} \ No newline at end of file diff --git a/tests/chapter_16/invalid_types/extra_credit/compound_assign_from_string.c b/tests/chapter_16/invalid_types/extra_credit/compound_assign_from_string.c new file mode 100644 index 00000000..dd974082 --- /dev/null +++ b/tests/chapter_16/invalid_types/extra_credit/compound_assign_from_string.c @@ -0,0 +1,6 @@ +// Can't use a string on the right side of a compound assignment expression +int main(void) { + char * s = "some string "; + s += "another str"; + return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/invalid_types/extra_credit/compound_assign_to_string.c b/tests/chapter_16/invalid_types/extra_credit/compound_assign_to_string.c new file mode 100644 index 00000000..8fcbaab3 --- /dev/null +++ b/tests/chapter_16/invalid_types/extra_credit/compound_assign_to_string.c @@ -0,0 +1,5 @@ +// Can't compound assign to string literal +int main(void) { + "My string" += 1; + return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/invalid_types/extra_credit/postfix_incr_string.c b/tests/chapter_16/invalid_types/extra_credit/postfix_incr_string.c new file mode 100644 index 00000000..f1fde317 --- /dev/null +++ b/tests/chapter_16/invalid_types/extra_credit/postfix_incr_string.c @@ -0,0 +1,5 @@ +// can't apply postfix ++/-- to string literals +int main(void) { + "foo"++; + return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/invalid_types/extra_credit/prefix_incr_string.c b/tests/chapter_16/invalid_types/extra_credit/prefix_incr_string.c new file mode 100644 index 00000000..0f5b0d41 --- /dev/null +++ b/tests/chapter_16/invalid_types/extra_credit/prefix_incr_string.c @@ -0,0 +1,5 @@ +// Can't apply prefix ++/-- to string literal +int main(void) { + ++"foo"; + return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/invalid_types/extra_credit/switch_on_string.c b/tests/chapter_16/invalid_types/extra_credit/switch_on_string.c new file mode 100644 index 00000000..68c278b4 --- /dev/null +++ b/tests/chapter_16/invalid_types/extra_credit/switch_on_string.c @@ -0,0 +1,7 @@ +// can't use string literal as controlling expression in switch statement +int main(void) { + switch ("foo") { + default: + return 0; + } +} \ No newline at end of file diff --git a/tests/chapter_16/valid/extra_credit/bitshift_chars.c b/tests/chapter_16/valid/extra_credit/bitshift_chars.c new file mode 100644 index 00000000..2ed82a60 --- /dev/null +++ b/tests/chapter_16/valid/extra_credit/bitshift_chars.c @@ -0,0 +1,38 @@ +// Test << and >> operators with chars (or mix of chars and other types) +// Make sure left operand is promoted from char to int (NOTE: right operand should +// be too but we can't verify that; it doesn't change the operand's value or +// the result value.) + +int main(void) { + unsigned char uc = 255; + + // uc is promoted to int + //if ((uc << 20) != 267386880) { + // return 1; // fail + // } + + // uc is promoted to int, then shifted + if ((uc >> 3) != 31) { + return 2; // fail + } + + signed char sc = -127; + char c = 5; + // sc is promoted to int, then shifted + if ((sc >> c) != -4) { + return 3; // fail + } + + // make sure c << 3ul is promoted to int, not unsigned long + if (((-(c << 3ul)) >> 3) != -5) { + return 4; // fail + } + + // make sure uc << 5u is promoted to int, not unsigned int + if ((-(uc << 5u) >> 5u) != -255l) { + return 5; // fail + } + + return 0; // fail + +} \ No newline at end of file diff --git a/tests/chapter_16/valid/extra_credit/bitwise_ops_character_constants.c b/tests/chapter_16/valid/extra_credit/bitwise_ops_character_constants.c new file mode 100644 index 00000000..a7a1bf01 --- /dev/null +++ b/tests/chapter_16/valid/extra_credit/bitwise_ops_character_constants.c @@ -0,0 +1,35 @@ +#ifdef SUPPRESS_WARNINGS +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wconstant-conversion" +#else +#pragma GCC diagnostic ignored "-Woverflow" +#endif +#endif + +// Test that we can use character constants in bitwise operations +int main(void) { + int x = 10; + if ((x ^ 'A') != 75) { + return 1; // fail + } + + static char c = 132; // converted to -124 + if (('!' | c) != -91) { + return 2; // fail + } + + static unsigned long ul = 9259400834947493926ul; + if ((ul & '~') != 38) { + return 3; // fail + } + + if ((ul << ' ') != 4611738958194278400ul) { + return 4; // fail + } + + if (('{' >> 3) != 15) { + return 5; // fail + } + + return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/valid/extra_credit/bitwise_ops_chars.c b/tests/chapter_16/valid/extra_credit/bitwise_ops_chars.c new file mode 100644 index 00000000..999dd6dd --- /dev/null +++ b/tests/chapter_16/valid/extra_credit/bitwise_ops_chars.c @@ -0,0 +1,29 @@ +// make sure we perform integer promotions when performing bitwise operations on +// chars + +int main(void) { + unsigned char uc = 135; + char c = -116; + // Make sure we FIRST promote, THEN perform bitwise op + // if we performed the bitwise op first and then sign-extended, + // we'd get a different result + if ((uc & c) != 132) { + return 1; // fail + } + + // Make sure we FIRST promote, THEN perform bitwise op + // if we performed the bitwise op first and then zero-extended, + // we'd get a different result + if ((uc | c) != -113) { + return 2; // fail + } + + // make sure we do usual conversion to common type + // (result of c ^ 1001u is unsigned int, so we zero-extend it + // for next operation) + if (((c ^ 1001u) | 360l) != 4294966637) { + return 3; // fail + } + + return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/valid/extra_credit/char_consts_as_cases.c b/tests/chapter_16/valid/extra_credit/char_consts_as_cases.c new file mode 100644 index 00000000..950ef63b --- /dev/null +++ b/tests/chapter_16/valid/extra_credit/char_consts_as_cases.c @@ -0,0 +1,16 @@ +// Test that we can use character constants as cases in switch statements +int main(void) { + static int i = 65; + switch (i) { + case 100l: + return 1; // fail + case 'A': + return 0; // success + case 'B': + return 2; // fail + case 2000u: + return 3; // fail + default: + return -1; // fail + } +} \ No newline at end of file diff --git a/tests/chapter_16/valid/extra_credit/compound_assign_chars.c b/tests/chapter_16/valid/extra_credit/compound_assign_chars.c new file mode 100644 index 00000000..3e1a5d00 --- /dev/null +++ b/tests/chapter_16/valid/extra_credit/compound_assign_chars.c @@ -0,0 +1,35 @@ +// Test compound assignment with characters; make sure we perform integer promotions + +int main(void) { + + char c = 100; + char c2 = 100; + c += c2; // well-defined b/c of integer promotions + if (c != -56) { + return 1; // fail + } + + unsigned char uc = 200; + c2 = -100; + uc /= c2; // convert uc and c2 to int, then convert back + if (uc != 254) { + return 2; // fail + } + + uc -= 250.0; // convert uc to double, do operation, convert back + if (uc != 4) { + return 3; // fail + } + + signed char sc = -70; + sc *= c; + if (sc != 80) { + return 4; // fail + } + + if ((sc %= c) != 24) { + return 5; + } + + return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/valid/extra_credit/compound_bitwise_ops_chars.c b/tests/chapter_16/valid/extra_credit/compound_bitwise_ops_chars.c new file mode 100644 index 00000000..ec69d853 --- /dev/null +++ b/tests/chapter_16/valid/extra_credit/compound_bitwise_ops_chars.c @@ -0,0 +1,71 @@ +#ifdef SUPPRESS_WARNINGS +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wshift-count-overflow" +#endif +#endif +// Test bitwise compound assignment operators with character types + +int main(void) { + signed char arr[5] = {-128, -120, -2, 1, 120}; + unsigned char u_arr[4] = {0, 170, 250, 255}; + + + // apply bitwise ops to signed chars + arr[0] ^= 12345; + arr[1] |= u_arr[3]; + arr[2] &= u_arr[1] - (unsigned char) 185; + arr[3] <<= 7u; // this wraps around to -128, but is well-defined b/c of integer promotions + static long x = 32; + // it's undefined for shift count to be greater than width of left operand, + // but this is well-defined b/c of integer promotions + arr[4] >>= 31; + + // apply bitwise ops to unsigned chars + + // it's undefined for shift count to be greater than width of left operand, + // but this is well-defined b/c of integer promotions + u_arr[3] <<= 12; + u_arr[2] >>= (x - 1); + u_arr[1] |= -399; // doesn't overflow b/c of integer promotion + x = -4296140120l; // a number that doesn't fit in int or unsigned int + u_arr[0] ^= x; + + // validate them + if (arr[0] != -71) { + return 1; // fail + } + + if (arr[1] != -1) { + return 2; // fail + } + + if (arr[2] != -16) { + return 3; // fail + } + + if (arr[3] != -128) { + return 4; // fail + } + + if (arr[4] != 0) { + return 5; + } + + if (u_arr[0] != 168) { + return 6; + } + + if (u_arr[1] != 251) { + return 7; + } + + if (u_arr[2] != 0) { + return 8; + } + + if (u_arr[3] != 0) { + return 9; + } + + return 0; +} \ No newline at end of file diff --git a/tests/chapter_16/valid/extra_credit/incr_decr_chars.c b/tests/chapter_16/valid/extra_credit/incr_decr_chars.c new file mode 100644 index 00000000..947a1baa --- /dev/null +++ b/tests/chapter_16/valid/extra_credit/incr_decr_chars.c @@ -0,0 +1,53 @@ +// Increment and decrement lvalues of character type +int main(void) { + static char chars[5] = {123, 124, 125, 126, 127}; + if (chars[0]++ != 123) { + return 1; // fail + } + + if (chars[1]-- != 124) { + return 2; // fail + } + + if (++chars[2] != 126) { + return 3; // fail + } + + if (--chars[3] != 125) { + return 4; // fail + } + + // NOTE: this is not undefined because we perform the usual arithmetic + // conversions before incrementing, then perform implementation-defined + // conversion back to character type, so there's no integer overflow + if (++chars[4] != -128) { + return 5; // fail + } + + // validate all 5 elements + if (chars[0] != 124) { + return 6; // fail + } + + if (chars[1] != 123) { + return 7; // fail + } + if (chars[2] != 126) { + return 8; // fail + } + if (chars[3] != 125) { + return 9; // fail + } + if (chars[4] != -128) { + return 10; // fail + } + + // make sure decrementing CHAR_MIN also wraps around as expected + signed char c = -128; + c--; + if (c != 127) { + return 11; // fail + } + + return 0; // success +} \ No newline at end of file diff --git a/tests/chapter_16/valid/extra_credit/incr_decr_unsigned_chars.c b/tests/chapter_16/valid/extra_credit/incr_decr_unsigned_chars.c new file mode 100644 index 00000000..fe4e6847 --- /dev/null +++ b/tests/chapter_16/valid/extra_credit/incr_decr_unsigned_chars.c @@ -0,0 +1,44 @@ +// Increment and decrement lvalues of unsigned character type +int main(void) { + unsigned char chars[5] = {0, 2, 4, 253, 255}; + + // validate expression results + if (chars[0]--) { // result is 0 + return 1; // fail + } + + if (chars[1]++ != 2) { + return 2; // fail + } + + if (--chars[3] != 252) { + return 3; + } + + if (++chars[4] != 0) { // wraps around + return 4; + } + + // validate side effects/updated values + if (chars[0] != 255) { // wraps around + return 5; + } + + if (chars[1] != 3) { + return 6; + } + + if (chars[2] != 4) { // we didn't change this one + return 7; + } + + if (chars[3] != 252) { + return 8; + } + + if (chars[4]) { + return 9; + } + + return 0; // success +} \ No newline at end of file diff --git a/tests/chapter_16/valid/extra_credit/promote_switch_cond.c b/tests/chapter_16/valid/extra_credit/promote_switch_cond.c new file mode 100644 index 00000000..62db5662 --- /dev/null +++ b/tests/chapter_16/valid/extra_credit/promote_switch_cond.c @@ -0,0 +1,25 @@ +#ifdef SUPPRESS_WARNINGS +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wswitch" +#else +#pragma GCC diagnostic ignored "-Woverflow" +#endif +#endif + +// Make sure we promote the controlling condition in a switch statement from +// character type to int + +int main(void) { + char c = 100; + switch (c) { + case 0: + return 1; + case 100: + return 0; + // not a duplicate of 100, b/c we're not converting cases to char type + case 356: + return 2; + default: + return 3; + } +} \ No newline at end of file diff --git a/tests/chapter_16/valid/extra_credit/promote_switch_cond_2.c b/tests/chapter_16/valid/extra_credit/promote_switch_cond_2.c new file mode 100644 index 00000000..9a39e881 --- /dev/null +++ b/tests/chapter_16/valid/extra_credit/promote_switch_cond_2.c @@ -0,0 +1,21 @@ +#ifdef SUPPRESS_WARNINGS +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wswitch" +#else +#pragma GCC diagnostic ignored "-Woverflow" +#endif +#endif + +// Another test that we promote switch controlling condition to integer type; +// make sure case statements are converted to int rather than char +int main(void) { + char c = -56; + switch (c) { + // if we reduced this to a char it would be -56 + // but we won't, so this case shouldn't be taken + case 33554632: + return 1; // fail + default: + return 0; + } +} \ No newline at end of file diff --git a/tests/chapter_16/valid/extra_credit/switch_on_char_const.c b/tests/chapter_16/valid/extra_credit/switch_on_char_const.c new file mode 100644 index 00000000..691f71ad --- /dev/null +++ b/tests/chapter_16/valid/extra_credit/switch_on_char_const.c @@ -0,0 +1,13 @@ +// Test that we can use character constant in switch statement +int main(void) { + switch ('x') { + case 1: + return 1; // fail + case 2: + return 2; // fail + case 120: + return 0; // success + default: + return -1; // fail + } +} \ No newline at end of file