annotate gcc/testsuite/gcc.dg/plugin/diagnostic_group_plugin.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* { dg-options "-O" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 #include "gcc-plugin.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 #include "config.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 #include "system.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 #include "coretypes.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 #include "tm.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 #include "tree.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 #include "stringpool.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 #include "toplev.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 #include "basic-block.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 #include "hash-table.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 #include "vec.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 #include "ggc.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 #include "basic-block.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 #include "tree-ssa-alias.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 #include "internal-fn.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 #include "gimple-fold.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 #include "tree-eh.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 #include "gimple-expr.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 #include "is-a.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 #include "gimple.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 #include "gimple-iterator.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 #include "tree.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 #include "tree-pass.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 #include "intl.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 #include "plugin-version.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 #include "c-family/c-common.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 #include "diagnostic.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 #include "context.h"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 int plugin_is_GPL_compatible;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 /* A custom pass for emitting dummy warnings from the middle-end. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 const pass_data pass_data_test_groups =
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 GIMPLE_PASS, /* type */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 "test_groups", /* name */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 OPTGROUP_NONE, /* optinfo_flags */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 TV_NONE, /* tv_id */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 PROP_ssa, /* properties_required */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 0, /* properties_provided */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 0, /* properties_destroyed */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 0, /* todo_flags_start */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 0, /* todo_flags_finish */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 class pass_test_groups : public gimple_opt_pass
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 public:
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 pass_test_groups(gcc::context *ctxt)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 : gimple_opt_pass(pass_data_test_groups, ctxt)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54 {}
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 /* opt_pass methods: */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 bool gate (function *) { return true; }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58 virtual unsigned int execute (function *);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 }; // class pass_test_groups
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 /* Determine if STMT is a call with NUM_ARGS arguments to a function
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63 named FUNCNAME.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 If so, return STMT as a gcall *. Otherwise return NULL. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 static gcall *
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 check_for_named_call (gimple *stmt,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 const char *funcname, unsigned int num_args)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70 gcc_assert (funcname);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 gcall *call = dyn_cast <gcall *> (stmt);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73 if (!call)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74 return NULL;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76 tree fndecl = gimple_call_fndecl (call);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77 if (!fndecl)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78 return NULL;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80 if (strcmp (IDENTIFIER_POINTER (DECL_NAME (fndecl)), funcname))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81 return NULL;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83 if (gimple_call_num_args (call) != num_args)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85 error_at (stmt->location, "expected number of args: %i (got %i)",
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86 num_args, gimple_call_num_args (call));
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87 return NULL;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90 return call;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
91 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
92
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
93 /* Emit a warning at LOC. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
94
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
95 static void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
96 emit_warning (location_t loc)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
97 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
98 source_range src_range = get_range_from_loc (line_table, loc);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
99 warning_at (loc, 0, "range %i:%i-%i:%i",
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
100 LOCATION_LINE (src_range.m_start),
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
101 LOCATION_COLUMN (src_range.m_start),
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
102 LOCATION_LINE (src_range.m_finish),
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
103 LOCATION_COLUMN (src_range.m_finish));
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
104 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
105
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
106 /* Code for simulating the emission of a warning from the middle-end.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
107 Emit a warning for each call to a function named "__emit_warning". */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
108
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
109 static void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
110 test_groups (gimple *stmt)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
111 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
112 gcall *call = check_for_named_call (stmt, "__emit_warning", 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
113 if (!call)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
114 return;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
115
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
116 /* We expect an ADDR_EXPR with a STRING_CST inside it for the
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
117 initial arg. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
118 tree t_addr_string = gimple_call_arg (call, 0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
119 if (TREE_CODE (t_addr_string) != ADDR_EXPR)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
120 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
121 error_at (call->location, "string literal required for arg 1");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
122 return;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
123 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
124
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
125 tree t_string = TREE_OPERAND (t_addr_string, 0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
126 if (TREE_CODE (t_string) != STRING_CST)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
127 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
128 error_at (call->location, "string literal required for arg 1");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
129 return;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
130 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
132 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
133 auto_diagnostic_group d;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
134 if (warning_at (call->location, 0, "%s", call,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
135 TREE_STRING_POINTER (t_string)))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
136 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
137 inform (call->location, "message for note");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
138 inform (call->location, " some more detail");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
139 inform (call->location, " yet more detail");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
140 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
141 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
142 inform (call->location, "an unrelated message");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
143 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
144
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
145 /* Call test_groups on every statement within FUN. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
146
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
147 unsigned int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
148 pass_test_groups::execute (function *fun)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
149 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
150 gimple_stmt_iterator gsi;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
151 basic_block bb;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
152
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
153 FOR_EACH_BB_FN (bb, fun)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
154 for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
155 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
156 gimple *stmt = gsi_stmt (gsi);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
157 test_groups (stmt);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
158 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
159
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
160 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
161 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
162
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
163 /* Custom diagnostic callback, to avoid having the path in the
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
164 expected output. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
165
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
166 void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
167 test_diagnostic_starter (diagnostic_context *context,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
168 diagnostic_info *diagnostic)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
169 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
170 pp_set_prefix (context->printer, xstrdup ("PREFIX: "));
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
171 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
172
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
173 /* Custom diagnostic callback, to avoid having the path in the
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
174 expected output. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
175
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
176 void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
177 test_diagnostic_start_span_fn (diagnostic_context *context,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
178 expanded_location exploc)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
179 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
180 pp_string (context->printer, "START_SPAN_FN: ");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
181 pp_newline (context->printer);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
182 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
183
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
184 /* Custom diagnostic callback: loudly announce a new diagnostic group. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
185
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
186 static void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
187 test_begin_group_cb (diagnostic_context * context)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
188 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
189 pp_string (context->printer,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
190 "================================= BEGIN GROUP ==============================");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
191 pp_newline (context->printer);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
192 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
193
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
194 /* Custom diagnostic callback: loudly announce the end of a
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
195 diagnostic group. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
196
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
197 static void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
198 test_end_group_cb (diagnostic_context * context)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
199 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
200 pp_string (context->printer,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
201 "---------------------------------- END GROUP -------------------------------");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
202 pp_newline_and_flush (context->printer);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
203 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
204
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
205 /* Entrypoint for the plugin.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
206 Install custom callbacks into the global_dc.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
207 Create and register the custom pass. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
208
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
209 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
210 plugin_init (struct plugin_name_args *plugin_info,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
211 struct plugin_gcc_version *version)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
212 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
213 struct register_pass_info pass_info;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
214 const char *plugin_name = plugin_info->base_name;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
215 int argc = plugin_info->argc;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
216 struct plugin_argument *argv = plugin_info->argv;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
217
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
218 if (!plugin_default_version_check (version, &gcc_version))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
219 return 1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
220
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
221 diagnostic_starter (global_dc) = test_diagnostic_starter;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
222 global_dc->start_span = test_diagnostic_start_span_fn;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
223 global_dc->begin_group_cb = test_begin_group_cb;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
224 global_dc->end_group_cb = test_end_group_cb;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
225
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
226 pass_info.pass = new pass_test_groups (g);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
227 pass_info.reference_pass_name = "*warn_function_noreturn";
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
228 pass_info.ref_pass_instance_number = 1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
229 pass_info.pos_op = PASS_POS_INSERT_AFTER;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
230 register_callback (plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
231 &pass_info);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
232
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
233 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
234 }