authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-12-01 00:37:15-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-12-01 00:37:15-05:00
logb4120423a5f0785e950739ab8c1324691971d680
tree6d0763dfe24b03ccb3e815dd1e1f48494c1b1593
parent264c86853b714482d006baa38482a6f7d55e8d94

translate-c: only emit enum tag type if not c_int or c_uint


1 files changed, 6 insertions(+), 1 deletions(-)

src/translate_c.cpp+6-1
...@@ -3434,7 +3434,12 @@ static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl) {...@@ -3434,7 +3434,12 @@ static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl) {
3434 AstNode *enum_node = trans_create_node(c, NodeTypeContainerDecl);3434 AstNode *enum_node = trans_create_node(c, NodeTypeContainerDecl);
3435 enum_node->data.container_decl.kind = ContainerKindEnum;3435 enum_node->data.container_decl.kind = ContainerKindEnum;
3436 enum_node->data.container_decl.layout = ContainerLayoutExtern;3436 enum_node->data.container_decl.layout = ContainerLayoutExtern;
3437 if (!c_is_builtin_type(c, enum_decl->getIntegerType(), BuiltinType::UInt)) {3437 // TODO only emit this tag type if the enum tag type is not the default.
3438 // I don't know what the default is, need to figure out how clang is deciding.
3439 // it appears to at least be different across gcc/msvc
3440 if (!c_is_builtin_type(c, enum_decl->getIntegerType(), BuiltinType::UInt) &&
3441 !c_is_builtin_type(c, enum_decl->getIntegerType(), BuiltinType::Int))
3442 {
3438 enum_node->data.container_decl.init_arg_expr = tag_int_type;3443 enum_node->data.container_decl.init_arg_expr = tag_int_type;
3439 }3444 }
34403445