authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-16 14:29:27-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-16 14:29:27-07:00
logda54e7cd00d81be7eb77a83474a734e4ce39eb98
treef8d83b59cde13876984536561a558fe0cc606458
parent755c5580267b246983fc0b2b2fb8dccfc261b9a0

update clang.zig and translate-c for the clang C++ API changes


2 files changed, 13 insertions(+), 7 deletions(-)

src/clang.zig+11-4
...@@ -408,7 +408,7 @@ pub const Expr = opaque {...@@ -408,7 +408,7 @@ pub const Expr = opaque {
408 extern fn ZigClangExpr_getBeginLoc(*const Expr) SourceLocation;408 extern fn ZigClangExpr_getBeginLoc(*const Expr) SourceLocation;
409409
410 pub const EvaluateAsConstantExpr = ZigClangExpr_EvaluateAsConstantExpr;410 pub const EvaluateAsConstantExpr = ZigClangExpr_EvaluateAsConstantExpr;
411 extern fn ZigClangExpr_EvaluateAsConstantExpr(*const Expr, *ExprEvalResult, Expr_ConstExprUsage, *const ASTContext) bool;411 extern fn ZigClangExpr_EvaluateAsConstantExpr(*const Expr, *ExprEvalResult, Expr_ConstantExprKind, *const ASTContext) bool;
412};412};
413413
414pub const FieldDecl = opaque {414pub const FieldDecl = opaque {
...@@ -1250,6 +1250,8 @@ pub const CK = extern enum {...@@ -1250,6 +1250,8 @@ pub const CK = extern enum {
1250 IntegralCast,1250 IntegralCast,
1251 IntegralToBoolean,1251 IntegralToBoolean,
1252 IntegralToFloating,1252 IntegralToFloating,
1253 FloatingToFixedPoint,
1254 FixedPointToFloating,
1253 FixedPointCast,1255 FixedPointCast,
1254 FixedPointToIntegral,1256 FixedPointToIntegral,
1255 IntegralToFixedPoint,1257 IntegralToFixedPoint,
...@@ -1356,6 +1358,7 @@ pub const DeclKind = extern enum {...@@ -1356,6 +1358,7 @@ pub const DeclKind = extern enum {
1356 MSGuid,1358 MSGuid,
1357 OMPDeclareMapper,1359 OMPDeclareMapper,
1358 OMPDeclareReduction,1360 OMPDeclareReduction,
1361 TemplateParamObject,
1359 UnresolvedUsingValue,1362 UnresolvedUsingValue,
1360 OMPAllocate,1363 OMPAllocate,
1361 OMPRequires,1364 OMPRequires,
...@@ -1466,6 +1469,8 @@ pub const BuiltinTypeKind = extern enum {...@@ -1466,6 +1469,8 @@ pub const BuiltinTypeKind = extern enum {
1466 SveFloat64x4,1469 SveFloat64x4,
1467 SveBFloat16x4,1470 SveBFloat16x4,
1468 SveBool,1471 SveBool,
1472 VectorQuad,
1473 VectorPair,
1469 Void,1474 Void,
1470 Bool,1475 Bool,
1471 Char_U,1476 Char_U,
...@@ -1619,9 +1624,11 @@ pub const PreprocessedEntity_EntityKind = extern enum {...@@ -1619,9 +1624,11 @@ pub const PreprocessedEntity_EntityKind = extern enum {
1619 InclusionDirectiveKind,1624 InclusionDirectiveKind,
1620};1625};
16211626
1622pub const Expr_ConstExprUsage = extern enum {1627pub const Expr_ConstantExprKind = extern enum {
1623 EvaluateForCodeGen,1628 Normal,
1624 EvaluateForMangling,1629 NonClassTemplateArgument,
1630 ClassTemplateArgument,
1631 ImmediateInvocation,
1625};1632};
16261633
1627pub const UnaryExprOrTypeTrait_Kind = extern enum {1634pub const UnaryExprOrTypeTrait_Kind = extern enum {
src/translate_c.zig+2-3
...@@ -2028,7 +2028,6 @@ fn transCCast(...@@ -2028,7 +2028,6 @@ fn transCCast(
2028 // 1. If src_type is an enum, determine the underlying signed int type2028 // 1. If src_type is an enum, determine the underlying signed int type
2029 // 2. Extend or truncate without changing signed-ness.2029 // 2. Extend or truncate without changing signed-ness.
2030 // 3. Bit-cast to correct signed-ness2030 // 3. Bit-cast to correct signed-ness
2031
2032 const src_type_is_signed = cIsSignedInteger(src_type) or cIsEnum(src_type);2031 const src_type_is_signed = cIsSignedInteger(src_type) or cIsEnum(src_type);
2033 const src_int_type = if (cIsInteger(src_type)) src_type else cIntTypeForEnum(src_type);2032 const src_int_type = if (cIsInteger(src_type)) src_type else cIntTypeForEnum(src_type);
2034 const src_int_expr = if (cIsInteger(src_type)) expr else try transEnumToInt(rp.c, expr);2033 const src_int_expr = if (cIsInteger(src_type)) expr else try transEnumToInt(rp.c, expr);
...@@ -2859,7 +2858,7 @@ fn transDefault(...@@ -2859,7 +2858,7 @@ fn transDefault(
28592858
2860fn transConstantExpr(rp: RestorePoint, scope: *Scope, expr: *const clang.Expr, used: ResultUsed) TransError!*ast.Node {2859fn transConstantExpr(rp: RestorePoint, scope: *Scope, expr: *const clang.Expr, used: ResultUsed) TransError!*ast.Node {
2861 var result: clang.ExprEvalResult = undefined;2860 var result: clang.ExprEvalResult = undefined;
2862 if (!expr.EvaluateAsConstantExpr(&result, .EvaluateForCodeGen, rp.c.clang_context))2861 if (!expr.EvaluateAsConstantExpr(&result, .Normal, rp.c.clang_context))
2863 return revertAndWarn(rp, error.UnsupportedTranslation, expr.getBeginLoc(), "invalid constant expression", .{});2862 return revertAndWarn(rp, error.UnsupportedTranslation, expr.getBeginLoc(), "invalid constant expression", .{});
28642863
2865 var val_node: ?*ast.Node = null;2864 var val_node: ?*ast.Node = null;
...@@ -5881,7 +5880,7 @@ fn parseCPrimaryExprInner(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!*...@@ -5881,7 +5880,7 @@ fn parseCPrimaryExprInner(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!*
5881 return error.ParseError;5880 return error.ParseError;
5882 }5881 }
58835882
5884 const ident_token = try appendTokenFmt(c, .Identifier, "{}_{}", .{slice, m.slice()});5883 const ident_token = try appendTokenFmt(c, .Identifier, "{}_{}", .{ slice, m.slice() });
5885 const identifier = try c.arena.create(ast.Node.OneToken);5884 const identifier = try c.arena.create(ast.Node.OneToken);
5886 identifier.* = .{5885 identifier.* = .{
5887 .base = .{ .tag = .Identifier },5886 .base = .{ .tag = .Identifier },