aboutsummaryrefslogtreecommitdiff
path: root/gcc/objc/objc-act.h
diff options
context:
space:
mode:
authorIain Sandoe <iain@sandoe.co.uk>2019-08-28 19:21:33 +0000
committerIain Sandoe <iains@gcc.gnu.org>2019-08-28 19:21:33 +0000
commitd098d5b487cf4f892c7e670cc9b4c849b75c4b16 (patch)
treeb294124390efc49b69a730095d5454f2ca958c5c /gcc/objc/objc-act.h
parent86a03e9cc6c2b80339b24d3bdd148a8f8e520507 (diff)
downloadgcc-d098d5b487cf4f892c7e670cc9b4c849b75c4b16.zip
gcc-d098d5b487cf4f892c7e670cc9b4c849b75c4b16.tar.gz
gcc-d098d5b487cf4f892c7e670cc9b4c849b75c4b16.tar.bz2
[ObjC] Recognise 'instancetype' as equivalent to 'id'.
This is primarily about fixing a number of testsuite fails, it implements the parsing of 'instancetype' but doesn't alter the code gen (relative to using id in the same position). It is part of the work-arounds for PR90709. gcc/objc/ 2019-08-28 Iain Sandoe <iain@sandoe.co.uk> Backport from mainline. 2019-05-18 Iain Sandoe <iain@sandoe.co.uk> * objc/objc-act.h (OCTI_INSTANCE_TYPE, OCTI_INSTANCETYPE_NAME): New. (objc_global_trees): Add instance type and name. (INSTANCE_TYPEDEF_NAME): New. * objc/objc-act.c (synth_module_prologue): Build decls for objc_instancetype_type and objc_instancetype_name. gcc/testsuite/ 2019-08-28 Iain Sandoe <iain@sandoe.co.uk> Backport from mainline. 2019-05-18 Iain Sandoe <iain@sandoe.co.uk> * objc.dg/instancetype-0.m: New. From-SVN: r275001
Diffstat (limited to 'gcc/objc/objc-act.h')
-rw-r--r--gcc/objc/objc-act.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h
index 4bae555..2865485 100644
--- a/gcc/objc/objc-act.h
+++ b/gcc/objc/objc-act.h
@@ -313,6 +313,7 @@ enum objc_tree_index
OCTI_SUPER_TYPE,
OCTI_SEL_TYPE,
OCTI_ID_TYPE,
+ OCTI_INSTANCE_TYPE,
OCTI_CLS_TYPE,
OCTI_NST_TYPE,
OCTI_PROTO_TYPE,
@@ -368,6 +369,7 @@ enum objc_tree_index
OCTI_OBJ_ID,
OCTI_CLS_ID,
OCTI_ID_NAME,
+ OCTI_INSTANCETYPE_NAME,
OCTI_CLASS_NAME,
OCTI_CNST_STR_ID,
OCTI_CNST_STR_TYPE,
@@ -443,6 +445,7 @@ extern GTY(()) tree objc_global_trees[OCTI_MAX];
#define objc_super_type objc_global_trees[OCTI_SUPER_TYPE]
#define objc_selector_type objc_global_trees[OCTI_SEL_TYPE]
#define objc_object_type objc_global_trees[OCTI_ID_TYPE]
+#define objc_instancetype_type objc_global_trees[OCTI_INSTANCE_TYPE]
#define objc_class_type objc_global_trees[OCTI_CLS_TYPE]
#define objc_instance_type objc_global_trees[OCTI_NST_TYPE]
#define objc_protocol_type objc_global_trees[OCTI_PROTO_TYPE]
@@ -570,7 +573,8 @@ extern GTY(()) tree objc_global_trees[OCTI_MAX];
#define objc_object_id objc_global_trees[OCTI_OBJ_ID]
#define objc_class_id objc_global_trees[OCTI_CLS_ID]
-#define objc_object_name objc_global_trees[OCTI_ID_NAME]
+#define objc_object_name objc_global_trees[OCTI_ID_NAME]
+#define objc_instancetype_name objc_global_trees[OCTI_INSTANCETYPE_NAME]
#define objc_class_name objc_global_trees[OCTI_CLASS_NAME]
/* Constant string classes. */
@@ -608,6 +612,7 @@ extern GTY(()) tree objc_global_trees[OCTI_MAX];
/* Reserved tag definitions. */
#define OBJECT_TYPEDEF_NAME "id"
+#define INSTANCE_TYPEDEF_NAME "instancetype"
#define CLASS_TYPEDEF_NAME "Class"
#define TAG_OBJECT "objc_object"