Louis Dionne
615e6dd1c5
[ 🍒 ][libc++] Fix missing and incorrect push/pop macros ( #79204 ) ( #79497 )
...
We recently noticed that the unwrap_iter.h file was pushing macros, but
it was pushing them again instead of popping them at the end of the
file. This led to libc++ basically swallowing any custom definition of
these macros in user code:
#define min HELLO
#include <algorithm>
// min is not HELLO anymore, it's not defined
While investigating this issue, I noticed that our push/pop pragmas were
actually entirely wrong too. Indeed, instead of pushing macros like
`move`, we'd push `move(int, int)` in the pragma, which is not a valid
macro name. As a result, we would not actually push macros like `move`
-- instead we'd simply undefine them. This led to the following code not
working:
#define move HELLO
#include <algorithm>
// move is not HELLO anymore
Fixing the pragma push/pop incantations led to a cascade of issues
because we use identifiers like `move` in a large number of places, and
all of these headers would now need to do the push/pop dance.
This patch fixes all these issues. First, it adds a check that we don't
swallow important names like min, max, move or refresh as explained
above. This is done by augmenting the existing
system_reserved_names.gen.py test to also check that the macros are what
we expect after including each header.
Second, it fixes the push/pop pragmas to work properly and adds missing
pragmas to all the files I could detect a failure in via the newly added
test.
rdar://121365472
(cherry picked from commit 7b4622514d232ce5f7110dd8b20d90e81127c467)
2024-02-01 17:51:34 -08:00
..
2024-02-01 17:51:34 -08:00
2023-07-06 17:21:08 +00:00
2023-04-29 20:41:42 -07:00
2023-12-04 10:25:14 -05:00
2023-12-18 14:01:33 -05:00
2024-01-20 23:38:02 -08:00
2024-01-22 23:31:58 -08:00
2023-11-23 13:55:55 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2024-02-01 17:51:34 -08:00
2023-12-18 14:01:33 -05:00
2023-12-04 10:25:14 -05:00
2023-12-04 10:25:14 -05:00
2023-10-06 22:58:41 +02:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-04 10:25:14 -05:00
2023-12-04 10:25:14 -05:00
2023-12-15 17:10:16 +01:00
2023-12-23 11:21:27 +01:00
2024-02-01 17:51:34 -08:00
2023-12-18 14:01:33 -05:00
2023-05-31 18:15:20 -07:00
2023-11-14 23:55:24 +01:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-12-18 14:01:33 -05:00
2024-02-01 17:51:34 -08:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-05-18 15:37:28 -07:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2024-02-01 17:51:34 -08:00
2023-12-04 10:25:14 -05:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2024-02-01 17:51:34 -08:00
2024-01-05 16:29:23 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-11-28 16:02:18 -05:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-10-04 18:12:39 -04:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-12-18 14:01:33 -05:00
2023-09-05 16:19:49 -07:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-12-20 17:24:48 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-12-20 17:24:48 -08:00
2024-02-01 17:51:34 -08:00
2023-12-20 17:24:48 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-06-19 11:19:51 -04:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-06-19 11:19:51 -04:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-11-06 21:19:49 -10:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2024-02-01 17:51:34 -08:00
2023-12-18 14:01:33 -05:00
2024-02-01 17:51:34 -08:00
2023-12-20 17:24:48 -08:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-12-18 14:01:33 -05:00
2024-01-05 16:29:23 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-01-22 23:31:58 -08:00
2023-12-18 14:01:33 -05:00
2023-12-18 14:01:33 -05:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2024-02-01 17:51:34 -08:00
2023-07-06 17:21:08 +00:00