diff options
Diffstat (limited to 'gcc/function.h')
-rw-r--r-- | gcc/function.h | 12 |
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; |