Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
58 lines (54 sloc) 2.09 KB
diff -Naurp gcc-7.3.0-orig/gcc/c/c-typeck.c gcc-7.3.0/gcc/c/c-typeck.c
--- gcc-7.3.0-orig/gcc/c/c-typeck.c 2017-06-08 12:12:38.381833000 -0700
+++ gcc-7.3.0/gcc/c/c-typeck.c 2018-04-24 14:44:50.222592671 -0700
@@ -48,6 +48,8 @@ along with GCC; see the file COPYING3.
#include "c-family/c-ubsan.h"
#include "cilk.h"
#include "gomp-constants.h"
+#include "plugin-api.h"
+#include "plugin.h"
#include "spellcheck-tree.h"
#include "gcc-rich-location.h"
@@ -5452,6 +5454,12 @@ build_c_cast (location_t loc, tree type,
return error_mark_node;
}
+ {
+ tree cast_info[] {type, TREE_TYPE(value)};
+ invoke_plugin_callbacks (PLUGIN_TYPE_CAST, cast_info);
+ }
+
+
if (type == TYPE_MAIN_VARIANT (TREE_TYPE (value)))
{
if (RECORD_OR_UNION_TYPE_P (type))
diff -Naurp gcc-7.3.0-orig/gcc/plugin.c gcc-7.3.0/gcc/plugin.c
--- gcc-7.3.0-orig/gcc/plugin.c 2017-03-21 04:50:18.693898000 -0700
+++ gcc-7.3.0/gcc/plugin.c 2018-04-24 14:46:13.956372418 -0700
@@ -471,6 +471,7 @@ register_callback (const char *plugin_na
case PLUGIN_EARLY_GIMPLE_PASSES_END:
case PLUGIN_NEW_PASS:
case PLUGIN_INCLUDE_FILE:
+ case PLUGIN_TYPE_CAST:
{
struct callback_info *new_callback;
if (!callback)
@@ -551,6 +552,7 @@ invoke_plugin_callbacks_full (int event,
case PLUGIN_EARLY_GIMPLE_PASSES_END:
case PLUGIN_NEW_PASS:
case PLUGIN_INCLUDE_FILE:
+ case PLUGIN_TYPE_CAST:
{
/* Iterate over every callback registered with this event and
call it. */
diff -Naurp gcc-7.3.0-orig/gcc/plugin.def gcc-7.3.0/gcc/plugin.def
--- gcc-7.3.0-orig/gcc/plugin.def 2017-01-01 04:07:43.905435000 -0800
+++ gcc-7.3.0/gcc/plugin.def 2018-04-24 14:47:02.209408557 -0700
@@ -99,6 +99,9 @@ DEFEVENT (PLUGIN_NEW_PASS)
as a const char* pointer. */
DEFEVENT (PLUGIN_INCLUDE_FILE)
+/* Called when expression is casted to some type. */
+DEFEVENT (PLUGIN_TYPE_CAST)
+
/* When adding a new hard-coded plugin event, don't forget to edit in
file plugin.c the functions register_callback and
invoke_plugin_callbacks_full accordingly! */
You can’t perform that action at this time.