aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/function.h')
-rw-r--r--gcc/function.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/function.h b/gcc/function.h
index de3a46a..8f69429 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -524,11 +524,17 @@ struct GTY(()) function {
/* Properties used by the pass manager. */
unsigned int curr_properties;
unsigned int last_verified;
+
/* Interprocedural passes scheduled to have their transform functions
applied next time we execute local pass on them. We maintain it
per-function in order to allow IPA passes to introduce new functions. */
VEC(ipa_opt_pass,heap) * GTY((skip)) ipa_transforms_to_apply;
+ /* Non-null if the function does something that would prevent it from
+ being copied; this applies to both versioning and inlining. Set to
+ a string describing the reason for failure. */
+ const char * GTY((skip)) cannot_be_copied_reason;
+
/* Collected bit flags. */
/* Number of units of general registers that need saving in stdarg
@@ -540,7 +546,6 @@ struct GTY(()) function {
function. */
unsigned int va_list_fpr_size : 8;
-
/* How commonly executed the function is. Initialized during branch
probabilities pass. */
ENUM_BITFIELD (function_frequency) function_frequency : 2;
@@ -556,6 +561,11 @@ struct GTY(()) function {
from nested functions. */
unsigned int has_nonlocal_label : 1;
+ /* Nonzero if we've set cannot_be_copied_reason. I.e. if
+ (cannot_be_copied_set && !cannot_be_copied_reason), the function
+ can in fact be copied. */
+ unsigned int cannot_be_copied_set : 1;
+
/* Nonzero if current function uses stdarg.h or equivalent. */
unsigned int stdarg : 1;