authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-07-17 17:45:24-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-07-17 17:47:39-04:00
loge816d592e8773c03ca92645d978669ec6de5ca0c
tree54c6ba073b75a5740266d4e91fac2e826f337df2
parent8f92a49dfde5e8690525da028844cb7c1188d397
signaturelock-open Commit is signed but in an unrecognized format.

update zig codebase to llvm 9


8 files changed, 422 insertions(+), 343 deletions(-)

cmake/Findllvm.cmake+1
......@@ -59,6 +59,7 @@ NEED_TARGET("Mips")
5959NEED_TARGET("MSP430")
6060NEED_TARGET("NVPTX")
6161NEED_TARGET("PowerPC")
62NEED_TARGET("RISCV")
6263NEED_TARGET("Sparc")
6364NEED_TARGET("SystemZ")
6465NEED_TARGET("WebAssembly")
src-self-hosted/clang.zig+211-215
......@@ -148,6 +148,7 @@ pub const ZigClangTypeClass = extern enum {
148148 UnresolvedUsing,
149149 Paren,
150150 Typedef,
151 MacroQualified,
151152 Adjusted,
152153 Decayed,
153154 TypeOfExpr,
......@@ -176,210 +177,213 @@ pub const ZigClangTypeClass = extern enum {
176177 Atomic,
177178};
178179
179pub const ZigClangStmtClass = extern enum {
180 NoStmtClass = 0,
181 GCCAsmStmtClass = 1,
182 MSAsmStmtClass = 2,
183 AttributedStmtClass = 3,
184 BreakStmtClass = 4,
185 CXXCatchStmtClass = 5,
186 CXXForRangeStmtClass = 6,
187 CXXTryStmtClass = 7,
188 CapturedStmtClass = 8,
189 CompoundStmtClass = 9,
190 ContinueStmtClass = 10,
191 CoreturnStmtClass = 11,
192 CoroutineBodyStmtClass = 12,
193 DeclStmtClass = 13,
194 DoStmtClass = 14,
195 BinaryConditionalOperatorClass = 15,
196 ConditionalOperatorClass = 16,
197 AddrLabelExprClass = 17,
198 ArrayInitIndexExprClass = 18,
199 ArrayInitLoopExprClass = 19,
200 ArraySubscriptExprClass = 20,
201 ArrayTypeTraitExprClass = 21,
202 AsTypeExprClass = 22,
203 AtomicExprClass = 23,
204 BinaryOperatorClass = 24,
205 CompoundAssignOperatorClass = 25,
206 BlockExprClass = 26,
207 CXXBindTemporaryExprClass = 27,
208 CXXBoolLiteralExprClass = 28,
209 CXXConstructExprClass = 29,
210 CXXTemporaryObjectExprClass = 30,
211 CXXDefaultArgExprClass = 31,
212 CXXDefaultInitExprClass = 32,
213 CXXDeleteExprClass = 33,
214 CXXDependentScopeMemberExprClass = 34,
215 CXXFoldExprClass = 35,
216 CXXInheritedCtorInitExprClass = 36,
217 CXXNewExprClass = 37,
218 CXXNoexceptExprClass = 38,
219 CXXNullPtrLiteralExprClass = 39,
220 CXXPseudoDestructorExprClass = 40,
221 CXXScalarValueInitExprClass = 41,
222 CXXStdInitializerListExprClass = 42,
223 CXXThisExprClass = 43,
224 CXXThrowExprClass = 44,
225 CXXTypeidExprClass = 45,
226 CXXUnresolvedConstructExprClass = 46,
227 CXXUuidofExprClass = 47,
228 CallExprClass = 48,
229 CUDAKernelCallExprClass = 49,
230 CXXMemberCallExprClass = 50,
231 CXXOperatorCallExprClass = 51,
232 UserDefinedLiteralClass = 52,
233 CStyleCastExprClass = 53,
234 CXXFunctionalCastExprClass = 54,
235 CXXConstCastExprClass = 55,
236 CXXDynamicCastExprClass = 56,
237 CXXReinterpretCastExprClass = 57,
238 CXXStaticCastExprClass = 58,
239 ObjCBridgedCastExprClass = 59,
240 ImplicitCastExprClass = 60,
241 CharacterLiteralClass = 61,
242 ChooseExprClass = 62,
243 CompoundLiteralExprClass = 63,
244 ConvertVectorExprClass = 64,
245 CoawaitExprClass = 65,
246 CoyieldExprClass = 66,
247 DeclRefExprClass = 67,
248 DependentCoawaitExprClass = 68,
249 DependentScopeDeclRefExprClass = 69,
250 DesignatedInitExprClass = 70,
251 DesignatedInitUpdateExprClass = 71,
252 ExpressionTraitExprClass = 72,
253 ExtVectorElementExprClass = 73,
254 FixedPointLiteralClass = 74,
255 FloatingLiteralClass = 75,
256 ConstantExprClass = 76,
257 ExprWithCleanupsClass = 77,
258 FunctionParmPackExprClass = 78,
259 GNUNullExprClass = 79,
260 GenericSelectionExprClass = 80,
261 ImaginaryLiteralClass = 81,
262 ImplicitValueInitExprClass = 82,
263 InitListExprClass = 83,
264 IntegerLiteralClass = 84,
265 LambdaExprClass = 85,
266 MSPropertyRefExprClass = 86,
267 MSPropertySubscriptExprClass = 87,
268 MaterializeTemporaryExprClass = 88,
269 MemberExprClass = 89,
270 NoInitExprClass = 90,
271 OMPArraySectionExprClass = 91,
272 ObjCArrayLiteralClass = 92,
273 ObjCAvailabilityCheckExprClass = 93,
274 ObjCBoolLiteralExprClass = 94,
275 ObjCBoxedExprClass = 95,
276 ObjCDictionaryLiteralClass = 96,
277 ObjCEncodeExprClass = 97,
278 ObjCIndirectCopyRestoreExprClass = 98,
279 ObjCIsaExprClass = 99,
280 ObjCIvarRefExprClass = 100,
281 ObjCMessageExprClass = 101,
282 ObjCPropertyRefExprClass = 102,
283 ObjCProtocolExprClass = 103,
284 ObjCSelectorExprClass = 104,
285 ObjCStringLiteralClass = 105,
286 ObjCSubscriptRefExprClass = 106,
287 OffsetOfExprClass = 107,
288 OpaqueValueExprClass = 108,
289 UnresolvedLookupExprClass = 109,
290 UnresolvedMemberExprClass = 110,
291 PackExpansionExprClass = 111,
292 ParenExprClass = 112,
293 ParenListExprClass = 113,
294 PredefinedExprClass = 114,
295 PseudoObjectExprClass = 115,
296 ShuffleVectorExprClass = 116,
297 SizeOfPackExprClass = 117,
298 StmtExprClass = 118,
299 StringLiteralClass = 119,
300 SubstNonTypeTemplateParmExprClass = 120,
301 SubstNonTypeTemplateParmPackExprClass = 121,
302 TypeTraitExprClass = 122,
303 TypoExprClass = 123,
304 UnaryExprOrTypeTraitExprClass = 124,
305 UnaryOperatorClass = 125,
306 VAArgExprClass = 126,
307 ForStmtClass = 127,
308 GotoStmtClass = 128,
309 IfStmtClass = 129,
310 IndirectGotoStmtClass = 130,
311 LabelStmtClass = 131,
312 MSDependentExistsStmtClass = 132,
313 NullStmtClass = 133,
314 OMPAtomicDirectiveClass = 134,
315 OMPBarrierDirectiveClass = 135,
316 OMPCancelDirectiveClass = 136,
317 OMPCancellationPointDirectiveClass = 137,
318 OMPCriticalDirectiveClass = 138,
319 OMPFlushDirectiveClass = 139,
320 OMPDistributeDirectiveClass = 140,
321 OMPDistributeParallelForDirectiveClass = 141,
322 OMPDistributeParallelForSimdDirectiveClass = 142,
323 OMPDistributeSimdDirectiveClass = 143,
324 OMPForDirectiveClass = 144,
325 OMPForSimdDirectiveClass = 145,
326 OMPParallelForDirectiveClass = 146,
327 OMPParallelForSimdDirectiveClass = 147,
328 OMPSimdDirectiveClass = 148,
329 OMPTargetParallelForSimdDirectiveClass = 149,
330 OMPTargetSimdDirectiveClass = 150,
331 OMPTargetTeamsDistributeDirectiveClass = 151,
332 OMPTargetTeamsDistributeParallelForDirectiveClass = 152,
333 OMPTargetTeamsDistributeParallelForSimdDirectiveClass = 153,
334 OMPTargetTeamsDistributeSimdDirectiveClass = 154,
335 OMPTaskLoopDirectiveClass = 155,
336 OMPTaskLoopSimdDirectiveClass = 156,
337 OMPTeamsDistributeDirectiveClass = 157,
338 OMPTeamsDistributeParallelForDirectiveClass = 158,
339 OMPTeamsDistributeParallelForSimdDirectiveClass = 159,
340 OMPTeamsDistributeSimdDirectiveClass = 160,
341 OMPMasterDirectiveClass = 161,
342 OMPOrderedDirectiveClass = 162,
343 OMPParallelDirectiveClass = 163,
344 OMPParallelSectionsDirectiveClass = 164,
345 OMPSectionDirectiveClass = 165,
346 OMPSectionsDirectiveClass = 166,
347 OMPSingleDirectiveClass = 167,
348 OMPTargetDataDirectiveClass = 168,
349 OMPTargetDirectiveClass = 169,
350 OMPTargetEnterDataDirectiveClass = 170,
351 OMPTargetExitDataDirectiveClass = 171,
352 OMPTargetParallelDirectiveClass = 172,
353 OMPTargetParallelForDirectiveClass = 173,
354 OMPTargetTeamsDirectiveClass = 174,
355 OMPTargetUpdateDirectiveClass = 175,
356 OMPTaskDirectiveClass = 176,
357 OMPTaskgroupDirectiveClass = 177,
358 OMPTaskwaitDirectiveClass = 178,
359 OMPTaskyieldDirectiveClass = 179,
360 OMPTeamsDirectiveClass = 180,
361 ObjCAtCatchStmtClass = 181,
362 ObjCAtFinallyStmtClass = 182,
363 ObjCAtSynchronizedStmtClass = 183,
364 ObjCAtThrowStmtClass = 184,
365 ObjCAtTryStmtClass = 185,
366 ObjCAutoreleasePoolStmtClass = 186,
367 ObjCForCollectionStmtClass = 187,
368 ReturnStmtClass = 188,
369 SEHExceptStmtClass = 189,
370 SEHFinallyStmtClass = 190,
371 SEHLeaveStmtClass = 191,
372 SEHTryStmtClass = 192,
373 CaseStmtClass = 193,
374 DefaultStmtClass = 194,
375 SwitchStmtClass = 195,
376 WhileStmtClass = 196,
180const ZigClangStmtClass = extern enum {
181 NoStmtClass,
182 GCCAsmStmtClass,
183 MSAsmStmtClass,
184 BreakStmtClass,
185 CXXCatchStmtClass,
186 CXXForRangeStmtClass,
187 CXXTryStmtClass,
188 CapturedStmtClass,
189 CompoundStmtClass,
190 ContinueStmtClass,
191 CoreturnStmtClass,
192 CoroutineBodyStmtClass,
193 DeclStmtClass,
194 DoStmtClass,
195 ForStmtClass,
196 GotoStmtClass,
197 IfStmtClass,
198 IndirectGotoStmtClass,
199 MSDependentExistsStmtClass,
200 NullStmtClass,
201 OMPAtomicDirectiveClass,
202 OMPBarrierDirectiveClass,
203 OMPCancelDirectiveClass,
204 OMPCancellationPointDirectiveClass,
205 OMPCriticalDirectiveClass,
206 OMPFlushDirectiveClass,
207 OMPDistributeDirectiveClass,
208 OMPDistributeParallelForDirectiveClass,
209 OMPDistributeParallelForSimdDirectiveClass,
210 OMPDistributeSimdDirectiveClass,
211 OMPForDirectiveClass,
212 OMPForSimdDirectiveClass,
213 OMPParallelForDirectiveClass,
214 OMPParallelForSimdDirectiveClass,
215 OMPSimdDirectiveClass,
216 OMPTargetParallelForSimdDirectiveClass,
217 OMPTargetSimdDirectiveClass,
218 OMPTargetTeamsDistributeDirectiveClass,
219 OMPTargetTeamsDistributeParallelForDirectiveClass,
220 OMPTargetTeamsDistributeParallelForSimdDirectiveClass,
221 OMPTargetTeamsDistributeSimdDirectiveClass,
222 OMPTaskLoopDirectiveClass,
223 OMPTaskLoopSimdDirectiveClass,
224 OMPTeamsDistributeDirectiveClass,
225 OMPTeamsDistributeParallelForDirectiveClass,
226 OMPTeamsDistributeParallelForSimdDirectiveClass,
227 OMPTeamsDistributeSimdDirectiveClass,
228 OMPMasterDirectiveClass,
229 OMPOrderedDirectiveClass,
230 OMPParallelDirectiveClass,
231 OMPParallelSectionsDirectiveClass,
232 OMPSectionDirectiveClass,
233 OMPSectionsDirectiveClass,
234 OMPSingleDirectiveClass,
235 OMPTargetDataDirectiveClass,
236 OMPTargetDirectiveClass,
237 OMPTargetEnterDataDirectiveClass,
238 OMPTargetExitDataDirectiveClass,
239 OMPTargetParallelDirectiveClass,
240 OMPTargetParallelForDirectiveClass,
241 OMPTargetTeamsDirectiveClass,
242 OMPTargetUpdateDirectiveClass,
243 OMPTaskDirectiveClass,
244 OMPTaskgroupDirectiveClass,
245 OMPTaskwaitDirectiveClass,
246 OMPTaskyieldDirectiveClass,
247 OMPTeamsDirectiveClass,
248 ObjCAtCatchStmtClass,
249 ObjCAtFinallyStmtClass,
250 ObjCAtSynchronizedStmtClass,
251 ObjCAtThrowStmtClass,
252 ObjCAtTryStmtClass,
253 ObjCAutoreleasePoolStmtClass,
254 ObjCForCollectionStmtClass,
255 ReturnStmtClass,
256 SEHExceptStmtClass,
257 SEHFinallyStmtClass,
258 SEHLeaveStmtClass,
259 SEHTryStmtClass,
260 CaseStmtClass,
261 DefaultStmtClass,
262 SwitchStmtClass,
263 AttributedStmtClass,
264 BinaryConditionalOperatorClass,
265 ConditionalOperatorClass,
266 AddrLabelExprClass,
267 ArrayInitIndexExprClass,
268 ArrayInitLoopExprClass,
269 ArraySubscriptExprClass,
270 ArrayTypeTraitExprClass,
271 AsTypeExprClass,
272 AtomicExprClass,
273 BinaryOperatorClass,
274 CompoundAssignOperatorClass,
275 BlockExprClass,
276 CXXBindTemporaryExprClass,
277 CXXBoolLiteralExprClass,
278 CXXConstructExprClass,
279 CXXTemporaryObjectExprClass,
280 CXXDefaultArgExprClass,
281 CXXDefaultInitExprClass,
282 CXXDeleteExprClass,
283 CXXDependentScopeMemberExprClass,
284 CXXFoldExprClass,
285 CXXInheritedCtorInitExprClass,
286 CXXNewExprClass,
287 CXXNoexceptExprClass,
288 CXXNullPtrLiteralExprClass,
289 CXXPseudoDestructorExprClass,
290 CXXScalarValueInitExprClass,
291 CXXStdInitializerListExprClass,
292 CXXThisExprClass,
293 CXXThrowExprClass,
294 CXXTypeidExprClass,
295 CXXUnresolvedConstructExprClass,
296 CXXUuidofExprClass,
297 CallExprClass,
298 CUDAKernelCallExprClass,
299 CXXMemberCallExprClass,
300 CXXOperatorCallExprClass,
301 UserDefinedLiteralClass,
302 BuiltinBitCastExprClass,
303 CStyleCastExprClass,
304 CXXFunctionalCastExprClass,
305 CXXConstCastExprClass,
306 CXXDynamicCastExprClass,
307 CXXReinterpretCastExprClass,
308 CXXStaticCastExprClass,
309 ObjCBridgedCastExprClass,
310 ImplicitCastExprClass,
311 CharacterLiteralClass,
312 ChooseExprClass,
313 CompoundLiteralExprClass,
314 ConvertVectorExprClass,
315 CoawaitExprClass,
316 CoyieldExprClass,
317 DeclRefExprClass,
318 DependentCoawaitExprClass,
319 DependentScopeDeclRefExprClass,
320 DesignatedInitExprClass,
321 DesignatedInitUpdateExprClass,
322 ExpressionTraitExprClass,
323 ExtVectorElementExprClass,
324 FixedPointLiteralClass,
325 FloatingLiteralClass,
326 ConstantExprClass,
327 ExprWithCleanupsClass,
328 FunctionParmPackExprClass,
329 GNUNullExprClass,
330 GenericSelectionExprClass,
331 ImaginaryLiteralClass,
332 ImplicitValueInitExprClass,
333 InitListExprClass,
334 IntegerLiteralClass,
335 LambdaExprClass,
336 MSPropertyRefExprClass,
337 MSPropertySubscriptExprClass,
338 MaterializeTemporaryExprClass,
339 MemberExprClass,
340 NoInitExprClass,
341 OMPArraySectionExprClass,
342 ObjCArrayLiteralClass,
343 ObjCAvailabilityCheckExprClass,
344 ObjCBoolLiteralExprClass,
345 ObjCBoxedExprClass,
346 ObjCDictionaryLiteralClass,
347 ObjCEncodeExprClass,
348 ObjCIndirectCopyRestoreExprClass,
349 ObjCIsaExprClass,
350 ObjCIvarRefExprClass,
351 ObjCMessageExprClass,
352 ObjCPropertyRefExprClass,
353 ObjCProtocolExprClass,
354 ObjCSelectorExprClass,
355 ObjCStringLiteralClass,
356 ObjCSubscriptRefExprClass,
357 OffsetOfExprClass,
358 OpaqueValueExprClass,
359 UnresolvedLookupExprClass,
360 UnresolvedMemberExprClass,
361 PackExpansionExprClass,
362 ParenExprClass,
363 ParenListExprClass,
364 PredefinedExprClass,
365 PseudoObjectExprClass,
366 ShuffleVectorExprClass,
367 SizeOfPackExprClass,
368 SourceLocExprClass,
369 StmtExprClass,
370 StringLiteralClass,
371 SubstNonTypeTemplateParmExprClass,
372 SubstNonTypeTemplateParmPackExprClass,
373 TypeTraitExprClass,
374 TypoExprClass,
375 UnaryExprOrTypeTraitExprClass,
376 UnaryOperatorClass,
377 VAArgExprClass,
378 LabelStmtClass,
379 WhileStmtClass,
377380};
378381
379382pub const ZigClangCK = extern enum {
380383 Dependent,
381384 BitCast,
382385 LValueBitCast,
386 LValueToRValueBitCast,
383387 LValueToRValue,
384388 NoOp,
385389 BaseToDerived,
......@@ -406,6 +410,8 @@ pub const ZigClangCK = extern enum {
406410 IntegralToBoolean,
407411 IntegralToFloating,
408412 FixedPointCast,
413 FixedPointToIntegral,
414 IntegralToFixedPoint,
409415 FixedPointToBoolean,
410416 FloatingToIntegral,
411417 FloatingToBoolean,
......@@ -439,9 +445,11 @@ pub const ZigClangCK = extern enum {
439445};
440446
441447pub const ZigClangAPValueKind = extern enum {
442 Uninitialized,
448 None,
449 Indeterminate,
443450 Int,
444451 Float,
452 FixedPoint,
445453 ComplexInt,
446454 ComplexFloat,
447455 LValue,
......@@ -478,6 +486,7 @@ pub const ZigClangDeclKind = extern enum {
478486 ObjCMethod,
479487 ObjCProperty,
480488 BuiltinTemplate,
489 Concept,
481490 ClassTemplate,
482491 FunctionTemplate,
483492 TypeAliasTemplate,
......@@ -519,8 +528,10 @@ pub const ZigClangDeclKind = extern enum {
519528 VarTemplatePartialSpecialization,
520529 EnumConstant,
521530 IndirectField,
531 OMPDeclareMapper,
522532 OMPDeclareReduction,
523533 UnresolvedUsingValue,
534 OMPAllocate,
524535 OMPRequires,
525536 OMPThreadPrivate,
526537 ObjCPropertyImpl,
......@@ -939,25 +950,10 @@ pub const struct_ZigClangExprEvalResult = extern struct {
939950};
940951
941952pub const struct_ZigClangAPValue = extern struct {
942 Kind: ZigClangAPValue_ValueKind,
953 Kind: ZigClangAPValueKind,
943954 Data: if (builtin.os == .windows and builtin.abi == .msvc) [52]u8 else [68]u8,
944955};
945956
946pub const ZigClangAPValue_ValueKind = extern enum {
947 ZigClangAPValue_ValueKind_Uninitialized,
948 ZigClangAPValue_ValueKind_Int,
949 ZigClangAPValue_ValueKind_Float,
950 ZigClangAPValue_ValueKind_ComplexInt,
951 ZigClangAPValue_ValueKind_ComplexFloat,
952 ZigClangAPValue_ValueKind_LValue,
953 ZigClangAPValue_ValueKind_Vector,
954 ZigClangAPValue_ValueKind_Array,
955 ZigClangAPValue_ValueKind_Struct,
956 ZigClangAPValue_ValueKind_Union,
957 ZigClangAPValue_ValueKind_MemberPointer,
958 ZigClangAPValue_ValueKind_AddrLabelDiff,
959};
960
961957pub extern fn ZigClangIntegerLiteral_EvaluateAsInt(*const ZigClangIntegerLiteral, *ZigClangExprEvalResult, *const ZigClangASTContext) bool;
962958pub extern fn ZigClangIntegerLiteral_getBeginLoc(*const ZigClangIntegerLiteral) ZigClangSourceLocation;
963959
src/link.cpp+1
......@@ -2520,6 +2520,7 @@ static void construct_linker_job_macho(LinkJob *lj) {
25202520static void construct_linker_job(LinkJob *lj) {
25212521 switch (target_object_format(lj->codegen->zig_target)) {
25222522 case ZigLLVM_UnknownObjectFormat:
2523 case ZigLLVM_XCOFF:
25232524 zig_unreachable();
25242525
25252526 case ZigLLVM_COFF:
src/target.cpp+55-11
......@@ -235,6 +235,7 @@ const char *target_oformat_name(ZigLLVM_ObjectFormatType oformat) {
235235 case ZigLLVM_ELF: return "elf";
236236 case ZigLLVM_MachO: return "macho";
237237 case ZigLLVM_Wasm: return "wasm";
238 case ZigLLVM_XCOFF: return "xcoff";
238239 }
239240 zig_unreachable();
240241}
......@@ -337,6 +338,8 @@ ZigLLVM_OSType get_llvm_os_type(Os os_type) {
337338 return ZigLLVM_Hurd;
338339 case OsWASI:
339340 return ZigLLVM_WASI;
341 case OsEmscripten:
342 return ZigLLVM_Emscripten;
340343 }
341344 zig_unreachable();
342345}
......@@ -412,6 +415,8 @@ static Os get_zig_os_type(ZigLLVM_OSType os_type) {
412415 return OsHurd;
413416 case ZigLLVM_WASI:
414417 return OsWASI;
418 case ZigLLVM_Emscripten:
419 return OsEmscripten;
415420 }
416421 zig_unreachable();
417422}
......@@ -457,6 +462,7 @@ const char *target_os_name(Os os_type) {
457462 case OsHermitCore:
458463 case OsHurd:
459464 case OsWASI:
465 case OsEmscripten:
460466 return ZigLLVMGetOSTypeName(get_llvm_os_type(os_type));
461467 }
462468 zig_unreachable();
......@@ -569,6 +575,7 @@ SubArchList target_subarch_list(ZigLLVM_ArchType arch) {
569575
570576 case ZigLLVM_aarch64:
571577 case ZigLLVM_aarch64_be:
578 case ZigLLVM_aarch64_32:
572579 return SubArchListArm64;
573580
574581 case ZigLLVM_kalimba:
......@@ -843,6 +850,7 @@ uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch) {
843850 case ZigLLVM_shave:
844851 case ZigLLVM_wasm32:
845852 case ZigLLVM_renderscript32:
853 case ZigLLVM_aarch64_32:
846854 return 32;
847855
848856 case ZigLLVM_aarch64:
......@@ -916,6 +924,7 @@ uint32_t target_c_type_size_in_bits(const ZigTarget *target, CIntType id) {
916924 case OsNetBSD:
917925 case OsOpenBSD:
918926 case OsWASI:
927 case OsEmscripten:
919928 switch (id) {
920929 case CIntTypeShort:
921930 case CIntTypeUShort:
......@@ -1091,7 +1100,40 @@ static bool is_64_bit(ZigLLVM_ArchType arch) {
10911100 return target_arch_pointer_bit_width(arch) == 64;
10921101}
10931102
1103bool target_is_android(const ZigTarget *target) {
1104 return target->abi == ZigLLVM_Android;
1105}
1106
10941107const char *target_dynamic_linker(const ZigTarget *target) {
1108 if (target_is_android(target)) {
1109 return is_64_bit(target->arch) ? "/system/bin/linker64" : "/system/bin/linker";
1110 }
1111
1112 if (target_is_musl(target)) {
1113 Buf buf = BUF_INIT;
1114 buf_init_from_str(&buf, "/lib/ld-musl-");
1115 bool is_arm = false;
1116 switch (target->arch) {
1117 case ZigLLVM_arm:
1118 case ZigLLVM_thumb:
1119 buf_append_str(&buf, "arm");
1120 is_arm = true;
1121 break;
1122 case ZigLLVM_armeb:
1123 case ZigLLVM_thumbeb:
1124 buf_append_str(&buf, "armeb");
1125 is_arm = true;
1126 break;
1127 default:
1128 buf_append_str(&buf, target_arch_name(target->arch));
1129 }
1130 if (is_arm && get_float_abi(target) == FloatAbiHard) {
1131 buf_append_str(&buf, "hf");
1132 }
1133 buf_append_str(&buf, ".so.1");
1134 return buf_ptr(&buf);
1135 }
1136
10951137 switch (target->os) {
10961138 case OsFreeBSD:
10971139 return "/libexec/ld-elf.so.1";
......@@ -1099,14 +1141,6 @@ const char *target_dynamic_linker(const ZigTarget *target) {
10991141 return "/libexec/ld.elf_so";
11001142 case OsLinux: {
11011143 const ZigLLVM_EnvironmentType abi = target->abi;
1102 if (abi == ZigLLVM_Android) {
1103 if (is_64_bit(target->arch)) {
1104 return "/system/bin/linker64";
1105 } else {
1106 return "/system/bin/linker";
1107 }
1108 }
1109
11101144 switch (target->arch) {
11111145 case ZigLLVM_UnknownArch:
11121146 zig_unreachable();
......@@ -1121,6 +1155,9 @@ const char *target_dynamic_linker(const ZigTarget *target) {
11211155 case ZigLLVM_aarch64_be:
11221156 return "/lib/ld-linux-aarch64_be.so.1";
11231157
1158 case ZigLLVM_aarch64_32:
1159 return "/lib/ld-linux-aarch64_32.so.1";
1160
11241161 case ZigLLVM_arm:
11251162 case ZigLLVM_thumb:
11261163 if (get_float_abi(target) == FloatAbiHard) {
......@@ -1213,6 +1250,7 @@ const char *target_dynamic_linker(const ZigTarget *target) {
12131250 case OsMacOSX:
12141251 case OsUefi:
12151252 case OsWindows:
1253 case OsEmscripten:
12161254 return nullptr;
12171255
12181256 case OsAnanas:
......@@ -1280,11 +1318,12 @@ const char *arch_stack_pointer_register_name(ZigLLVM_ArchType arch) {
12801318 case ZigLLVM_x86_64:
12811319 return "rsp";
12821320 case ZigLLVM_aarch64:
1321 case ZigLLVM_aarch64_be:
1322 case ZigLLVM_aarch64_32:
12831323 return "sp";
12841324
12851325 case ZigLLVM_arm:
12861326 case ZigLLVM_thumb:
1287 case ZigLLVM_aarch64_be:
12881327 case ZigLLVM_amdgcn:
12891328 case ZigLLVM_amdil:
12901329 case ZigLLVM_amdil64:
......@@ -1338,10 +1377,11 @@ bool target_is_arm(const ZigTarget *target) {
13381377 case ZigLLVM_UnknownArch:
13391378 zig_unreachable();
13401379 case ZigLLVM_aarch64:
1341 case ZigLLVM_arm:
1342 case ZigLLVM_thumb:
13431380 case ZigLLVM_aarch64_be:
1381 case ZigLLVM_aarch64_32:
1382 case ZigLLVM_arm:
13441383 case ZigLLVM_armeb:
1384 case ZigLLVM_thumb:
13451385 case ZigLLVM_thumbeb:
13461386 return true;
13471387
......@@ -1490,6 +1530,7 @@ ZigLLVM_EnvironmentType target_default_abi(ZigLLVM_ArchType arch, Os os) {
14901530 return ZigLLVM_MSVC;
14911531 case OsLinux:
14921532 case OsWASI:
1533 case OsEmscripten:
14931534 return ZigLLVM_Musl;
14941535 }
14951536 zig_unreachable();
......@@ -1607,12 +1648,15 @@ const char *target_libc_generic_name(const ZigTarget *target) {
16071648 case ZigLLVM_CODE16:
16081649 case ZigLLVM_EABI:
16091650 case ZigLLVM_EABIHF:
1651 case ZigLLVM_ELFv1:
1652 case ZigLLVM_ELFv2:
16101653 case ZigLLVM_Android:
16111654 case ZigLLVM_MSVC:
16121655 case ZigLLVM_Itanium:
16131656 case ZigLLVM_Cygnus:
16141657 case ZigLLVM_CoreCLR:
16151658 case ZigLLVM_Simulator:
1659 case ZigLLVM_MacABI:
16161660 zig_unreachable();
16171661 }
16181662 zig_unreachable();
src/target.hpp+1
......@@ -186,6 +186,7 @@ bool target_abi_is_musl(ZigLLVM_EnvironmentType abi);
186186bool target_is_glibc(const ZigTarget *target);
187187bool target_is_musl(const ZigTarget *target);
188188bool target_is_wasm(const ZigTarget *target);
189bool target_is_android(const ZigTarget *target);
189190bool target_is_single_threaded(const ZigTarget *target);
190191bool target_supports_stack_probing(const ZigTarget *target);
191192bool target_has_debug_info(const ZigTarget *target);
src/translate_c.cpp+33-1
......@@ -1301,6 +1301,7 @@ static AstNode *trans_type(Context *c, const ZigClangType *ty, ZigClangSourceLoc
13011301 case ZigClangType_DeducedTemplateSpecialization:
13021302 case ZigClangType_DependentAddressSpace:
13031303 case ZigClangType_DependentVector:
1304 case ZigClangType_MacroQualified:
13041305 emit_warning(c, source_loc, "unsupported type: '%s'", ZigClangType_getTypeClassName(ty));
13051306 return nullptr;
13061307 }
......@@ -2188,6 +2189,15 @@ static AstNode *trans_implicit_cast_expr(Context *c, ResultUsed result_used, Tra
21882189 case ZigClangCK_IntToOCLSampler:
21892190 emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CK_IntToOCLSampler");
21902191 return nullptr;
2192 case ZigClangCK_LValueToRValueBitCast:
2193 emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CK_LValueToRValueBitCast");
2194 return nullptr;
2195 case ZigClangCK_FixedPointToIntegral:
2196 emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CK_FixedPointToIntegral");
2197 return nullptr;
2198 case ZigClangCK_IntegralToFixedPoint:
2199 emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CK_IntegralToFixedPointral");
2200 return nullptr;
21912201 }
21922202 zig_unreachable();
21932203}
......@@ -2671,6 +2681,15 @@ static int trans_local_declaration(Context *c, TransScope *scope, const clang::D
26712681 case clang::Decl::TranslationUnit:
26722682 emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C TranslationUnit");
26732683 return ErrorUnexpected;
2684 case clang::Decl::Concept:
2685 emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C Concept");
2686 return ErrorUnexpected;
2687 case clang::Decl::OMPDeclareMapper:
2688 emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPDeclareMapper");
2689 return ErrorUnexpected;
2690 case clang::Decl::OMPAllocate:
2691 emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPAllocate");
2692 return ErrorUnexpected;
26742693 }
26752694 zig_unreachable();
26762695 }
......@@ -2946,6 +2965,7 @@ static AstNode *trans_bool_expr(Context *c, ResultUsed result_used, TransScope *
29462965 case ZigClangType_DeducedTemplateSpecialization:
29472966 case ZigClangType_DependentAddressSpace:
29482967 case ZigClangType_DependentVector:
2968 case ZigClangType_MacroQualified:
29492969 return res;
29502970 }
29512971 zig_unreachable();
......@@ -4031,6 +4051,12 @@ static int trans_stmt_extra(Context *c, TransScope *scope, const ZigClangStmt *s
40314051 case ZigClangStmt_SEHTryStmtClass:
40324052 emit_warning(c, ZigClangStmt_getBeginLoc(stmt), "TODO handle C SEHTryStmtClass");
40334053 return ErrorUnexpected;
4054 case ZigClangStmt_BuiltinBitCastExprClass:
4055 emit_warning(c, ZigClangStmt_getBeginLoc(stmt), "TODO handle C BuiltinBitCastExprClass");
4056 return ErrorUnexpected;
4057 case ZigClangStmt_SourceLocExprClass:
4058 emit_warning(c, ZigClangStmt_getBeginLoc(stmt), "TODO handle C SourceLocExprClass");
4059 return ErrorUnexpected;
40344060 }
40354061 zig_unreachable();
40364062}
......@@ -4448,7 +4474,7 @@ static AstNode *trans_ap_value(Context *c, const ZigClangAPValue *ap_value, ZigC
44484474 switch (ZigClangAPValue_getKind(ap_value)) {
44494475 case ZigClangAPValueInt:
44504476 return trans_create_node_apint(c, ZigClangAPValue_getInt(ap_value));
4451 case ZigClangAPValueUninitialized:
4477 case ZigClangAPValueNone:
44524478 return trans_create_node(c, NodeTypeUndefinedLiteral);
44534479 case ZigClangAPValueArray: {
44544480 emit_warning(c, source_loc, "TODO add a test case for this code");
......@@ -4539,6 +4565,12 @@ static AstNode *trans_ap_value(Context *c, const ZigClangAPValue *ap_value, ZigC
45394565 case ZigClangAPValueAddrLabelDiff:
45404566 emit_warning(c, source_loc, "unsupported initializer value kind: AddrLabelDiff");
45414567 return nullptr;
4568 case ZigClangAPValueIndeterminate:
4569 emit_warning(c, source_loc, "unsupported initializer value kind: Indeterminate");
4570 return nullptr;
4571 case ZigClangAPValueFixedPoint:
4572 emit_warning(c, source_loc, "unsupported initializer value kind: FixedPoint");
4573 return nullptr;
45424574 }
45434575 zig_unreachable();
45444576}
src/zig_clang.cpp+25-17
......@@ -182,6 +182,7 @@ void ZigClang_detect_enum_CK(clang::CastKind x) {
182182 case clang::CK_IntegralToFloating:
183183 case clang::CK_IntegralToPointer:
184184 case clang::CK_LValueBitCast:
185 case clang::CK_LValueToRValueBitCast:
185186 case clang::CK_LValueToRValue:
186187 case clang::CK_MemberPointerToBoolean:
187188 case clang::CK_NoOp:
......@@ -199,6 +200,8 @@ void ZigClang_detect_enum_CK(clang::CastKind x) {
199200 case clang::CK_VectorSplat:
200201 case clang::CK_ZeroToOCLOpaqueType:
201202 case clang::CK_FixedPointCast:
203 case clang::CK_FixedPointToIntegral:
204 case clang::CK_IntegralToFixedPoint:
202205 case clang::CK_FixedPointToBoolean:
203206 break;
204207 }
......@@ -207,6 +210,7 @@ void ZigClang_detect_enum_CK(clang::CastKind x) {
207210static_assert((clang::CastKind)ZigClangCK_Dependent == clang::CK_Dependent, "");
208211static_assert((clang::CastKind)ZigClangCK_BitCast == clang::CK_BitCast, "");
209212static_assert((clang::CastKind)ZigClangCK_LValueBitCast == clang::CK_LValueBitCast, "");
213static_assert((clang::CastKind)ZigClangCK_LValueToRValueBitCast == clang::CK_LValueToRValueBitCast, "");
210214static_assert((clang::CastKind)ZigClangCK_LValueToRValue == clang::CK_LValueToRValue, "");
211215static_assert((clang::CastKind)ZigClangCK_NoOp == clang::CK_NoOp, "");
212216static_assert((clang::CastKind)ZigClangCK_BaseToDerived == clang::CK_BaseToDerived, "");
......@@ -233,6 +237,8 @@ static_assert((clang::CastKind)ZigClangCK_IntegralCast == clang::CK_IntegralCast
233237static_assert((clang::CastKind)ZigClangCK_IntegralToBoolean == clang::CK_IntegralToBoolean, "");
234238static_assert((clang::CastKind)ZigClangCK_IntegralToFloating == clang::CK_IntegralToFloating, "");
235239static_assert((clang::CastKind)ZigClangCK_FixedPointCast == clang::CK_FixedPointCast, "");
240static_assert((clang::CastKind)ZigClangCK_FixedPointToIntegral == clang::CK_FixedPointToIntegral, "");
241static_assert((clang::CastKind)ZigClangCK_IntegralToFixedPoint == clang::CK_IntegralToFixedPoint, "");
236242static_assert((clang::CastKind)ZigClangCK_FixedPointToBoolean == clang::CK_FixedPointToBoolean, "");
237243static_assert((clang::CastKind)ZigClangCK_FloatingToIntegral == clang::CK_FloatingToIntegral, "");
238244static_assert((clang::CastKind)ZigClangCK_FloatingToBoolean == clang::CK_FloatingToBoolean, "");
......@@ -288,6 +294,7 @@ void ZigClang_detect_enum_TypeClass(clang::Type::TypeClass ty) {
288294 case clang::Type::UnresolvedUsing:
289295 case clang::Type::Paren:
290296 case clang::Type::Typedef:
297 case clang::Type::MacroQualified:
291298 case clang::Type::Adjusted:
292299 case clang::Type::Decayed:
293300 case clang::Type::TypeOfExpr:
......@@ -339,6 +346,7 @@ static_assert((clang::Type::TypeClass)ZigClangType_FunctionNoProto == clang::Typ
339346static_assert((clang::Type::TypeClass)ZigClangType_UnresolvedUsing == clang::Type::UnresolvedUsing, "");
340347static_assert((clang::Type::TypeClass)ZigClangType_Paren == clang::Type::Paren, "");
341348static_assert((clang::Type::TypeClass)ZigClangType_Typedef == clang::Type::Typedef, "");
349static_assert((clang::Type::TypeClass)ZigClangType_MacroQualified == clang::Type::MacroQualified, "");
342350static_assert((clang::Type::TypeClass)ZigClangType_Adjusted == clang::Type::Adjusted, "");
343351static_assert((clang::Type::TypeClass)ZigClangType_Decayed == clang::Type::Decayed, "");
344352static_assert((clang::Type::TypeClass)ZigClangType_TypeOfExpr == clang::Type::TypeOfExpr, "");
......@@ -423,6 +431,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
423431 case clang::Stmt::ConditionalOperatorClass:
424432 case clang::Stmt::BinaryConditionalOperatorClass:
425433 case clang::Stmt::ImplicitCastExprClass:
434 case clang::Stmt::BuiltinBitCastExprClass:
426435 case clang::Stmt::CStyleCastExprClass:
427436 case clang::Stmt::CompoundLiteralExprClass:
428437 case clang::Stmt::ExtVectorElementExprClass:
......@@ -479,6 +488,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
479488 case clang::Stmt::CXXNoexceptExprClass:
480489 case clang::Stmt::PackExpansionExprClass:
481490 case clang::Stmt::SizeOfPackExprClass:
491 case clang::Stmt::SourceLocExprClass:
482492 case clang::Stmt::SubstNonTypeTemplateParmExprClass:
483493 case clang::Stmt::SubstNonTypeTemplateParmPackExprClass:
484494 case clang::Stmt::FunctionParmPackExprClass:
......@@ -624,6 +634,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_CompoundAssignOperatorClass =
624634static_assert((clang::Stmt::StmtClass)ZigClangStmt_ConditionalOperatorClass == clang::Stmt::ConditionalOperatorClass, "");
625635static_assert((clang::Stmt::StmtClass)ZigClangStmt_BinaryConditionalOperatorClass == clang::Stmt::BinaryConditionalOperatorClass, "");
626636static_assert((clang::Stmt::StmtClass)ZigClangStmt_ImplicitCastExprClass == clang::Stmt::ImplicitCastExprClass, "");
637static_assert((clang::Stmt::StmtClass)ZigClangStmt_BuiltinBitCastExprClass == clang::Stmt::BuiltinBitCastExprClass, "");
627638static_assert((clang::Stmt::StmtClass)ZigClangStmt_CStyleCastExprClass == clang::Stmt::CStyleCastExprClass, "");
628639static_assert((clang::Stmt::StmtClass)ZigClangStmt_CompoundLiteralExprClass == clang::Stmt::CompoundLiteralExprClass, "");
629640static_assert((clang::Stmt::StmtClass)ZigClangStmt_ExtVectorElementExprClass == clang::Stmt::ExtVectorElementExprClass, "");
......@@ -680,6 +691,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnresolvedMemberExprClass ==
680691static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXNoexceptExprClass == clang::Stmt::CXXNoexceptExprClass, "");
681692static_assert((clang::Stmt::StmtClass)ZigClangStmt_PackExpansionExprClass == clang::Stmt::PackExpansionExprClass, "");
682693static_assert((clang::Stmt::StmtClass)ZigClangStmt_SizeOfPackExprClass == clang::Stmt::SizeOfPackExprClass, "");
694static_assert((clang::Stmt::StmtClass)ZigClangStmt_SourceLocExprClass == clang::Stmt::SourceLocExprClass, "");
683695static_assert((clang::Stmt::StmtClass)ZigClangStmt_SubstNonTypeTemplateParmExprClass == clang::Stmt::SubstNonTypeTemplateParmExprClass, "");
684696static_assert((clang::Stmt::StmtClass)ZigClangStmt_SubstNonTypeTemplateParmPackExprClass == clang::Stmt::SubstNonTypeTemplateParmPackExprClass, "");
685697static_assert((clang::Stmt::StmtClass)ZigClangStmt_FunctionParmPackExprClass == clang::Stmt::FunctionParmPackExprClass, "");
......@@ -770,9 +782,11 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeSimdD
770782
771783void ZigClang_detect_enum_APValueKind(clang::APValue::ValueKind x) {
772784 switch (x) {
773 case clang::APValue::Uninitialized:
785 case clang::APValue::None:
786 case clang::APValue::Indeterminate:
774787 case clang::APValue::Int:
775788 case clang::APValue::Float:
789 case clang::APValue::FixedPoint:
776790 case clang::APValue::ComplexInt:
777791 case clang::APValue::ComplexFloat:
778792 case clang::APValue::LValue:
......@@ -786,9 +800,11 @@ void ZigClang_detect_enum_APValueKind(clang::APValue::ValueKind x) {
786800 }
787801}
788802
789static_assert((clang::APValue::ValueKind)ZigClangAPValueUninitialized == clang::APValue::Uninitialized, "");
803static_assert((clang::APValue::ValueKind)ZigClangAPValueNone == clang::APValue::None, "");
804static_assert((clang::APValue::ValueKind)ZigClangAPValueIndeterminate == clang::APValue::Indeterminate, "");
790805static_assert((clang::APValue::ValueKind)ZigClangAPValueInt == clang::APValue::Int, "");
791806static_assert((clang::APValue::ValueKind)ZigClangAPValueFloat == clang::APValue::Float, "");
807static_assert((clang::APValue::ValueKind)ZigClangAPValueFixedPoint == clang::APValue::FixedPoint, "");
792808static_assert((clang::APValue::ValueKind)ZigClangAPValueComplexInt == clang::APValue::ComplexInt, "");
793809static_assert((clang::APValue::ValueKind)ZigClangAPValueComplexFloat == clang::APValue::ComplexFloat, "");
794810static_assert((clang::APValue::ValueKind)ZigClangAPValueLValue == clang::APValue::LValue, "");
......@@ -826,6 +842,7 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) {
826842 case clang::Decl::ObjCMethod:
827843 case clang::Decl::ObjCProperty:
828844 case clang::Decl::BuiltinTemplate:
845 case clang::Decl::Concept:
829846 case clang::Decl::ClassTemplate:
830847 case clang::Decl::FunctionTemplate:
831848 case clang::Decl::TypeAliasTemplate:
......@@ -867,8 +884,10 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) {
867884 case clang::Decl::VarTemplatePartialSpecialization:
868885 case clang::Decl::EnumConstant:
869886 case clang::Decl::IndirectField:
887 case clang::Decl::OMPDeclareMapper:
870888 case clang::Decl::OMPDeclareReduction:
871889 case clang::Decl::UnresolvedUsingValue:
890 case clang::Decl::OMPAllocate:
872891 case clang::Decl::OMPRequires:
873892 case clang::Decl::OMPThreadPrivate:
874893 case clang::Decl::ObjCPropertyImpl:
......@@ -904,6 +923,7 @@ static_assert((clang::Decl::Kind)ZigClangDeclObjCProtocol == clang::Decl::ObjCPr
904923static_assert((clang::Decl::Kind)ZigClangDeclObjCMethod == clang::Decl::ObjCMethod, "");
905924static_assert((clang::Decl::Kind)ZigClangDeclObjCProperty == clang::Decl::ObjCProperty, "");
906925static_assert((clang::Decl::Kind)ZigClangDeclBuiltinTemplate == clang::Decl::BuiltinTemplate, "");
926static_assert((clang::Decl::Kind)ZigClangDeclConcept == clang::Decl::Concept, "");
907927static_assert((clang::Decl::Kind)ZigClangDeclClassTemplate == clang::Decl::ClassTemplate, "");
908928static_assert((clang::Decl::Kind)ZigClangDeclFunctionTemplate == clang::Decl::FunctionTemplate, "");
909929static_assert((clang::Decl::Kind)ZigClangDeclTypeAliasTemplate == clang::Decl::TypeAliasTemplate, "");
......@@ -919,6 +939,7 @@ static_assert((clang::Decl::Kind)ZigClangDeclObjCTypeParam == clang::Decl::ObjCT
919939static_assert((clang::Decl::Kind)ZigClangDeclTypeAlias == clang::Decl::TypeAlias, "");
920940static_assert((clang::Decl::Kind)ZigClangDeclTypedef == clang::Decl::Typedef, "");
921941static_assert((clang::Decl::Kind)ZigClangDeclUnresolvedUsingTypename == clang::Decl::UnresolvedUsingTypename, "");
942static_assert((clang::Decl::Kind)ZigClangDeclOMPAllocate == clang::Decl::OMPAllocate, "");
922943static_assert((clang::Decl::Kind)ZigClangDeclUsing == clang::Decl::Using, "");
923944static_assert((clang::Decl::Kind)ZigClangDeclUsingDirective == clang::Decl::UsingDirective, "");
924945static_assert((clang::Decl::Kind)ZigClangDeclUsingPack == clang::Decl::UsingPack, "");
......@@ -945,6 +966,7 @@ static_assert((clang::Decl::Kind)ZigClangDeclVarTemplateSpecialization == clang:
945966static_assert((clang::Decl::Kind)ZigClangDeclVarTemplatePartialSpecialization == clang::Decl::VarTemplatePartialSpecialization, "");
946967static_assert((clang::Decl::Kind)ZigClangDeclEnumConstant == clang::Decl::EnumConstant, "");
947968static_assert((clang::Decl::Kind)ZigClangDeclIndirectField == clang::Decl::IndirectField, "");
969static_assert((clang::Decl::Kind)ZigClangDeclOMPDeclareMapper == clang::Decl::OMPDeclareMapper, "");
948970static_assert((clang::Decl::Kind)ZigClangDeclOMPDeclareReduction == clang::Decl::OMPDeclareReduction, "");
949971static_assert((clang::Decl::Kind)ZigClangDeclUnresolvedUsingValue == clang::Decl::UnresolvedUsingValue, "");
950972static_assert((clang::Decl::Kind)ZigClangDeclOMPRequires == clang::Decl::OMPRequires, "");
......@@ -1288,19 +1310,6 @@ static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind
12881310static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind_UTF16 == clang::StringLiteral::UTF16, "");
12891311static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind_UTF32 == clang::StringLiteral::UTF32, "");
12901312
1291static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Uninitialized == clang::APValue::ValueKind::Uninitialized, "");
1292static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Int == clang::APValue::ValueKind::Int, "");
1293static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Float == clang::APValue::ValueKind::Float, "");
1294static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_ComplexInt == clang::APValue::ValueKind::ComplexInt, "");
1295static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_ComplexFloat == clang::APValue::ValueKind::ComplexFloat, "");
1296static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_LValue == clang::APValue::ValueKind::LValue, "");
1297static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Vector == clang::APValue::ValueKind::Vector, "");
1298static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Array == clang::APValue::ValueKind::Array, "");
1299static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Struct == clang::APValue::ValueKind::Struct, "");
1300static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Union == clang::APValue::ValueKind::Union, "");
1301static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_MemberPointer == clang::APValue::ValueKind::MemberPointer, "");
1302static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_AddrLabelDiff == clang::APValue::ValueKind::AddrLabelDiff, "");
1303
13041313static_assert(sizeof(ZigClangAPValue) == sizeof(clang::APValue), "");
13051314
13061315static_assert(sizeof(ZigClangSourceLocation) == sizeof(clang::SourceLocation), "");
......@@ -1744,7 +1753,6 @@ ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **args_begin, const char
17441753 std::shared_ptr<clang::PCHContainerOperations> pch_container_ops = std::make_shared<clang::PCHContainerOperations>();
17451754
17461755 bool only_local_decls = true;
1747 bool capture_diagnostics = true;
17481756 bool user_files_are_volatile = true;
17491757 bool allow_pch_with_compiler_errors = false;
17501758 bool single_file_parse = false;
......@@ -1753,7 +1761,7 @@ ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **args_begin, const char
17531761 clang::ASTUnit *ast_unit = clang::ASTUnit::LoadFromCommandLine(
17541762 args_begin, args_end,
17551763 pch_container_ops, diags, resources_path,
1756 only_local_decls, capture_diagnostics, clang::None, true, 0, clang::TU_Complete,
1764 only_local_decls, clang::CaptureDiagsKind::All, clang::None, true, 0, clang::TU_Complete,
17571765 false, false, allow_pch_with_compiler_errors, clang::SkipFunctionBodiesScope::None,
17581766 single_file_parse, user_files_are_volatile, for_serialization, clang::None, err_unit,
17591767 nullptr);
src/zig_clang.h+95-99
......@@ -30,23 +30,25 @@ struct ZigClangAPValueLValueBase {
3030 unsigned Version;
3131};
3232
33enum ZigClangAPValue_ValueKind {
34 ZigClangAPValue_ValueKind_Uninitialized,
35 ZigClangAPValue_ValueKind_Int,
36 ZigClangAPValue_ValueKind_Float,
37 ZigClangAPValue_ValueKind_ComplexInt,
38 ZigClangAPValue_ValueKind_ComplexFloat,
39 ZigClangAPValue_ValueKind_LValue,
40 ZigClangAPValue_ValueKind_Vector,
41 ZigClangAPValue_ValueKind_Array,
42 ZigClangAPValue_ValueKind_Struct,
43 ZigClangAPValue_ValueKind_Union,
44 ZigClangAPValue_ValueKind_MemberPointer,
45 ZigClangAPValue_ValueKind_AddrLabelDiff
33enum ZigClangAPValueKind {
34 ZigClangAPValueNone,
35 ZigClangAPValueIndeterminate,
36 ZigClangAPValueInt,
37 ZigClangAPValueFloat,
38 ZigClangAPValueFixedPoint,
39 ZigClangAPValueComplexInt,
40 ZigClangAPValueComplexFloat,
41 ZigClangAPValueLValue,
42 ZigClangAPValueVector,
43 ZigClangAPValueArray,
44 ZigClangAPValueStruct,
45 ZigClangAPValueUnion,
46 ZigClangAPValueMemberPointer,
47 ZigClangAPValueAddrLabelDiff,
4648};
4749
4850struct ZigClangAPValue {
49 enum ZigClangAPValue_ValueKind Kind;
51 enum ZigClangAPValueKind Kind;
5052 // experimentally-derived size of clang::APValue::DataType
5153#if defined(WIN32) && defined(_MSC_VER)
5254 char Data[52];
......@@ -214,6 +216,7 @@ enum ZigClangTypeClass {
214216 ZigClangType_UnresolvedUsing,
215217 ZigClangType_Paren,
216218 ZigClangType_Typedef,
219 ZigClangType_MacroQualified,
217220 ZigClangType_Adjusted,
218221 ZigClangType_Decayed,
219222 ZigClangType_TypeOfExpr,
......@@ -243,10 +246,9 @@ enum ZigClangTypeClass {
243246};
244247
245248enum ZigClangStmtClass {
246 ZigClangStmt_NoStmtClass = 0,
249 ZigClangStmt_NoStmtClass,
247250 ZigClangStmt_GCCAsmStmtClass,
248251 ZigClangStmt_MSAsmStmtClass,
249 ZigClangStmt_AttributedStmtClass,
250252 ZigClangStmt_BreakStmtClass,
251253 ZigClangStmt_CXXCatchStmtClass,
252254 ZigClangStmt_CXXForRangeStmtClass,
......@@ -258,6 +260,75 @@ enum ZigClangStmtClass {
258260 ZigClangStmt_CoroutineBodyStmtClass,
259261 ZigClangStmt_DeclStmtClass,
260262 ZigClangStmt_DoStmtClass,
263 ZigClangStmt_ForStmtClass,
264 ZigClangStmt_GotoStmtClass,
265 ZigClangStmt_IfStmtClass,
266 ZigClangStmt_IndirectGotoStmtClass,
267 ZigClangStmt_MSDependentExistsStmtClass,
268 ZigClangStmt_NullStmtClass,
269 ZigClangStmt_OMPAtomicDirectiveClass,
270 ZigClangStmt_OMPBarrierDirectiveClass,
271 ZigClangStmt_OMPCancelDirectiveClass,
272 ZigClangStmt_OMPCancellationPointDirectiveClass,
273 ZigClangStmt_OMPCriticalDirectiveClass,
274 ZigClangStmt_OMPFlushDirectiveClass,
275 ZigClangStmt_OMPDistributeDirectiveClass,
276 ZigClangStmt_OMPDistributeParallelForDirectiveClass,
277 ZigClangStmt_OMPDistributeParallelForSimdDirectiveClass,
278 ZigClangStmt_OMPDistributeSimdDirectiveClass,
279 ZigClangStmt_OMPForDirectiveClass,
280 ZigClangStmt_OMPForSimdDirectiveClass,
281 ZigClangStmt_OMPParallelForDirectiveClass,
282 ZigClangStmt_OMPParallelForSimdDirectiveClass,
283 ZigClangStmt_OMPSimdDirectiveClass,
284 ZigClangStmt_OMPTargetParallelForSimdDirectiveClass,
285 ZigClangStmt_OMPTargetSimdDirectiveClass,
286 ZigClangStmt_OMPTargetTeamsDistributeDirectiveClass,
287 ZigClangStmt_OMPTargetTeamsDistributeParallelForDirectiveClass,
288 ZigClangStmt_OMPTargetTeamsDistributeParallelForSimdDirectiveClass,
289 ZigClangStmt_OMPTargetTeamsDistributeSimdDirectiveClass,
290 ZigClangStmt_OMPTaskLoopDirectiveClass,
291 ZigClangStmt_OMPTaskLoopSimdDirectiveClass,
292 ZigClangStmt_OMPTeamsDistributeDirectiveClass,
293 ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass,
294 ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass,
295 ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass,
296 ZigClangStmt_OMPMasterDirectiveClass,
297 ZigClangStmt_OMPOrderedDirectiveClass,
298 ZigClangStmt_OMPParallelDirectiveClass,
299 ZigClangStmt_OMPParallelSectionsDirectiveClass,
300 ZigClangStmt_OMPSectionDirectiveClass,
301 ZigClangStmt_OMPSectionsDirectiveClass,
302 ZigClangStmt_OMPSingleDirectiveClass,
303 ZigClangStmt_OMPTargetDataDirectiveClass,
304 ZigClangStmt_OMPTargetDirectiveClass,
305 ZigClangStmt_OMPTargetEnterDataDirectiveClass,
306 ZigClangStmt_OMPTargetExitDataDirectiveClass,
307 ZigClangStmt_OMPTargetParallelDirectiveClass,
308 ZigClangStmt_OMPTargetParallelForDirectiveClass,
309 ZigClangStmt_OMPTargetTeamsDirectiveClass,
310 ZigClangStmt_OMPTargetUpdateDirectiveClass,
311 ZigClangStmt_OMPTaskDirectiveClass,
312 ZigClangStmt_OMPTaskgroupDirectiveClass,
313 ZigClangStmt_OMPTaskwaitDirectiveClass,
314 ZigClangStmt_OMPTaskyieldDirectiveClass,
315 ZigClangStmt_OMPTeamsDirectiveClass,
316 ZigClangStmt_ObjCAtCatchStmtClass,
317 ZigClangStmt_ObjCAtFinallyStmtClass,
318 ZigClangStmt_ObjCAtSynchronizedStmtClass,
319 ZigClangStmt_ObjCAtThrowStmtClass,
320 ZigClangStmt_ObjCAtTryStmtClass,
321 ZigClangStmt_ObjCAutoreleasePoolStmtClass,
322 ZigClangStmt_ObjCForCollectionStmtClass,
323 ZigClangStmt_ReturnStmtClass,
324 ZigClangStmt_SEHExceptStmtClass,
325 ZigClangStmt_SEHFinallyStmtClass,
326 ZigClangStmt_SEHLeaveStmtClass,
327 ZigClangStmt_SEHTryStmtClass,
328 ZigClangStmt_CaseStmtClass,
329 ZigClangStmt_DefaultStmtClass,
330 ZigClangStmt_SwitchStmtClass,
331 ZigClangStmt_AttributedStmtClass,
261332 ZigClangStmt_BinaryConditionalOperatorClass,
262333 ZigClangStmt_ConditionalOperatorClass,
263334 ZigClangStmt_AddrLabelExprClass,
......@@ -296,6 +367,7 @@ enum ZigClangStmtClass {
296367 ZigClangStmt_CXXMemberCallExprClass,
297368 ZigClangStmt_CXXOperatorCallExprClass,
298369 ZigClangStmt_UserDefinedLiteralClass,
370 ZigClangStmt_BuiltinBitCastExprClass,
299371 ZigClangStmt_CStyleCastExprClass,
300372 ZigClangStmt_CXXFunctionalCastExprClass,
301373 ZigClangStmt_CXXConstCastExprClass,
......@@ -361,6 +433,7 @@ enum ZigClangStmtClass {
361433 ZigClangStmt_PseudoObjectExprClass,
362434 ZigClangStmt_ShuffleVectorExprClass,
363435 ZigClangStmt_SizeOfPackExprClass,
436 ZigClangStmt_SourceLocExprClass,
364437 ZigClangStmt_StmtExprClass,
365438 ZigClangStmt_StringLiteralClass,
366439 ZigClangStmt_SubstNonTypeTemplateParmExprClass,
......@@ -370,75 +443,7 @@ enum ZigClangStmtClass {
370443 ZigClangStmt_UnaryExprOrTypeTraitExprClass,
371444 ZigClangStmt_UnaryOperatorClass,
372445 ZigClangStmt_VAArgExprClass,
373 ZigClangStmt_ForStmtClass,
374 ZigClangStmt_GotoStmtClass,
375 ZigClangStmt_IfStmtClass,
376 ZigClangStmt_IndirectGotoStmtClass,
377446 ZigClangStmt_LabelStmtClass,
378 ZigClangStmt_MSDependentExistsStmtClass,
379 ZigClangStmt_NullStmtClass,
380 ZigClangStmt_OMPAtomicDirectiveClass,
381 ZigClangStmt_OMPBarrierDirectiveClass,
382 ZigClangStmt_OMPCancelDirectiveClass,
383 ZigClangStmt_OMPCancellationPointDirectiveClass,
384 ZigClangStmt_OMPCriticalDirectiveClass,
385 ZigClangStmt_OMPFlushDirectiveClass,
386 ZigClangStmt_OMPDistributeDirectiveClass,
387 ZigClangStmt_OMPDistributeParallelForDirectiveClass,
388 ZigClangStmt_OMPDistributeParallelForSimdDirectiveClass,
389 ZigClangStmt_OMPDistributeSimdDirectiveClass,
390 ZigClangStmt_OMPForDirectiveClass,
391 ZigClangStmt_OMPForSimdDirectiveClass,
392 ZigClangStmt_OMPParallelForDirectiveClass,
393 ZigClangStmt_OMPParallelForSimdDirectiveClass,
394 ZigClangStmt_OMPSimdDirectiveClass,
395 ZigClangStmt_OMPTargetParallelForSimdDirectiveClass,
396 ZigClangStmt_OMPTargetSimdDirectiveClass,
397 ZigClangStmt_OMPTargetTeamsDistributeDirectiveClass,
398 ZigClangStmt_OMPTargetTeamsDistributeParallelForDirectiveClass,
399 ZigClangStmt_OMPTargetTeamsDistributeParallelForSimdDirectiveClass,
400 ZigClangStmt_OMPTargetTeamsDistributeSimdDirectiveClass,
401 ZigClangStmt_OMPTaskLoopDirectiveClass,
402 ZigClangStmt_OMPTaskLoopSimdDirectiveClass,
403 ZigClangStmt_OMPTeamsDistributeDirectiveClass,
404 ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass,
405 ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass,
406 ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass,
407 ZigClangStmt_OMPMasterDirectiveClass,
408 ZigClangStmt_OMPOrderedDirectiveClass,
409 ZigClangStmt_OMPParallelDirectiveClass,
410 ZigClangStmt_OMPParallelSectionsDirectiveClass,
411 ZigClangStmt_OMPSectionDirectiveClass,
412 ZigClangStmt_OMPSectionsDirectiveClass,
413 ZigClangStmt_OMPSingleDirectiveClass,
414 ZigClangStmt_OMPTargetDataDirectiveClass,
415 ZigClangStmt_OMPTargetDirectiveClass,
416 ZigClangStmt_OMPTargetEnterDataDirectiveClass,
417 ZigClangStmt_OMPTargetExitDataDirectiveClass,
418 ZigClangStmt_OMPTargetParallelDirectiveClass,
419 ZigClangStmt_OMPTargetParallelForDirectiveClass,
420 ZigClangStmt_OMPTargetTeamsDirectiveClass,
421 ZigClangStmt_OMPTargetUpdateDirectiveClass,
422 ZigClangStmt_OMPTaskDirectiveClass,
423 ZigClangStmt_OMPTaskgroupDirectiveClass,
424 ZigClangStmt_OMPTaskwaitDirectiveClass,
425 ZigClangStmt_OMPTaskyieldDirectiveClass,
426 ZigClangStmt_OMPTeamsDirectiveClass,
427 ZigClangStmt_ObjCAtCatchStmtClass,
428 ZigClangStmt_ObjCAtFinallyStmtClass,
429 ZigClangStmt_ObjCAtSynchronizedStmtClass,
430 ZigClangStmt_ObjCAtThrowStmtClass,
431 ZigClangStmt_ObjCAtTryStmtClass,
432 ZigClangStmt_ObjCAutoreleasePoolStmtClass,
433 ZigClangStmt_ObjCForCollectionStmtClass,
434 ZigClangStmt_ReturnStmtClass,
435 ZigClangStmt_SEHExceptStmtClass,
436 ZigClangStmt_SEHFinallyStmtClass,
437 ZigClangStmt_SEHLeaveStmtClass,
438 ZigClangStmt_SEHTryStmtClass,
439 ZigClangStmt_CaseStmtClass,
440 ZigClangStmt_DefaultStmtClass,
441 ZigClangStmt_SwitchStmtClass,
442447 ZigClangStmt_WhileStmtClass,
443448};
444449
......@@ -446,6 +451,7 @@ enum ZigClangCK {
446451 ZigClangCK_Dependent,
447452 ZigClangCK_BitCast,
448453 ZigClangCK_LValueBitCast,
454 ZigClangCK_LValueToRValueBitCast,
449455 ZigClangCK_LValueToRValue,
450456 ZigClangCK_NoOp,
451457 ZigClangCK_BaseToDerived,
......@@ -472,6 +478,8 @@ enum ZigClangCK {
472478 ZigClangCK_IntegralToBoolean,
473479 ZigClangCK_IntegralToFloating,
474480 ZigClangCK_FixedPointCast,
481 ZigClangCK_FixedPointToIntegral,
482 ZigClangCK_IntegralToFixedPoint,
475483 ZigClangCK_FixedPointToBoolean,
476484 ZigClangCK_FloatingToIntegral,
477485 ZigClangCK_FloatingToBoolean,
......@@ -504,21 +512,6 @@ enum ZigClangCK {
504512 ZigClangCK_IntToOCLSampler,
505513};
506514
507enum ZigClangAPValueKind {
508 ZigClangAPValueUninitialized,
509 ZigClangAPValueInt,
510 ZigClangAPValueFloat,
511 ZigClangAPValueComplexInt,
512 ZigClangAPValueComplexFloat,
513 ZigClangAPValueLValue,
514 ZigClangAPValueVector,
515 ZigClangAPValueArray,
516 ZigClangAPValueStruct,
517 ZigClangAPValueUnion,
518 ZigClangAPValueMemberPointer,
519 ZigClangAPValueAddrLabelDiff,
520};
521
522515enum ZigClangDeclKind {
523516 ZigClangDeclAccessSpec,
524517 ZigClangDeclBlock,
......@@ -544,6 +537,7 @@ enum ZigClangDeclKind {
544537 ZigClangDeclObjCMethod,
545538 ZigClangDeclObjCProperty,
546539 ZigClangDeclBuiltinTemplate,
540 ZigClangDeclConcept,
547541 ZigClangDeclClassTemplate,
548542 ZigClangDeclFunctionTemplate,
549543 ZigClangDeclTypeAliasTemplate,
......@@ -585,8 +579,10 @@ enum ZigClangDeclKind {
585579 ZigClangDeclVarTemplatePartialSpecialization,
586580 ZigClangDeclEnumConstant,
587581 ZigClangDeclIndirectField,
582 ZigClangDeclOMPDeclareMapper,
588583 ZigClangDeclOMPDeclareReduction,
589584 ZigClangDeclUnresolvedUsingValue,
585 ZigClangDeclOMPAllocate,
590586 ZigClangDeclOMPRequires,
591587 ZigClangDeclOMPThreadPrivate,
592588 ZigClangDeclObjCPropertyImpl,