Add atomics to chibicc

This change also fixes #434 and makes the chibicc assembler better.
This commit is contained in:
Justine Tunney 2022-06-20 03:08:00 -07:00
parent 5ddf43332e
commit a988896048
21 changed files with 650 additions and 445 deletions

View file

@ -68,53 +68,58 @@
#define KW___ASM__ 84
#define KW___BUILTIN_ADD_OVERFLOW 85
#define KW___BUILTIN_ASSUME_ALIGNED 86
#define KW___ATOMIC_EXCHANGE 87
#define KW___BUILTIN_COMPARE_AND_SWAP 88
#define KW___BUILTIN_CONSTANT_P 89
#define KW___BUILTIN_EXPECT 90
#define KW___BUILTIN_FFS 91
#define KW___BUILTIN_FFSL 92
#define KW___BUILTIN_FFSLL 93
#define KW___BUILTIN_FPCLASSIFY 94
#define KW___BUILTIN_MUL_OVERFLOW 95
#define KW___BUILTIN_NEG_OVERFLOW 96
#define KW___BUILTIN_OFFSETOF 97
#define KW___BUILTIN_POPCOUNT 98
#define KW___BUILTIN_POPCOUNTL 99
#define KW___BUILTIN_POPCOUNTLL 100
#define KW___BUILTIN_REG_CLASS 101
#define KW___BUILTIN_STRCHR 102
#define KW___BUILTIN_STRLEN 103
#define KW___BUILTIN_STRPBRK 104
#define KW___BUILTIN_STRSTR 105
#define KW___BUILTIN_SUB_OVERFLOW 106
#define KW___BUILTIN_TYPES_COMPATIBLE_P 107
#define KW_LP 108
#define KW_RP 109
#define KW_LB 110
#define KW_RB 111
#define KW_PLUS 112
#define KW_MINUS 113
#define KW_AMP 114
#define KW_STAR 115
#define KW_EXCLAIM 116
#define KW_TILDE 117
#define KW_INCREMENT 118
#define KW_DECREMENT 119
#define KW_LOGAND 120
#define KW_LOGOR 121
#define KW_ARROW 122
#define KW_DOT 123
#define KW___ATOMIC_LOAD 124
#define KW___SYNC_LOCK_TEST_AND_SET 125
#define KW___SYNC_LOCK_RELEASE 126
#define KW___BUILTIN_IA32_PMOVMSKB128 127
#define KW___BUILTIN_IA32_MOVNTDQ 128
#define KW___ATOMIC_FETCH_ADD 129
#define KW___ATOMIC_SUB_FETCH 130
#define KW___ATOMIC_TEST_AND_SET 131
#define KW___ATOMIC_CLEAR 132
#define KW___ATOMIC_STORE 133
#define KW___BUILTIN_CONSTANT_P 87
#define KW___BUILTIN_EXPECT 88
#define KW___BUILTIN_FFS 89
#define KW___BUILTIN_FFSL 90
#define KW___BUILTIN_FFSLL 91
#define KW___BUILTIN_FPCLASSIFY 92
#define KW___BUILTIN_MUL_OVERFLOW 93
#define KW___BUILTIN_NEG_OVERFLOW 94
#define KW___BUILTIN_OFFSETOF 95
#define KW___BUILTIN_POPCOUNT 96
#define KW___BUILTIN_POPCOUNTL 97
#define KW___BUILTIN_POPCOUNTLL 98
#define KW___BUILTIN_REG_CLASS 99
#define KW___BUILTIN_STRCHR 100
#define KW___BUILTIN_STRLEN 101
#define KW___BUILTIN_STRPBRK 102
#define KW___BUILTIN_STRSTR 103
#define KW___BUILTIN_SUB_OVERFLOW 104
#define KW___BUILTIN_TYPES_COMPATIBLE_P 105
#define KW_LP 106
#define KW_RP 107
#define KW_LB 108
#define KW_RB 109
#define KW_PLUS 110
#define KW_MINUS 111
#define KW_AMP 112
#define KW_STAR 113
#define KW_EXCLAIM 114
#define KW_TILDE 115
#define KW_INCREMENT 116
#define KW_DECREMENT 117
#define KW_LOGAND 118
#define KW_LOGOR 119
#define KW_ARROW 120
#define KW_DOT 121
#define KW___ATOMIC_LOAD 122
#define KW___SYNC_LOCK_TEST_AND_SET 123
#define KW___SYNC_LOCK_RELEASE 124
#define KW___BUILTIN_IA32_PMOVMSKB128 125
#define KW___BUILTIN_IA32_MOVNTDQ 126
#define KW___ATOMIC_FETCH_ADD 127
#define KW___ATOMIC_TEST_AND_SET 128
#define KW___ATOMIC_CLEAR 129
#define KW___ATOMIC_STORE 130
#define KW___ATOMIC_STORE_N 131
#define KW___ATOMIC_LOAD_N 132
#define KW___ATOMIC_FETCH_SUB 133
#define KW___ATOMIC_FETCH_AND 134
#define KW___ATOMIC_FETCH_OR 135
#define KW___ATOMIC_FETCH_XOR 136
#define KW___ATOMIC_COMPARE_EXCHANGE_N 137
#define KW___ATOMIC_EXCHANGE_N 138
#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_