Akira Hatanaka
7275da0f2e
[ObjC] Allow declaring __strong pointer fields in structs in Objective-C
...
ARC mode.
Declaring __strong pointer fields in structs was not allowed in
Objective-C ARC until now because that would make the struct non-trivial
to default-initialize, copy/move, and destroy, which is not something C
was designed to do. This patch lifts that restriction.
Special functions for non-trivial C structs are synthesized that are
needed to default-initialize, copy/move, and destroy the structs and
manage the ownership of the objects the __strong pointer fields point
to. Non-trivial structs passed to functions are destructed in the callee
function.
rdar://problem/33599681
Differential Revision: https://reviews.llvm.org/D41228
llvm-svn: 326307
2018-02-28 07:15:55 +00:00
..
2018-01-03 23:52:42 +00:00
2015-08-21 20:28:16 +00:00
2012-04-06 18:12:22 +00:00
2015-04-09 23:39:53 +00:00
2013-07-31 23:19:34 +00:00
2018-02-28 07:15:55 +00:00
2015-02-25 20:09:06 +00:00
2014-05-27 18:26:09 +00:00
2014-09-06 00:24:58 +00:00
2015-10-27 04:54:50 +00:00
2017-09-20 05:39:18 +00:00
2016-06-01 17:14:19 +00:00
2013-03-01 07:58:16 +00:00
2013-12-16 22:54:37 +00:00
2017-03-23 10:46:05 +00:00
2017-08-22 10:38:07 +00:00
2017-11-26 20:01:12 +00:00
2012-12-12 22:48:25 +00:00
2013-09-27 20:21:48 +00:00
2012-10-19 12:44:48 +00:00
2017-03-29 17:55:11 +00:00
2012-10-19 12:44:48 +00:00
2018-02-28 07:15:55 +00:00
2014-06-18 23:22:38 +00:00
2017-03-29 18:09:02 +00:00
2015-10-28 05:03:19 +00:00
2015-02-25 20:09:06 +00:00
2012-10-19 12:44:48 +00:00
2012-04-06 18:12:22 +00:00
2017-02-16 23:15:36 +00:00
2016-12-03 01:14:32 +00:00
2012-06-20 06:18:46 +00:00
2016-01-27 15:51:56 +00:00
2016-06-28 20:55:30 +00:00
2017-08-14 19:49:12 +00:00
2015-06-19 23:17:46 +00:00
2012-10-19 12:44:48 +00:00
2014-12-27 22:14:15 +00:00
2017-05-31 15:45:57 +00:00
2015-07-30 19:06:04 +00:00
2015-02-04 07:23:21 +00:00
2016-04-29 17:03:34 +00:00
2017-07-15 11:06:46 +00:00
2013-07-18 14:56:42 +00:00
2015-10-22 18:38:17 +00:00
2016-04-01 23:23:52 +00:00
2013-06-20 12:46:19 +00:00
2013-07-23 19:30:11 +00:00
2014-09-06 00:24:58 +00:00
2013-10-14 14:05:48 +00:00
2013-03-01 09:20:14 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2017-11-08 22:47:15 +00:00
2017-01-06 11:31:12 +00:00
2012-04-06 18:12:22 +00:00
2012-10-19 12:44:48 +00:00
2015-07-07 03:58:01 +00:00
2015-10-08 08:28:09 +00:00
2015-10-30 16:30:45 +00:00
2013-03-06 00:37:40 +00:00
2012-10-19 12:44:48 +00:00
2014-07-11 20:53:51 +00:00
2013-01-04 18:45:40 +00:00
2014-07-11 20:53:51 +00:00
2016-08-22 21:50:22 +00:00
2014-03-11 17:10:51 +00:00
2017-03-23 11:44:25 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2016-11-10 18:30:26 +00:00
2013-12-09 22:04:26 +00:00
2015-08-06 04:51:14 +00:00
2015-09-14 21:27:36 +00:00
2014-03-11 17:10:51 +00:00
2012-04-06 18:12:22 +00:00
2015-10-13 23:27:34 +00:00
2012-10-19 12:44:48 +00:00
2012-04-06 18:12:22 +00:00
2017-03-15 17:16:41 +00:00
2012-04-06 18:12:22 +00:00
2014-07-18 22:59:10 +00:00
2014-03-11 17:10:51 +00:00
2012-04-06 18:12:22 +00:00
2012-10-19 12:44:48 +00:00
2017-05-31 15:45:57 +00:00
2012-10-19 12:44:48 +00:00
2014-07-16 15:12:48 +00:00
2014-07-16 15:12:48 +00:00
2014-10-13 21:07:45 +00:00
2013-12-13 05:58:51 +00:00
2012-04-06 18:12:22 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2015-08-05 03:55:23 +00:00
2012-04-06 18:12:22 +00:00
2012-04-06 18:12:22 +00:00
2014-06-19 23:05:46 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2015-07-07 03:58:01 +00:00
2015-07-07 03:58:01 +00:00
2012-10-19 12:44:48 +00:00
2012-06-20 06:18:46 +00:00
2012-10-19 12:44:48 +00:00
2012-08-21 21:45:58 +00:00
2014-01-27 19:14:49 +00:00
2013-10-14 18:55:27 +00:00
2013-02-22 06:58:37 +00:00
2016-09-13 20:04:35 +00:00
2012-04-06 18:12:22 +00:00
2014-01-28 22:46:29 +00:00
2013-03-07 22:57:58 +00:00
2015-02-27 21:19:58 +00:00
2017-08-15 12:40:01 +00:00
2013-09-27 20:21:48 +00:00
2017-07-03 10:12:24 +00:00
2017-07-03 10:12:24 +00:00
2012-10-19 12:44:48 +00:00
2014-05-28 18:12:10 +00:00
2013-06-24 21:35:39 +00:00
2012-04-06 18:12:22 +00:00
2017-05-24 01:38:00 +00:00
2013-09-27 20:21:48 +00:00
2012-04-06 18:12:22 +00:00
2017-11-26 20:01:12 +00:00
2017-11-26 20:01:12 +00:00
2012-04-06 18:12:22 +00:00
2012-05-18 21:22:49 +00:00
2014-08-22 23:17:52 +00:00
2012-10-19 12:44:48 +00:00
2016-03-23 16:28:28 +00:00
2012-04-06 18:12:22 +00:00
2012-07-25 07:26:32 +00:00
2014-07-14 22:48:10 +00:00
2013-10-14 14:05:48 +00:00
2012-09-24 22:00:36 +00:00
2017-10-23 22:01:41 +00:00
2017-10-23 22:01:41 +00:00
2017-04-19 17:54:08 +00:00
2017-11-26 20:01:12 +00:00
2014-09-11 19:13:23 +00:00
2015-02-21 00:45:58 +00:00
2016-12-15 18:54:00 +00:00
2016-10-25 12:39:28 +00:00
2012-05-04 21:08:08 +00:00
2016-03-29 21:30:58 +00:00
2012-04-06 18:12:22 +00:00
2017-07-03 10:12:24 +00:00
2015-11-10 23:00:25 +00:00
2013-03-27 00:02:21 +00:00
2013-02-12 02:08:12 +00:00
2012-10-19 12:44:48 +00:00
2013-11-29 14:57:58 +00:00
2016-05-25 05:41:57 +00:00
2013-10-31 01:56:18 +00:00
2012-10-19 12:44:48 +00:00
2012-05-14 22:48:56 +00:00
2013-07-17 18:17:14 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2017-08-11 00:06:49 +00:00
2013-12-05 20:52:31 +00:00
2013-05-15 15:27:35 +00:00
2015-07-07 03:57:35 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2012-04-06 18:12:22 +00:00
2012-10-19 12:44:48 +00:00
2012-04-06 18:12:22 +00:00
2012-09-24 22:51:51 +00:00
2012-09-24 22:51:51 +00:00
2012-04-06 18:12:22 +00:00
2014-07-11 20:53:51 +00:00
2014-08-26 21:10:47 +00:00
2013-09-27 19:40:16 +00:00
2017-10-23 22:01:41 +00:00
2012-09-24 22:00:36 +00:00
2016-09-13 17:41:05 +00:00
2012-04-06 18:12:22 +00:00
2013-05-15 15:27:35 +00:00
2014-03-31 22:29:15 +00:00
2017-05-10 20:03:16 +00:00
2012-10-19 12:44:48 +00:00
2013-08-14 23:58:55 +00:00
2012-04-06 18:12:22 +00:00
2012-04-06 18:12:22 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2014-12-18 19:41:11 +00:00
2012-10-19 12:44:48 +00:00
2012-04-06 18:12:22 +00:00
2013-05-15 15:27:35 +00:00
2012-06-21 18:43:08 +00:00
2016-11-21 11:16:30 +00:00
2014-01-02 21:26:14 +00:00
2012-10-23 23:06:22 +00:00
2013-12-13 05:58:51 +00:00
2013-12-13 05:58:51 +00:00
2013-03-27 00:02:21 +00:00
2012-04-06 18:12:22 +00:00
2016-03-07 22:44:55 +00:00
2012-06-21 18:43:08 +00:00
2013-05-15 15:27:35 +00:00
2012-04-06 18:12:22 +00:00
2015-10-28 05:03:19 +00:00
2015-11-19 02:28:03 +00:00
2016-04-13 23:43:56 +00:00
2015-04-07 16:56:27 +00:00
2012-05-18 21:22:49 +00:00
2012-10-19 12:44:48 +00:00
2012-04-06 18:12:22 +00:00
2015-10-27 04:54:50 +00:00
2012-10-19 12:44:48 +00:00
2012-09-24 22:00:36 +00:00
2013-03-27 00:02:21 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2013-01-08 18:16:18 +00:00
2015-04-07 06:01:53 +00:00
2012-10-19 12:44:48 +00:00
2014-06-12 16:55:43 +00:00
2018-01-03 23:52:42 +00:00
2012-10-19 12:44:48 +00:00
2016-08-15 21:05:00 +00:00
2012-02-23 22:51:36 +00:00
2015-06-24 22:02:08 +00:00
2016-11-10 23:28:17 +00:00
2015-10-09 20:36:17 +00:00
2015-07-14 20:08:49 +00:00
2016-07-19 20:21:18 +00:00
2017-11-26 20:01:12 +00:00
2015-07-24 05:09:40 +00:00
2012-10-19 12:44:48 +00:00
2014-09-10 18:23:34 +00:00
2017-02-20 23:45:49 +00:00
2017-07-11 10:18:35 +00:00
2017-07-11 10:18:35 +00:00
2012-07-19 18:10:18 +00:00
2014-06-10 19:02:48 +00:00
2012-07-19 18:10:18 +00:00
2012-06-21 18:43:08 +00:00
2016-07-19 20:21:18 +00:00
2015-04-16 21:52:34 +00:00
2014-10-28 18:28:16 +00:00
2015-07-24 05:09:40 +00:00
2012-05-12 17:32:56 +00:00
2014-06-11 19:10:46 +00:00
2012-10-19 12:44:48 +00:00
2017-11-26 20:01:12 +00:00
2017-11-26 20:01:12 +00:00
2013-12-16 22:54:37 +00:00
2015-04-10 22:07:47 +00:00
2015-10-30 16:30:27 +00:00
2014-03-29 15:09:45 +00:00
2015-06-19 18:14:38 +00:00
2013-12-13 18:19:59 +00:00
2016-02-13 01:41:41 +00:00
2015-09-23 22:14:21 +00:00
2015-07-07 03:58:22 +00:00
2016-09-13 17:41:05 +00:00
2016-04-13 20:59:07 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2015-12-10 23:02:09 +00:00
2013-02-10 00:16:04 +00:00
2013-05-15 15:27:35 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2015-04-08 21:34:04 +00:00
2013-12-13 19:06:55 +00:00
2012-10-19 12:44:48 +00:00
2013-12-13 18:19:59 +00:00
2012-10-19 12:44:48 +00:00
2017-07-13 11:06:22 +00:00
2012-09-24 22:00:36 +00:00
2012-10-19 12:44:48 +00:00
2016-05-26 02:32:10 +00:00
2015-12-10 23:02:09 +00:00
2013-09-27 20:21:48 +00:00
2013-02-10 00:16:04 +00:00
2013-04-25 21:59:34 +00:00
2013-04-25 21:59:34 +00:00
2013-07-20 00:40:58 +00:00
2016-08-16 17:44:11 +00:00
2012-10-19 12:44:48 +00:00
2012-04-06 18:12:22 +00:00
2012-09-24 22:00:36 +00:00
2017-10-06 19:24:26 +00:00
2015-12-09 22:57:32 +00:00
2015-10-13 23:27:34 +00:00
2014-02-15 00:04:36 +00:00
2012-09-24 22:00:36 +00:00
2012-04-06 18:12:22 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2016-06-28 20:55:30 +00:00
2012-10-19 12:44:48 +00:00
2012-04-06 18:12:22 +00:00
2012-04-06 18:12:22 +00:00
2013-10-04 18:06:08 +00:00
2012-10-19 12:44:48 +00:00
2017-03-30 13:33:51 +00:00
2014-08-15 17:39:00 +00:00
2012-10-19 12:44:48 +00:00
2013-04-24 17:06:38 +00:00
2012-10-19 12:44:48 +00:00
2015-07-07 03:58:14 +00:00
2013-12-18 23:30:06 +00:00
2014-07-25 19:45:01 +00:00
2014-07-25 19:45:01 +00:00
2013-06-18 15:31:36 +00:00
2013-06-18 15:31:36 +00:00
2012-10-19 12:44:48 +00:00
2012-02-27 22:55:11 +00:00
2013-04-27 00:10:12 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2015-07-07 03:58:01 +00:00
2014-10-10 22:08:23 +00:00
2012-06-21 18:43:08 +00:00
2013-09-27 20:21:48 +00:00
2012-04-06 18:12:22 +00:00
2012-10-19 12:44:48 +00:00
2013-07-11 19:13:34 +00:00
2014-08-27 16:38:47 +00:00
2012-10-19 12:44:48 +00:00
2012-04-06 18:12:22 +00:00
2014-09-06 00:24:58 +00:00
2014-06-24 17:02:19 +00:00
2012-10-19 12:44:48 +00:00
2015-02-19 21:52:41 +00:00
2014-05-09 19:51:39 +00:00
2012-04-06 18:12:22 +00:00
2013-12-08 22:22:31 +00:00
2012-04-06 18:12:22 +00:00
2013-09-06 03:13:09 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2012-10-19 12:44:48 +00:00
2012-04-06 18:12:22 +00:00
2013-05-15 22:25:03 +00:00
2012-07-09 17:54:36 +00:00
2017-03-23 18:51:54 +00:00
2012-04-06 18:12:22 +00:00
2018-02-28 07:15:55 +00:00
2016-10-28 10:25:10 +00:00
2012-10-19 12:44:48 +00:00
2013-09-27 20:21:48 +00:00
2013-11-05 00:28:21 +00:00
2012-10-19 12:44:48 +00:00
2015-01-20 16:53:34 +00:00
2013-03-01 09:20:14 +00:00
2017-07-28 14:41:21 +00:00
2012-04-06 18:12:22 +00:00
2013-09-27 20:21:48 +00:00
2013-09-27 20:21:48 +00:00
2012-10-19 12:44:48 +00:00
2015-10-27 04:54:50 +00:00
2013-12-13 18:19:59 +00:00
2017-11-08 21:33:15 +00:00
2012-10-19 12:44:48 +00:00
2016-02-07 02:30:59 +00:00
2017-09-15 00:08:37 +00:00
2012-10-19 12:44:48 +00:00
2012-04-06 18:12:22 +00:00
2015-03-30 23:30:24 +00:00
2013-12-13 05:58:51 +00:00
2012-04-06 18:12:22 +00:00
2018-02-23 23:49:43 +00:00
2017-08-14 19:49:12 +00:00
2017-08-18 20:20:56 +00:00
2013-09-27 20:21:48 +00:00
2012-09-13 00:21:35 +00:00
2017-03-06 15:58:34 +00:00
2014-01-27 22:44:17 +00:00
2015-02-16 23:49:44 +00:00
2012-10-19 12:44:48 +00:00
2012-12-13 00:42:06 +00:00
2014-08-27 20:34:29 +00:00
2017-07-13 16:37:11 +00:00
2013-09-27 20:21:48 +00:00
2014-08-25 21:27:38 +00:00
2013-12-19 22:47:11 +00:00
2013-09-27 20:21:48 +00:00
2012-11-02 17:50:53 +00:00
2016-03-10 02:02:48 +00:00
2017-08-25 16:12:17 +00:00
2013-07-04 16:16:58 +00:00
2013-12-18 23:30:06 +00:00
2013-07-04 16:16:58 +00:00
2017-11-17 20:44:25 +00:00
2016-04-09 18:59:48 +00:00
2014-05-09 17:08:01 +00:00
2014-03-29 04:49:20 +00:00
2012-04-06 18:12:22 +00:00
2013-03-27 00:02:21 +00:00
2012-12-12 22:48:25 +00:00
2012-10-19 12:44:48 +00:00
2017-05-05 16:15:17 +00:00