Richard Smith
5e9746f520
DR583, DR1512: Implement a rewrite to C++'s 'composite pointer type' rules.
...
This has two significant effects:
1) Direct relational comparisons between null pointer constants (0 and nullopt)
and pointers are now ill-formed. This was always the case for C, and it
appears that C++ only ever permitted by accident. For instance, cases like
nullptr < &a
are now rejected.
2) Comparisons and conditional operators between differently-cv-qualified
pointer types now work, and produce a composite type that both source
pointer types can convert to (when possible). For instance, comparison
between 'int **' and 'const int **' is now valid, and uses an intermediate
type of 'const int *const *'.
Clang previously supported #2 as an extension.
We do not accept the cases in #1 as an extension. I've tested a fair amount of
code to check that this doesn't break it, but if it turns out that someone is
relying on this, we can easily add it back as an extension.
This is a re-commit of r284800.
llvm-svn: 284890
2016-10-21 22:00:42 +00:00
..
2016-10-21 16:09:20 +00:00
2016-07-20 19:41:17 +00:00
2016-07-20 19:41:17 +00:00
2016-10-21 16:09:20 +00:00
2016-01-13 11:18:54 +00:00
2016-10-21 16:09:20 +00:00
2016-01-13 11:18:54 +00:00
2016-10-21 16:09:20 +00:00
2016-01-13 11:18:54 +00:00
2016-10-21 16:09:20 +00:00
2016-01-13 11:18:54 +00:00
2016-10-21 16:09:20 +00:00
2016-10-13 09:52:46 +00:00
2016-03-03 05:21:39 +00:00
2016-03-03 05:21:39 +00:00
2016-03-17 10:19:46 +00:00
2016-04-27 11:38:05 +00:00
2016-03-03 05:21:39 +00:00
2016-03-17 10:19:46 +00:00
2016-04-12 11:02:11 +00:00
2016-04-12 11:02:11 +00:00
2016-10-21 16:09:20 +00:00
2016-04-12 11:02:11 +00:00
2016-05-09 14:59:13 +00:00
2016-05-09 14:59:13 +00:00
2016-01-20 09:07:54 +00:00
2016-06-30 21:22:08 +00:00
2016-01-15 18:50:31 +00:00
2016-01-15 18:50:31 +00:00
2016-04-01 08:43:42 +00:00
2016-06-27 14:55:37 +00:00
2016-06-27 14:55:37 +00:00
2016-06-27 14:55:37 +00:00
2016-06-27 14:55:37 +00:00
2016-06-27 14:55:37 +00:00
2016-06-27 14:55:37 +00:00
2016-06-27 14:55:37 +00:00
2016-06-27 14:55:37 +00:00
2016-06-27 14:55:37 +00:00
2016-06-27 14:55:37 +00:00
2016-06-27 14:55:37 +00:00
2016-10-04 14:41:36 +00:00
2016-06-27 14:55:37 +00:00
2016-06-27 14:55:37 +00:00
2016-10-21 22:00:42 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-07-13 20:40:32 +00:00
2016-07-15 04:39:07 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-10-04 14:41:36 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-07-05 05:00:15 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 22:00:42 +00:00
2016-07-06 04:45:38 +00:00
2016-07-06 04:45:38 +00:00
2016-07-06 04:45:38 +00:00
2016-07-06 04:45:38 +00:00
2016-07-06 04:45:38 +00:00
2016-07-06 04:45:38 +00:00
2016-07-13 19:16:56 +00:00
2016-07-15 04:39:07 +00:00
2016-07-06 04:45:38 +00:00
2016-10-04 14:41:36 +00:00
2016-07-06 04:45:38 +00:00
2016-07-06 04:45:38 +00:00
2016-05-27 04:13:39 +00:00
2016-04-07 12:45:37 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-04-11 19:30:25 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-03-29 08:58:54 +00:00
2016-04-01 08:43:42 +00:00
2016-04-11 19:30:25 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-10-21 16:09:20 +00:00
2016-10-04 14:41:36 +00:00
2015-12-28 07:25:51 +00:00
2016-10-21 22:00:42 +00:00
2016-01-20 09:07:54 +00:00
2016-10-21 16:09:20 +00:00
2016-04-11 19:30:25 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-03-29 08:58:54 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-10-04 14:41:36 +00:00
2016-04-11 19:30:25 +00:00
2015-12-28 07:25:51 +00:00
2016-04-11 19:30:25 +00:00
2016-07-27 08:15:54 +00:00
2016-04-22 03:56:56 +00:00
2016-10-21 16:09:20 +00:00
2016-08-18 09:25:07 +00:00
2016-06-30 21:22:08 +00:00
2016-06-30 21:22:08 +00:00
2016-06-30 21:22:08 +00:00
2015-12-23 10:27:45 +00:00
2016-10-21 16:09:20 +00:00
2016-10-21 16:09:20 +00:00
2015-12-23 10:27:45 +00:00
2016-04-19 06:19:52 +00:00
2016-10-21 16:09:20 +00:00
2016-03-29 05:34:15 +00:00
2016-04-01 08:43:42 +00:00
2016-06-16 18:39:34 +00:00
2016-04-01 08:43:42 +00:00
2016-01-20 09:07:54 +00:00
2016-10-21 16:09:20 +00:00
2016-04-11 19:30:25 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-03-29 08:58:54 +00:00
2016-04-01 08:43:42 +00:00
2016-04-11 19:30:25 +00:00
2016-04-01 08:43:42 +00:00
2016-10-04 14:41:36 +00:00
2015-12-28 07:25:51 +00:00
2016-10-21 22:00:42 +00:00
2016-01-20 09:07:54 +00:00
2016-10-21 16:09:20 +00:00
2016-04-11 19:30:25 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-03-29 08:58:54 +00:00
2015-12-30 12:06:23 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-10-04 14:41:36 +00:00
2016-04-11 19:30:25 +00:00
2015-12-28 07:25:51 +00:00
2016-04-11 19:30:25 +00:00
2016-02-10 10:50:12 +00:00
2016-02-25 05:25:57 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-10-04 14:41:36 +00:00
2016-04-19 06:19:52 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-10-04 14:41:36 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-05-26 11:10:11 +00:00
2015-12-31 06:52:34 +00:00
2016-10-21 16:09:20 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-10-04 14:41:36 +00:00
2016-10-21 22:00:42 +00:00
2016-03-29 10:59:56 +00:00
2016-10-21 16:09:20 +00:00
2016-04-11 19:30:25 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2015-12-25 13:38:08 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-10-04 14:41:36 +00:00
2016-04-11 19:30:25 +00:00
2016-04-11 19:30:25 +00:00
2016-03-17 10:50:17 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-01-26 16:37:23 +00:00
2016-06-30 21:22:08 +00:00
2016-06-30 21:22:08 +00:00
2016-06-30 21:22:08 +00:00
2016-06-30 21:22:08 +00:00
2016-01-21 19:57:55 +00:00
2016-06-30 21:22:08 +00:00
2016-02-02 04:00:47 +00:00
2016-01-21 19:57:55 +00:00
2016-01-21 19:57:55 +00:00
2016-07-13 15:37:16 +00:00
2016-07-28 14:23:26 +00:00
2016-07-13 15:37:16 +00:00
2016-01-26 16:37:23 +00:00
2016-07-20 20:45:29 +00:00
2016-02-02 04:00:47 +00:00
2016-01-22 01:09:37 +00:00
2016-06-30 21:22:08 +00:00
2016-07-20 20:45:29 +00:00
2016-01-19 19:15:56 +00:00
2016-01-19 19:15:56 +00:00
2016-02-27 00:01:58 +00:00
2016-01-22 00:03:50 +00:00
2016-02-27 00:01:58 +00:00
2016-06-30 21:22:08 +00:00
2016-07-20 20:45:29 +00:00
2016-01-19 20:04:50 +00:00
2016-01-19 20:04:50 +00:00
2016-02-27 00:01:58 +00:00
2016-01-22 00:22:05 +00:00
2016-10-13 09:52:46 +00:00
2016-04-01 08:43:42 +00:00
2016-02-02 04:00:47 +00:00
2016-07-13 17:16:49 +00:00
2016-07-28 14:25:09 +00:00
2016-07-28 14:25:09 +00:00
2016-10-14 12:43:59 +00:00
2016-10-06 15:47:36 +00:00
2016-06-30 21:22:08 +00:00
2016-01-21 22:18:28 +00:00
2016-04-19 06:19:52 +00:00
2016-02-02 04:00:47 +00:00
2016-01-26 18:48:41 +00:00
2016-07-20 20:45:29 +00:00
2016-02-02 04:00:47 +00:00
2016-04-01 08:43:42 +00:00
2016-02-03 15:46:42 +00:00
2016-02-03 15:46:42 +00:00
2016-02-03 15:46:42 +00:00
2016-02-03 15:46:42 +00:00
2016-07-20 20:45:29 +00:00
2016-02-03 15:46:42 +00:00
2016-04-01 08:43:42 +00:00
2016-02-03 15:46:42 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-03-29 08:58:54 +00:00
2016-07-20 20:45:29 +00:00
2016-02-03 15:46:42 +00:00
2016-04-01 08:43:42 +00:00
2016-02-03 15:46:42 +00:00
2016-02-03 15:46:42 +00:00
2016-02-03 15:46:42 +00:00
2016-04-01 08:43:42 +00:00
2016-02-03 15:46:42 +00:00
2016-10-04 14:41:36 +00:00
2016-02-03 15:46:42 +00:00
2016-10-21 22:00:42 +00:00
2016-07-14 02:54:56 +00:00
2016-07-18 16:09:53 +00:00
2016-07-14 02:54:56 +00:00
2016-07-14 02:54:56 +00:00
2016-07-20 20:45:29 +00:00
2016-07-14 02:54:56 +00:00
2016-07-14 02:54:56 +00:00
2016-07-14 02:54:56 +00:00
2016-07-14 02:54:56 +00:00
2016-07-14 02:54:56 +00:00
2016-07-14 02:54:56 +00:00
2016-07-20 20:45:29 +00:00
2016-07-14 02:54:56 +00:00
2016-07-15 04:39:07 +00:00
2016-07-14 02:54:56 +00:00
2016-07-14 02:54:56 +00:00
2016-07-18 16:09:53 +00:00
2016-07-14 02:54:56 +00:00
2016-07-14 02:54:56 +00:00
2016-10-04 14:41:36 +00:00
2016-07-14 02:54:56 +00:00
2016-07-14 02:54:56 +00:00
2016-07-14 02:54:56 +00:00
2016-02-02 04:00:47 +00:00
2016-07-20 20:45:29 +00:00
2016-06-30 21:22:08 +00:00
2016-01-26 18:48:41 +00:00
2016-02-02 04:00:47 +00:00
2016-04-01 08:43:42 +00:00
2016-02-02 04:00:47 +00:00
2016-10-04 14:41:36 +00:00
2016-04-01 08:43:42 +00:00
2016-06-30 21:22:08 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 22:00:42 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-10-04 14:41:36 +00:00
2016-07-20 22:57:10 +00:00
2016-07-20 22:57:10 +00:00
2016-06-22 03:10:32 +00:00
2016-06-30 21:22:08 +00:00
2016-07-20 20:45:29 +00:00
2016-05-26 17:49:04 +00:00
2016-05-26 17:49:04 +00:00
2016-05-26 17:49:04 +00:00
2016-05-26 17:49:04 +00:00
2016-06-20 19:16:34 +00:00
2016-05-26 17:49:04 +00:00
2016-04-19 06:19:52 +00:00
2016-10-21 16:09:20 +00:00
2016-07-20 20:45:29 +00:00
2016-10-21 16:09:20 +00:00
2016-04-29 09:56:11 +00:00
2016-10-21 16:09:20 +00:00
2016-03-17 10:19:46 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-10-21 16:09:20 +00:00
2016-04-11 19:30:25 +00:00
2016-10-21 16:09:20 +00:00
2016-04-13 13:36:48 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-03-29 08:58:54 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 22:00:42 +00:00
2016-10-21 16:09:20 +00:00
2016-04-11 19:30:25 +00:00
2016-10-21 16:09:20 +00:00
2016-04-13 13:36:48 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-04-01 08:43:42 +00:00
2016-03-29 08:58:54 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-04-01 08:43:42 +00:00
2016-04-11 19:30:25 +00:00
2016-04-11 19:30:25 +00:00
2016-10-21 16:09:20 +00:00
2016-01-13 11:18:54 +00:00
2016-10-21 16:09:20 +00:00
2016-01-13 11:18:54 +00:00
2016-04-19 06:19:52 +00:00
2016-06-30 21:22:08 +00:00
2016-08-05 14:37:37 +00:00
2016-08-05 14:37:37 +00:00
2016-08-05 14:37:37 +00:00
2016-08-05 14:37:37 +00:00
2016-08-05 14:37:37 +00:00
2016-08-05 14:37:37 +00:00
2016-08-05 14:37:37 +00:00
2016-08-05 14:37:37 +00:00
2016-08-05 14:37:37 +00:00
2016-10-04 14:41:36 +00:00
2016-08-05 14:37:37 +00:00
2016-08-05 14:37:37 +00:00
2016-06-30 21:22:08 +00:00
2016-04-01 08:43:42 +00:00
2016-06-30 21:22:08 +00:00
2016-04-01 08:43:42 +00:00
2016-10-04 14:41:36 +00:00
2016-04-01 08:43:42 +00:00
2016-10-21 16:09:20 +00:00
2016-10-21 16:09:20 +00:00
2016-02-09 09:41:09 +00:00