From da54e7cd00d81be7eb77a83474a734e4ce39eb98 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 16 Dec 2020 14:29:27 -0700 Subject: [PATCH] update clang.zig and translate-c for the clang C++ API changes --- src/clang.zig | 15 +++++++++++---- src/translate_c.zig | 5 ++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/clang.zig b/src/clang.zig index 350afb90ca..b336f1f9b3 100644 --- a/src/clang.zig +++ b/src/clang.zig @@ -408,7 +408,7 @@ pub const Expr = opaque { extern fn ZigClangExpr_getBeginLoc(*const Expr) SourceLocation; pub const EvaluateAsConstantExpr = ZigClangExpr_EvaluateAsConstantExpr; - extern fn ZigClangExpr_EvaluateAsConstantExpr(*const Expr, *ExprEvalResult, Expr_ConstExprUsage, *const ASTContext) bool; + extern fn ZigClangExpr_EvaluateAsConstantExpr(*const Expr, *ExprEvalResult, Expr_ConstantExprKind, *const ASTContext) bool; }; pub const FieldDecl = opaque { @@ -1250,6 +1250,8 @@ pub const CK = extern enum { IntegralCast, IntegralToBoolean, IntegralToFloating, + FloatingToFixedPoint, + FixedPointToFloating, FixedPointCast, FixedPointToIntegral, IntegralToFixedPoint, @@ -1356,6 +1358,7 @@ pub const DeclKind = extern enum { MSGuid, OMPDeclareMapper, OMPDeclareReduction, + TemplateParamObject, UnresolvedUsingValue, OMPAllocate, OMPRequires, @@ -1466,6 +1469,8 @@ pub const BuiltinTypeKind = extern enum { SveFloat64x4, SveBFloat16x4, SveBool, + VectorQuad, + VectorPair, Void, Bool, Char_U, @@ -1619,9 +1624,11 @@ pub const PreprocessedEntity_EntityKind = extern enum { InclusionDirectiveKind, }; -pub const Expr_ConstExprUsage = extern enum { - EvaluateForCodeGen, - EvaluateForMangling, +pub const Expr_ConstantExprKind = extern enum { + Normal, + NonClassTemplateArgument, + ClassTemplateArgument, + ImmediateInvocation, }; pub const UnaryExprOrTypeTrait_Kind = extern enum { diff --git a/src/translate_c.zig b/src/translate_c.zig index e57a1952af..e394c62087 100644 --- a/src/translate_c.zig +++ b/src/translate_c.zig @@ -2028,7 +2028,6 @@ fn transCCast( // 1. If src_type is an enum, determine the underlying signed int type // 2. Extend or truncate without changing signed-ness. // 3. Bit-cast to correct signed-ness - const src_type_is_signed = cIsSignedInteger(src_type) or cIsEnum(src_type); const src_int_type = if (cIsInteger(src_type)) src_type else cIntTypeForEnum(src_type); const src_int_expr = if (cIsInteger(src_type)) expr else try transEnumToInt(rp.c, expr); @@ -2859,7 +2858,7 @@ fn transDefault( fn transConstantExpr(rp: RestorePoint, scope: *Scope, expr: *const clang.Expr, used: ResultUsed) TransError!*ast.Node { var result: clang.ExprEvalResult = undefined; - if (!expr.EvaluateAsConstantExpr(&result, .EvaluateForCodeGen, rp.c.clang_context)) + if (!expr.EvaluateAsConstantExpr(&result, .Normal, rp.c.clang_context)) return revertAndWarn(rp, error.UnsupportedTranslation, expr.getBeginLoc(), "invalid constant expression", .{}); var val_node: ?*ast.Node = null; @@ -5881,7 +5880,7 @@ fn parseCPrimaryExprInner(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!* return error.ParseError; } - const ident_token = try appendTokenFmt(c, .Identifier, "{}_{}", .{slice, m.slice()}); + const ident_token = try appendTokenFmt(c, .Identifier, "{}_{}", .{ slice, m.slice() }); const identifier = try c.arena.create(ast.Node.OneToken); identifier.* = .{ .base = .{ .tag = .Identifier },