GCC Middle and Back End API Reference
optinfo-emit-json.h
Go to the documentation of this file.
1/* Emit optimization information as JSON files.
2 Copyright (C) 2018-2024 Free Software Foundation, Inc.
3 Contributed by David Malcolm <dmalcolm@redhat.com>.
4
5This file is part of GCC.
6
7GCC is free software; you can redistribute it and/or modify it under
8the terms of the GNU General Public License as published by the Free
9Software Foundation; either version 3, or (at your option) any later
10version.
11
12GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or
14FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15for more details.
16
17You should have received a copy of the GNU General Public License
18along with GCC; see the file COPYING3. If not see
19<http://www.gnu.org/licenses/>. */
20
21#ifndef GCC_OPTINFO_EMIT_JSON_H
22#define GCC_OPTINFO_EMIT_JSON_H
23
24#include "json.h"
25
26class optinfo;
27
28/* A class for writing out optimization records in JSON format. */
29
31{
32public:
35 void write () const;
36 void add_record (const optinfo *optinfo);
37 void pop_scope ();
38
39 void add_record (json::object *obj);
48
49 private:
50 /* The root value for the JSON file.
51 Currently the JSON values are stored in memory, and flushed when the
52 compiler exits. It would probably be better to simply write out
53 the JSON as we go. */
55
56 /* The currently open scopes, for expressing nested optimization records. */
58};
59
60#endif /* #ifndef GCC_OPTINFO_EMIT_JSON_H */
Definition vec.h:1656
Definition dumpfile.h:381
Definition json.h:124
Definition json.h:95
Definition json.h:173
Definition json.h:79
Definition tree-pass.h:74
Definition optinfo.h:94
Definition optinfo-emit-json.h:31
json::object * optinfo_to_json(const optinfo *optinfo)
Definition optinfo-emit-json.cc:330
json::object * pass_to_json(opt_pass *pass)
Definition optinfo-emit-json.cc:230
optrecord_json_writer()
Definition optinfo-emit-json.cc:53
void add_record(const optinfo *optinfo)
Definition optinfo-emit-json.cc:139
json::object * impl_location_to_json(dump_impl_location_t loc)
Definition optinfo-emit-json.cc:180
~optrecord_json_writer()
Definition optinfo-emit-json.cc:95
json::array * m_root_tuple
Definition optinfo-emit-json.h:54
json::string * get_id_value_for_pass(opt_pass *pass)
Definition optinfo-emit-json.cc:219
json::object * profile_count_to_json(profile_count count)
Definition optinfo-emit-json.cc:207
json::object * location_to_json(location_t loc)
Definition optinfo-emit-json.cc:193
void add_pass_list(json::array *arr, opt_pass *pass)
Definition optinfo-emit-json.cc:428
auto_vec< json::array * > m_scopes
Definition optinfo-emit-json.h:57
void write() const
Definition optinfo-emit-json.cc:103
void pop_scope()
Definition optinfo-emit-json.cc:169
json::value * inlining_chain_to_json(location_t loc)
Definition optinfo-emit-json.cc:273
static unsigned int count[debug_counter_number_of_counters]
Definition dbgcnt.cc:50
T * ggc_alloc(ALONE_CXX_MEM_STAT_INFO)
Definition ggc.h:184
Definition profile-count.h:750