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) {
34343434 AstNode *enum_node = trans_create_node(c, NodeTypeContainerDecl);
34353435 enum_node->data.container_decl.kind = ContainerKindEnum;
34363436 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 {
34383443 enum_node->data.container_decl.init_arg_expr = tag_int_type;
34393444 }
34403445