GCC Middle and Back End API Reference
|
Public Member Functions | |
sarif_ice_notification (const diagnostic_info &diagnostic, sarif_builder &builder, std::unique_ptr< json::object > backtrace) | |
void | add_related_location (std::unique_ptr< sarif_location > location_obj, sarif_builder &builder) final override |
unsigned | allocate_location_id () |
void | add_relationship_to_worklist (sarif_location &location_obj, enum worklist_item::kind kind, location_t where) |
void | process_worklist (sarif_builder &builder) |
void | process_worklist_item (sarif_builder &builder, const worklist_item &item) |
sarif_property_bag & | get_or_create_properties () |
enum kind | get_kind () const final override |
void | print (pretty_printer *pp, bool formatted) const final override |
bool | is_empty () const |
void | set (const char *key, value *v) |
template<typename JsonType> | |
void | set (const char *key, std::unique_ptr< JsonType > v) |
value * | get (const char *key) const |
void | set_string (const char *key, const char *utf8_value) |
void | set_integer (const char *key, long v) |
void | set_float (const char *key, double v) |
void | set_bool (const char *key, bool v) |
void | dump (FILE *, bool formatted) const |
void DEBUG_FUNCTION | dump () const |
Private Types | |
typedef hash_map< char *, value *, simple_hashmap_traits< nofree_string_hash, value * > > | map_t |
Private Attributes | |
json::array * | m_related_locations_arr |
unsigned | m_next_location_id |
std::list< worklist_item > | m_worklist |
std::map< location_t, sarif_location * > | m_included_from_locations |
std::map< location_t, sarif_location * > | m_unlabelled_secondary_locations |
map_t | m_map |
auto_vec< const char * > | m_keys |
Subclass of sarif_object for SARIF "notification" objects (SARIF v2.1.0 section 3.58). This subclass is specifically for notifying when an internal compiler error occurs.
|
privateinherited |
sarif_ice_notification::sarif_ice_notification | ( | const diagnostic_info & | diagnostic, |
sarif_builder & | builder, | ||
std::unique_ptr< json::object > | backtrace ) |
class sarif_ice_notification : public sarif_location_manager.
sarif_ice_notification's ctor. DIAGNOSTIC is an internal compiler error.
References sarif_object::get_or_create_properties(), sarif_builder::get_printer(), sarif_builder::make_locations_arr(), sarif_builder::make_message_object(), pp_clear_output_area(), pp_formatted_text(), result_file, json::object::set(), and json::object::set_string().
|
finaloverridevirtual |
Implementation of sarif_location_manager::add_related_location vfunc for notifications.
Reimplemented from sarif_location_manager.
References sarif_location_manager::add_related_location(), sarif_builder::get_version(), and v2_2_prerelease_2024_08_08.
|
inherited |
References m_worklist.
Referenced by sarif_builder::add_any_include_chain(), and sarif_builder::make_location_object().
|
inlineinherited |
References m_next_location_id.
Referenced by sarif_location::lazily_add_id().
|
inherited |
|
inherited |
class json::value.
Dump this json::value tree to OUTF. The key/value pairs of json::objects are printed in the order in which the keys were originally inserted.
References output_buffer::m_stream, pp_buffer(), pp_flush(), and print().
Referenced by generate_results().
|
inherited |
Get the json::value * for KEY. The object retains ownership of the value.
References gcc_assert, get(), m_map, and NULL.
Referenced by get(), sarif_location::get_id(), sarif_code_flow::get_or_append_thread_flow(), sarif_object::get_or_create_properties(), sarif_location_relationship::get_target_id(), sarif_location_relationship::lazily_add_kind(), sarif_location::lazily_add_relationship_object(), sarif_location::lazily_add_relationships_array(), sarif_builder::make_location_object(), sarif_builder::make_location_object(), sarif_builder::make_location_object(), and sarif_location_manager::process_worklist_item().
|
inlinefinaloverridevirtualinherited |
Implements json::value.
References final(), and json::JSON_OBJECT.
|
inherited |
class sarif_object : public json::object.
References json::object::get(), json::value::get_kind(), json::JSON_OBJECT, and json::object::set().
Referenced by sarif_ice_notification::sarif_ice_notification().
|
finaloverridevirtualinherited |
Implementation of json::value::print for json::object.
Implements json::value.
References FOR_EACH_VEC_ELT, hash_map< KeyId, Value, Traits >::get(), i, m_keys, m_map, pp_character(), pp_indent(), pp_indentation(), pp_newline(), pp_space, pp_string(), json::value::print(), and print_escaped_json_string().
Referenced by generate_results().
|
inherited |
Process all items in this result's worklist. Doing so may temporarily add new items to the end of the worklist. Handling any item should be "lazy", and thus we should eventually drain the queue and terminate.
References m_worklist, and process_worklist_item().
|
inherited |
Process one item in this result's worklist, potentially adding new items to the end of the worklist.
References add_related_location(), gcc_assert, gcc_unreachable, json::object::get(), sarif_location_manager::worklist_item::included_from, includes, is_included_by, sarif_location::lazily_add_relationship(), m_included_from_locations, sarif_location_manager::worklist_item::m_kind, sarif_location_manager::worklist_item::m_location_obj, m_unlabelled_secondary_locations, sarif_location_manager::worklist_item::m_where, sarif_builder::make_location_object(), relevant, scanned_file, and sarif_location_manager::worklist_item::unlabelled_secondary_location.
Referenced by process_worklist().
|
inlineinherited |
References set().
|
inherited |
Set the json::value * for KEY, taking ownership of V (and taking a copy of KEY if necessary).
References gcc_assert, m_keys, and m_map.
Referenced by optrecord_json_writer::add_pass_list(), optrecord_json_writer::add_record(), sarif_location_manager::add_related_location(), compiler_data_hooks::add_sarif_invocation_properties(), generate_results(), sarif_builder::get_or_create_artifact(), sarif_object::get_or_create_properties(), optrecord_json_writer::inlining_chain_to_json(), json_set_prime_path_coverage(), sarif_location_relationship::lazily_add_kind(), sarif_location::lazily_add_relationships_array(), sarif_builder::make_fix_object(), sarif_builder::make_replacement_object(), sarif_builder::make_result_object(), sarif_builder::make_run_object(), sarif_builder::make_tool_object(), sarif_builder::make_top_level_object(), infinite_loop_diagnostic::maybe_add_sarif_properties(), sarif_builder::maybe_make_cwe_taxonomy_object(), sarif_builder::maybe_make_physical_location_object(), json_output_format::on_report_diagnostic(), optrecord_json_writer::optinfo_to_json(), optrecord_json_writer::optrecord_json_writer(), output_intermediate_json_line(), output_json_intermediate_file(), optrecord_json_writer::pass_to_json(), sarif_artifact::populate_contents(), sarif_artifact::populate_roles(), sarif_builder::populate_thread_flow_location_object(), sarif_invocation::prepare_to_flush(), sarif_code_flow::sarif_code_flow(), sarif_ice_notification::sarif_ice_notification(), sarif_invocation::sarif_invocation(), sarif_thread_flow::sarif_thread_flow(), set(), sarif_builder::set_any_logical_locs_arr(), set_bool(), set_float(), set_integer(), and set_string().
|
inherited |
Set value of KEY within this object to the JSON literal true or false, based on V.
References set().
Referenced by sarif_builder::make_location_object(), json_output_format::on_report_diagnostic(), output_intermediate_json_line(), and sarif_invocation::prepare_to_flush().
|
inherited |
Set value of KEY within this object to a JSON floating point value based on V.
References set().
|
inherited |
Set value of KEY within this object to a JSON integer value based on V.
References set().
Referenced by optrecord_json_writer::impl_location_to_json(), json_set_prime_path_coverage(), sarif_location::lazily_add_id(), optrecord_json_writer::location_to_json(), infinite_recursion_diagnostic::maybe_add_sarif_properties(), sarif_result::on_nested_diagnostic(), json_output_format::on_report_diagnostic(), output_intermediate_json_line(), optrecord_json_writer::pass_to_json(), sarif_builder::populate_thread_flow_location_object(), optrecord_json_writer::profile_count_to_json(), and sarif_location_relationship::sarif_location_relationship().
|
inherited |
Set value of KEY within this object to a JSON string value based on UTF8_VALUE.
References set().
Referenced by generate_results(), sarif_builder::get_or_create_artifact(), optrecord_json_writer::impl_location_to_json(), optrecord_json_writer::inlining_chain_to_json(), json_set_prime_path_coverage(), optrecord_json_writer::location_to_json(), json_output_format::on_report_diagnostic(), optrecord_json_writer::optinfo_to_json(), optrecord_json_writer::optrecord_json_writer(), output_intermediate_json_line(), output_json_intermediate_file(), optrecord_json_writer::pass_to_json(), optrecord_json_writer::profile_count_to_json(), sarif_ice_notification::sarif_ice_notification(), sarif_thread_flow::sarif_thread_flow(), and set_string_property_escaping_braces().
|
privateinherited |
Referenced by process_worklist_item().
|
privateinherited |
Referenced by get(), is_empty(), print(), set(), and ~object().
|
privateinherited |
Referenced by allocate_location_id(), and sarif_location_manager().
|
privateinherited |
Referenced by add_related_location(), and sarif_location_manager().
|
privateinherited |
Referenced by process_worklist_item().
|
privateinherited |
Referenced by add_relationship_to_worklist(), and process_worklist().