aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/gcc-c-fe.def13
-rw-r--r--include/gcc-c-interface.h11
-rw-r--r--include/gcc-cp-interface.h6
3 files changed, 26 insertions, 4 deletions
diff --git a/include/gcc-c-fe.def b/include/gcc-c-fe.def
index 36a7654..cb7cf19 100644
--- a/include/gcc-c-fe.def
+++ b/include/gcc-c-fe.def
@@ -89,7 +89,10 @@ GCC_METHOD5 (int /* bool */, build_add_field,
/* After all the fields have been added to a struct or union, the
struct or union type must be "finished". This does some final
- cleanups in GCC. */
+ cleanups in GCC.
+
+ Note that when using GCC_C_FE_VERSION_2, it is preferable to call
+ finish_record_with_alignment instead. */
GCC_METHOD2 (int /* bool */, finish_record_or_union,
gcc_type, /* Argument RECORD_OR_UNION_TYPE. */
@@ -220,3 +223,11 @@ GCC_METHOD2 (gcc_type, float_type,
unsigned long, /* Argument SIZE_IN_BYTES. */
const char *) /* Argument BUILTIN_NAME. */
+/* New in GCC_FE_VERSION_2. Like finish_record_or_union but the caller also
+ supplies the alignment. If the alignment is 0, this acts identically to
+ finish_record_or_union. */
+
+GCC_METHOD3 (int /* bool */, finish_record_with_alignment,
+ gcc_type, /* Argument RECORD_OR_UNION_TYPE. */
+ unsigned long, /* Argument SIZE_IN_BYTES. */
+ unsigned long) /* Argument ALIGNMENT. */
diff --git a/include/gcc-c-interface.h b/include/gcc-c-interface.h
index feece1e..700d748 100644
--- a/include/gcc-c-interface.h
+++ b/include/gcc-c-interface.h
@@ -45,7 +45,10 @@ enum gcc_c_api_version
/* Added char_type. Added new version of int_type and float_type,
deprecated int_type_v0 and float_type_v0. */
- GCC_C_FE_VERSION_1 = 1
+ GCC_C_FE_VERSION_1 = 1,
+
+ /* Added finish_record_with_alignment method. */
+ GCC_C_FE_VERSION_2 = 2,
};
/* Qualifiers. */
@@ -198,7 +201,11 @@ struct gcc_c_context
/* The type of the initialization function. The caller passes in the
desired base version and desired C-specific version. If the
request can be satisfied, a compatible gcc_context object will be
- returned. Otherwise, the function returns NULL. */
+ returned. In particular, this may return a context object with a higher
+ actual version number than was requested, provided the higher version is
+ fully compatible. (As of GCC_C_FE_VERSION_2, this is always true.)
+
+ Otherwise, the function returns NULL. */
typedef struct gcc_c_context *gcc_c_fe_context_function
(enum gcc_base_api_version,
diff --git a/include/gcc-cp-interface.h b/include/gcc-cp-interface.h
index 2f95072..15b911c 100644
--- a/include/gcc-cp-interface.h
+++ b/include/gcc-cp-interface.h
@@ -483,7 +483,11 @@ struct gcc_cp_context
/* The type of the initialization function. The caller passes in the
desired base version and desired C-specific version. If the
request can be satisfied, a compatible gcc_context object will be
- returned. Otherwise, the function returns NULL. */
+ returned. In particular, this may return a context object with a higher
+ actual version number than was requested, provided the higher version is
+ fully compatible.
+
+ Otherwise, the function returns NULL. */
typedef struct gcc_cp_context *gcc_cp_fe_context_function
(enum gcc_base_api_version,