Commit c4ef805
authored
[Clang] Re-write codegen for atomic_test_and_set and atomic_clear (llvm#121943)
Re-write the sema and codegen for the atomic_test_and_set and
atomic_clear builtin functions to go via AtomicExpr, like the other
atomic builtins do. This simplifies the code, because AtomicExpr already
handles things like generating code for to dynamically select the memory
ordering, which was duplicated for these builtins. This also fixes a few
crash bugs, one when passing an integer to the pointer argument, and one
when using an array.
This also adds diagnostics for the memory orderings which are not valid
for atomic_clear according to
https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html, which
were missing before.
Fixes llvm#111293.
This is a re-land of llvm#120449, modified to allow any non-const pointer
type for the first argument.1 parent 58be6fd commit c4ef805
File tree
7 files changed
+447
-165
lines changed- clang
- include/clang/Basic
- lib
- AST
- CodeGen
- Sema
- test
- CodeGen
- Sema
7 files changed
+447
-165
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1977 | 1977 | | |
1978 | 1978 | | |
1979 | 1979 | | |
1980 | | - | |
| 1980 | + | |
1981 | 1981 | | |
1982 | | - | |
1983 | | - | |
| 1982 | + | |
| 1983 | + | |
1984 | 1984 | | |
1985 | 1985 | | |
1986 | | - | |
| 1986 | + | |
1987 | 1987 | | |
1988 | | - | |
1989 | | - | |
| 1988 | + | |
| 1989 | + | |
1990 | 1990 | | |
1991 | 1991 | | |
1992 | 1992 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5077 | 5077 | | |
5078 | 5078 | | |
5079 | 5079 | | |
| 5080 | + | |
| 5081 | + | |
5080 | 5082 | | |
5081 | 5083 | | |
5082 | 5084 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
723 | 723 | | |
724 | 724 | | |
725 | 725 | | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
726 | 744 | | |
727 | 745 | | |
728 | 746 | | |
| |||
878 | 896 | | |
879 | 897 | | |
880 | 898 | | |
| 899 | + | |
| 900 | + | |
881 | 901 | | |
882 | 902 | | |
883 | 903 | | |
| |||
1200 | 1220 | | |
1201 | 1221 | | |
1202 | 1222 | | |
| 1223 | + | |
| 1224 | + | |
1203 | 1225 | | |
1204 | 1226 | | |
1205 | 1227 | | |
| |||
1239 | 1261 | | |
1240 | 1262 | | |
1241 | 1263 | | |
1242 | | - | |
| 1264 | + | |
| 1265 | + | |
1243 | 1266 | | |
1244 | 1267 | | |
1245 | 1268 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5128 | 5128 | | |
5129 | 5129 | | |
5130 | 5130 | | |
5131 | | - | |
5132 | | - | |
5133 | | - | |
5134 | | - | |
5135 | | - | |
5136 | | - | |
5137 | | - | |
5138 | | - | |
5139 | | - | |
5140 | | - | |
5141 | | - | |
5142 | | - | |
5143 | | - | |
5144 | | - | |
5145 | | - | |
5146 | | - | |
5147 | | - | |
5148 | | - | |
5149 | | - | |
5150 | | - | |
5151 | | - | |
5152 | | - | |
5153 | | - | |
5154 | | - | |
5155 | | - | |
5156 | | - | |
5157 | | - | |
5158 | | - | |
5159 | | - | |
5160 | | - | |
5161 | | - | |
5162 | | - | |
5163 | | - | |
5164 | | - | |
5165 | | - | |
5166 | | - | |
5167 | | - | |
5168 | | - | |
5169 | | - | |
5170 | | - | |
5171 | | - | |
5172 | | - | |
5173 | | - | |
5174 | | - | |
5175 | | - | |
5176 | | - | |
5177 | | - | |
5178 | | - | |
5179 | | - | |
5180 | | - | |
5181 | | - | |
5182 | | - | |
5183 | | - | |
5184 | | - | |
5185 | | - | |
5186 | | - | |
5187 | | - | |
5188 | | - | |
5189 | | - | |
5190 | | - | |
5191 | | - | |
5192 | | - | |
5193 | | - | |
5194 | | - | |
5195 | | - | |
5196 | | - | |
5197 | | - | |
5198 | | - | |
5199 | | - | |
5200 | | - | |
5201 | | - | |
5202 | | - | |
5203 | | - | |
5204 | | - | |
5205 | | - | |
5206 | | - | |
5207 | | - | |
5208 | | - | |
5209 | | - | |
5210 | | - | |
5211 | | - | |
5212 | | - | |
5213 | | - | |
5214 | | - | |
5215 | | - | |
5216 | | - | |
5217 | | - | |
5218 | | - | |
5219 | | - | |
5220 | | - | |
5221 | | - | |
5222 | | - | |
5223 | | - | |
5224 | | - | |
5225 | | - | |
5226 | | - | |
5227 | | - | |
5228 | | - | |
5229 | | - | |
5230 | | - | |
5231 | | - | |
5232 | | - | |
5233 | | - | |
5234 | | - | |
5235 | | - | |
5236 | | - | |
5237 | | - | |
5238 | | - | |
5239 | | - | |
5240 | | - | |
5241 | | - | |
5242 | | - | |
5243 | | - | |
5244 | | - | |
5245 | | - | |
5246 | | - | |
5247 | | - | |
5248 | | - | |
5249 | | - | |
5250 | | - | |
5251 | | - | |
5252 | | - | |
5253 | | - | |
5254 | | - | |
5255 | | - | |
5256 | | - | |
5257 | | - | |
5258 | | - | |
5259 | | - | |
5260 | | - | |
5261 | | - | |
5262 | | - | |
5263 | | - | |
5264 | | - | |
5265 | | - | |
5266 | | - | |
5267 | | - | |
5268 | | - | |
5269 | | - | |
5270 | | - | |
5271 | | - | |
5272 | 5131 | | |
5273 | 5132 | | |
5274 | 5133 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3634 | 3634 | | |
3635 | 3635 | | |
3636 | 3636 | | |
| 3637 | + | |
3637 | 3638 | | |
3638 | 3639 | | |
3639 | 3640 | | |
| |||
3686 | 3687 | | |
3687 | 3688 | | |
3688 | 3689 | | |
3689 | | - | |
| 3690 | + | |
| 3691 | + | |
| 3692 | + | |
| 3693 | + | |
| 3694 | + | |
| 3695 | + | |
| 3696 | + | |
3690 | 3697 | | |
3691 | 3698 | | |
3692 | | - | |
3693 | | - | |
3694 | | - | |
| 3699 | + | |
| 3700 | + | |
| 3701 | + | |
3695 | 3702 | | |
3696 | 3703 | | |
3697 | 3704 | | |
| |||
3852 | 3859 | | |
3853 | 3860 | | |
3854 | 3861 | | |
| 3862 | + | |
| 3863 | + | |
| 3864 | + | |
| 3865 | + | |
| 3866 | + | |
| 3867 | + | |
| 3868 | + | |
| 3869 | + | |
3855 | 3870 | | |
3856 | 3871 | | |
3857 | 3872 | | |
| |||
3911 | 3926 | | |
3912 | 3927 | | |
3913 | 3928 | | |
3914 | | - | |
3915 | | - | |
3916 | | - | |
3917 | | - | |
3918 | | - | |
3919 | | - | |
3920 | | - | |
3921 | | - | |
| 3929 | + | |
| 3930 | + | |
| 3931 | + | |
| 3932 | + | |
| 3933 | + | |
| 3934 | + | |
| 3935 | + | |
| 3936 | + | |
| 3937 | + | |
| 3938 | + | |
| 3939 | + | |
| 3940 | + | |
| 3941 | + | |
| 3942 | + | |
| 3943 | + | |
| 3944 | + | |
| 3945 | + | |
| 3946 | + | |
| 3947 | + | |
| 3948 | + | |
| 3949 | + | |
| 3950 | + | |
3922 | 3951 | | |
3923 | 3952 | | |
3924 | 3953 | | |
| |||
3997 | 4026 | | |
3998 | 4027 | | |
3999 | 4028 | | |
4000 | | - | |
4001 | | - | |
| 4029 | + | |
| 4030 | + | |
4002 | 4031 | | |
4003 | | - | |
| 4032 | + | |
4004 | 4033 | | |
4005 | 4034 | | |
4006 | 4035 | | |
| |||
4045 | 4074 | | |
4046 | 4075 | | |
4047 | 4076 | | |
| 4077 | + | |
| 4078 | + | |
| 4079 | + | |
| 4080 | + | |
4048 | 4081 | | |
4049 | 4082 | | |
4050 | 4083 | | |
| |||
4130 | 4163 | | |
4131 | 4164 | | |
4132 | 4165 | | |
| 4166 | + | |
| 4167 | + | |
4133 | 4168 | | |
4134 | 4169 | | |
4135 | 4170 | | |
| |||
0 commit comments