aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraph.c
diff options
context:
space:
mode:
authorPierre-Marie de Rodat <derodat@adacore.com>2017-09-15 16:20:21 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2017-09-15 16:20:21 +0000
commita3e61d61ba546adb2a13b7656e5cc13a1cb17060 (patch)
tree5622929d75f96b1b8b73f3fb8003a4e7ac7b6f8e /gcc/cgraph.c
parented17cb57b8ddfa4d0c48e0428d0b1df4384a90c5 (diff)
downloadgcc-a3e61d61ba546adb2a13b7656e5cc13a1cb17060.zip
gcc-a3e61d61ba546adb2a13b7656e5cc13a1cb17060.tar.gz
gcc-a3e61d61ba546adb2a13b7656e5cc13a1cb17060.tar.bz2
Add comments to struct cgraph_thunk_info
This commit adds comments to fields in the cgraph_thunk_info structure declaration from cgraph.h. They will hopefully answer questions that people like myself can ask while discovering the thunk machinery. I also made an assertion stricter in cgraph_node::create_thunk. Bootsrapped and regtested on x86_64-linux. gcc/ * cgraph.h (cgraph_thunk_info): Add comments. * cgraph.c (cgraph_node::create_thunk): Adjust comment, make assert for VIRTUAL_* arguments stricter. From-SVN: r252828
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r--gcc/cgraph.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 69aa6c5..8bffdec 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -603,7 +603,7 @@ cgraph_node::create_same_body_alias (tree alias, tree decl)
/* Add thunk alias into callgraph. The alias declaration is ALIAS and it
aliases DECL with an adjustments made into the first parameter.
- See comments in thunk_adjust for detail on the parameters. */
+ See comments in struct cgraph_thunk_info for detail on the parameters. */
cgraph_node *
cgraph_node::create_thunk (tree alias, tree, bool this_adjusting,
@@ -619,13 +619,17 @@ cgraph_node::create_thunk (tree alias, tree, bool this_adjusting,
node->reset ();
else
node = cgraph_node::create (alias);
- gcc_checking_assert (!virtual_offset
- || wi::eq_p (virtual_offset, virtual_value));
+
+ /* Make sure that if VIRTUAL_OFFSET is in sync with VIRTUAL_VALUE. */
+ gcc_checking_assert (virtual_offset
+ ? wi::eq_p (virtual_offset, virtual_value)
+ : virtual_value == 0);
+
node->thunk.fixed_offset = fixed_offset;
- node->thunk.this_adjusting = this_adjusting;
node->thunk.virtual_value = virtual_value;
- node->thunk.virtual_offset_p = virtual_offset != NULL;
node->thunk.alias = real_alias;
+ node->thunk.this_adjusting = this_adjusting;
+ node->thunk.virtual_offset_p = virtual_offset != NULL;
node->thunk.thunk_p = true;
node->definition = true;