authorgravatar for ryan.saunderson88@gmail.comdimenus <ryan.saunderson88@gmail.com> 2017-11-13 16:37:46-06:00
committergravatar for ryan.saunderson88@gmail.comdimenus <ryan.saunderson88@gmail.com> 2017-11-13 16:37:46-06:00
log98e3c7911cbbd6dc0d0e45775e424e448b8c651a
tree11af22138bf8bcf5031bfaf46202ba688999d0f7
parenta890380b6aaf68f97a29f2224bcb06295c292596

Fixed duplicate decl detection for typedefs/enums


2 files changed, 10 insertions(+), 5 deletions(-)

src/link.cpp+7-2
......@@ -485,8 +485,13 @@ static void construct_linker_job_coff(LinkJob *lj) {
485485 continue;
486486 }
487487 if (link_lib->provided_explicitly) {
488 Buf *arg = buf_sprintf("-l%s", buf_ptr(link_lib->name));
489 lj->args.append(buf_ptr(arg));
488 if (lj->codegen->zig_target.env_type == ZigLLVM_GNU) {
489 Buf *arg = buf_sprintf("-l%s", buf_ptr(link_lib->name));
490 lj->args.append(buf_ptr(arg));
491 }
492 else {
493 lj->args.append(buf_ptr(link_lib->name));
494 }
490495 } else {
491496 buf_resize(def_contents, 0);
492497 buf_appendf(def_contents, "LIBRARY %s\nEXPORTS\n", buf_ptr(link_lib->name));
src/parsec.cpp+3-3
......@@ -2569,11 +2569,10 @@ static AstNode *resolve_typdef_as_builtin(Context *c, const TypedefNameDecl *typ
25692569}
25702570
25712571static AstNode *resolve_typedef_decl(Context *c, const TypedefNameDecl *typedef_decl) {
2572 auto existing_entry = c->decl_table.maybe_get((void*)typedef_decl);
2572 auto existing_entry = c->decl_table.maybe_get((void*)typedef_decl->getCanonicalDecl());
25732573 if (existing_entry) {
25742574 return existing_entry->value;
25752575 }
2576
25772576 QualType child_qt = typedef_decl->getUnderlyingType();
25782577 Buf *type_name = buf_create_from_str(decl_name(typedef_decl));
25792578
......@@ -2616,7 +2615,7 @@ static AstNode *resolve_typedef_decl(Context *c, const TypedefNameDecl *typedef_
26162615 add_global_var(c, type_name, type_node);
26172616
26182617 AstNode *symbol_node = trans_create_node_symbol(c, type_name);
2619 c->decl_table.put(typedef_decl, symbol_node);
2618 c->decl_table.put(typedef_decl->getCanonicalDecl(), symbol_node);
26202619 return symbol_node;
26212620}
26222621
......@@ -2742,6 +2741,7 @@ static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl) {
27422741 AstNode *symbol_node = trans_create_node_symbol(c, full_type_name);
27432742 add_global_weak_alias(c, bare_name, full_type_name);
27442743 add_global_var(c, full_type_name, enum_node);
2744 c->decl_table.put(enum_decl->getCanonicalDecl(), symbol_node);
27452745 return symbol_node;
27462746 }
27472747}