├── .arcconfig ├── .arclint ├── .arcplugins ├── multi_test_engine │ ├── __phutil_library_init__.php │ ├── __phutil_library_map__.php │ └── src │ │ └── MultiTestEngine.php └── tap_test_engine │ ├── __phutil_library_init__.php │ ├── __phutil_library_map__.php │ └── src │ └── TAPTestEngine.php ├── .gitignore ├── .vscode └── settings.json ├── CMakeLists.txt ├── LICENSE.txt ├── README.md ├── chashutil.py ├── clang-hash-global ├── clang-plugin ├── AttrDataCollectors.inc ├── AttrDataCollectors.td ├── CMakeLists.txt ├── DeclDataCollectors.inc ├── DeclDataCollectors.td ├── Hash.h ├── MurMurHash3.h ├── SHA1.h ├── StmtDataCollectors.inc ├── StmtDataCollectors.td ├── TypeDataCollectors.inc ├── TypeDataCollectors.td ├── clang-hash.cc ├── clang │ └── AST │ │ ├── AttrDataCollectors.inc │ │ ├── DeclDataCollectors.inc │ │ ├── StmtDataCollectors.inc │ │ └── TypeDataCollectors.inc └── hash-visitor.h ├── clang_hash_global.py ├── contrib ├── chash-results.png └── logo.svg ├── dependency_analyzer ├── example.c ├── experiments ├── Makefile ├── add_commit_dates.py ├── analyze_results.py ├── chashutil.py ├── clang_hash_global.py ├── dependency_analyzer.py ├── evaluate_data_with_stop.py ├── global_historical_build.py ├── global_historical_evaluate_call_graph.py ├── global_historical_evaluate_global.py ├── global_historical_evaluate_local.py ├── historical_build.py ├── incremental_rebuild.py ├── lib.py ├── run_test_project.py ├── run_test_with_stopping.py ├── timing-internal.py └── validate_hashes.py ├── gcc-plugin ├── CMakeLists.txt ├── Hash.h ├── MurMurHash3.h ├── ast.dot ├── chash.cc ├── chash.h ├── dump.cc ├── gcc-common.h ├── gcc-generate-gimple-pass.h ├── gcc-generate-rtl-pass.h ├── gcc-generate-simple_ipa-pass.h ├── gcc-show-ast ├── test.c ├── test.c.003t.original └── test.o ├── test ├── .gitignore ├── abort_compilation │ └── test_abort.sh ├── always-fail.c ├── assignments │ ├── assign_1.c │ ├── assign_and_operator.c │ ├── assign_base.c │ ├── assign_cast.c │ ├── assign_charlit.c │ ├── assign_cond.c │ ├── assign_desinit.c │ ├── assign_div.c │ ├── assign_flit1.c │ ├── assign_flit2.c │ ├── assign_flit3.c │ ├── assign_flit4.c │ ├── assign_flit5.c │ ├── assign_flit6.c │ ├── assign_flit7.c │ ├── assign_flit8.c │ ├── assign_imglit.c │ ├── assign_impl_cast.c │ ├── assign_intlit_1.c │ ├── assign_intlit_2.c │ ├── assign_intlit_3.c │ ├── assign_listarray.c │ ├── assign_listarrayMD.c │ ├── assign_mal.c │ ├── assign_minus.c │ ├── assign_not.c │ ├── assign_plus.c │ ├── assign_pos_vs_neg.c │ ├── assign_stmtexpr.c │ ├── assign_strlit.c │ ├── assign_strlit2.c │ ├── assign_struct_initlist.c │ ├── assign_struct_initlist_2.c │ ├── assign_wchar_t_lit.c │ └── literals.c ├── control_flow │ ├── LabelStmt_1.c │ ├── LabelStmt_2.c │ ├── goto │ │ ├── GotoStmt_1.c │ │ ├── GotoStmt_2.c │ │ ├── GotoStmt_3.c │ │ ├── GotoStmt_4.c │ │ └── goto_forward_backward.c │ ├── if │ │ ├── IfStmt_1.c │ │ ├── IfStmt_10.c │ │ ├── IfStmt_11.c │ │ ├── IfStmt_2.c │ │ ├── IfStmt_3.c │ │ ├── IfStmt_4.c │ │ ├── IfStmt_5.c │ │ ├── IfStmt_6.c │ │ ├── IfStmt_7.c │ │ ├── IfStmt_8.c │ │ └── IfStmt_9.c │ ├── logical_stuff1.c │ ├── logical_stuff2.c │ ├── logical_stuff3.c │ ├── loops │ │ ├── BreakStmt_1.c │ │ ├── BreakStmt_2.c │ │ ├── BreakStmt_3.c │ │ ├── BreakStmt_4.c │ │ ├── BreakStmt_5.c │ │ ├── ContinueStmt_1.c │ │ ├── ContinueStmt_2.c │ │ ├── ContinueStmt_3.c │ │ ├── ContinueStmt_4.c │ │ ├── ContinueStmt_5.c │ │ ├── DoStmt_1.c │ │ ├── DoStmt_2.c │ │ ├── ForStmt_1.c │ │ ├── ForStmt_2.c │ │ ├── ForStmt_3.c │ │ ├── ForStmt_4.c │ │ ├── ForStmt_5.c │ │ ├── WhileStmt_1.c │ │ └── WhileStmt_2.c │ └── switch │ │ ├── switch_1.c │ │ ├── switch_2.c │ │ ├── switch_3.c │ │ ├── switch_4.c │ │ └── switch_5.c ├── declarations │ ├── DeclStmt_1.c │ ├── DeclStmt_2.c │ ├── FunctionPointer.c │ ├── array_1.c │ ├── array_2.c │ ├── array_3.c │ ├── array_md_switched_dimensions.c │ ├── array_var1.c │ ├── funcdecl_unused.c │ ├── funcdecl_used.c │ ├── global_builtin.c │ ├── global_builtin_2.c │ ├── global_builtin_3.c │ ├── global_builtin_pointer.c │ ├── inttypes_1.c │ ├── long_and_long_long.c │ ├── long_double.c │ ├── pointer_pointer.c │ ├── typedecls_unused.c │ ├── typedecls_used.c │ ├── typeof.c │ ├── typeof_int.c │ ├── types.c │ ├── types_atomic_accessed.c │ ├── types_atomic_not_accessed.c │ ├── types_complex.c │ └── wchar_t.c ├── enums │ ├── enum_direct_usage.c │ ├── enum_switched_order.c │ ├── unusedEnum.c │ ├── unusedEnumConstant.c │ └── unusedEnumConstant_typedeffed.c ├── export_def_use │ ├── always_fail_1.c │ ├── always_fail_2.c │ ├── functions │ │ ├── extern_func.c │ │ ├── extern_variable.c │ │ ├── func_ptr_call.c │ │ ├── function_calls.c │ │ ├── function_ptr.c │ │ ├── global_user.c │ │ ├── mutual_recursion.c │ │ ├── no_references.c │ │ ├── non_defined_function.c │ │ ├── recursion.c │ │ └── static_function_calls.c │ └── variables │ │ ├── const_global.c │ │ ├── dynamic_init.c │ │ ├── func_pointer.c │ │ ├── pointer.c │ │ └── static_const_global.c ├── expressions │ ├── arrayaccess.c │ ├── complex_pointer_1.c │ ├── distinguish_post_and_prefix_inc.c │ ├── distinguish_post_and_prefix_inc2.c │ ├── member_expr.c │ ├── offsetof_array.c │ ├── offsetof_struct.c │ └── sizeof_test.c ├── functions │ ├── CallExpr.c │ ├── CrossRecursion_1.c │ ├── CrossRecursion_2.c │ ├── NullStmt_1.c │ ├── Recursion.c │ ├── ReturnStmt_1.c │ ├── ReturnStmt_2.c │ ├── fn-static.c │ ├── fnextern.c │ ├── func_ptr_ref.c │ ├── global_builtin_function.c │ ├── global_builtin_functions2.c │ ├── multiple_args.c │ ├── visibility.c │ ├── visibility_declaration.c │ └── weak_alias.c ├── global_hash │ ├── duplicate_hashes │ │ ├── test_forward_declaration.sh │ │ ├── test_incomplete_type.sh │ │ ├── test_struct_void_member.sh │ │ ├── test_typedef_unnamed_struct.sh │ │ ├── test_typedef_unnamed_union.sh │ │ ├── test_union_to_struct.sh │ │ ├── test_unnamed_struct.sh │ │ └── test_void_pointer.sh │ ├── failing │ │ ├── test_always-fail_1.sh │ │ ├── test_always-fail_2.sh │ │ ├── test_always-fail_3.sh │ │ └── test_always-fail_4.sh │ ├── global_hash.sh │ ├── obj_file │ │ ├── test_obj_change_function.sh │ │ ├── test_obj_change_global_variable.sh │ │ ├── test_obj_failing.sh │ │ └── test_obj_no_change.sh │ ├── small_project │ │ ├── test_change_function.sh │ │ ├── test_change_global_variable.sh │ │ ├── test_failing.sh │ │ └── test_no_change.sh │ ├── src │ │ ├── main.c │ │ ├── main.o │ │ └── main.o.info │ └── trivial │ │ ├── test_global_changed.sh │ │ ├── test_no_change.sh │ │ ├── test_simple_change_1.sh │ │ ├── test_simple_change_2.sh │ │ ├── test_simple_change_3.sh │ │ └── test_simple_change_4.sh ├── invocation.c ├── other │ ├── block.c │ ├── inline_assembler.c │ └── va_arg.c ├── preprocessor │ ├── header_extern_1.h │ ├── header_extern_2.h │ ├── headers │ │ ├── include_1.h │ │ ├── include_2.h │ │ ├── include_3A.h │ │ ├── include_3B.h │ │ └── scnd_include.h │ ├── include_1.c │ ├── include_2.c │ ├── include_3.c │ ├── include_extern_impl_1.c │ ├── include_extern_impl_2.c │ ├── include_extern_impl_3.c │ ├── unused_include_stdint_1.c │ ├── unused_include_stdint_2.c │ ├── use_stdio.c │ ├── use_stdlib.c │ └── useless_dynamic_includes.c ├── qualifiers │ ├── const_1.c │ ├── const_2.c │ ├── const_3.c │ ├── const_pointer.c │ ├── extern_function.c │ ├── extern_function_usage.c │ ├── extern_variable.c │ ├── extern_variable_usage.c │ ├── static_1.c │ ├── static_2.c │ ├── vector.c │ └── volatile_1.c ├── run-tests ├── structs │ ├── attributed_1.c │ ├── attributed_2.c │ ├── bitfield.c │ ├── nested_structs.c │ ├── return_ptr.c │ ├── size_of_own_declaration.c │ ├── size_of_own_declaration_ptr.c │ ├── struct_1.c │ ├── struct_2.c │ ├── struct_3.c │ ├── struct_4.c │ ├── struct_instances.c │ ├── struct_rek1.c │ ├── struct_rek2.c │ ├── struct_vs_union.c │ └── unnamed_struct.c ├── test_always-fail.sh ├── toolchain │ └── internal-linkage.c └── typedef │ ├── typedef_1.c │ ├── typedef_2.c │ ├── typedef_3.c │ ├── typedef_4.c │ ├── typedef_5.c │ ├── typedef_struct.c │ └── typedef_union.c └── wrappers ├── CMakeLists.txt ├── REAME.busybox ├── clang-ccache-hash-stop.in ├── clang-ccache.in ├── clang-hash-collect.in ├── clang-hash-stop.in ├── clang-hash.in ├── clang-normal.in ├── compare-logs ├── compare-logs-example-A.log ├── compare-logs-example-B.log ├── gcc ├── gcc-fpr.in ├── gcc-hash.in ├── gcc-time └── hash-objectfile /.arcconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luhsra/chash/HEAD/.arcconfig -------------------------------------------------------------------------------- /.arclint: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luhsra/chash/HEAD/.arclint -------------------------------------------------------------------------------- /.arcplugins/multi_test_engine/__phutil_library_init__.php: -------------------------------------------------------------------------------- 1 |