authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-05-23 19:28:14-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-05-23 19:28:14-04:00
log395786fd50897ec4e07d9fa0e666251715fa712b
treef3e258206059e8db6dc6d49fb934bb6c68c454ed
parent88f5e3a60d6ea528f27935c63aaf3312d736cdbe

translate-c: fix regression in param name mangling


1 files changed, 3 insertions(+), 7 deletions(-)

src-self-hosted/translate_c.zig+3-7
...@@ -592,19 +592,15 @@ fn visitFnDecl(c: *Context, fn_decl: *const ZigClangFunctionDecl) Error!void {...@@ -592,19 +592,15 @@ fn visitFnDecl(c: *Context, fn_decl: *const ZigClangFunctionDecl) Error!void {
592 } else592 } else
593 return failDecl(c, fn_decl_loc, fn_name, "function {} parameter has no name", .{fn_name});593 return failDecl(c, fn_decl_loc, fn_name, "function {} parameter has no name", .{fn_name});
594594
595 const mangled_param_name = try block_scope.makeMangledName(c, param_name);
596
597 const c_param = ZigClangFunctionDecl_getParamDecl(fn_decl, param_id);595 const c_param = ZigClangFunctionDecl_getParamDecl(fn_decl, param_id);
598 const qual_type = ZigClangParmVarDecl_getOriginalType(c_param);596 const qual_type = ZigClangParmVarDecl_getOriginalType(c_param);
599 const is_const = ZigClangQualType_isConstQualified(qual_type);597 const is_const = ZigClangQualType_isConstQualified(qual_type);
600598
601 const arg_name = blk: {599 const mangled_param_name = try block_scope.makeMangledName(c, param_name);
602 const param_prefix = if (is_const) "" else "arg_";
603 const bare_arg_name = try std.fmt.allocPrint(c.arena, "{}{}", .{ param_prefix, mangled_param_name });
604 break :blk try block_scope.makeMangledName(c, bare_arg_name);
605 };
606600
607 if (!is_const) {601 if (!is_const) {
602 const bare_arg_name = try std.fmt.allocPrint(c.arena, "arg_{}", .{ mangled_param_name });
603 const arg_name = try block_scope.makeMangledName(c, bare_arg_name);
608 const node = try transCreateNodeVarDecl(c, false, false, mangled_param_name);604 const node = try transCreateNodeVarDecl(c, false, false, mangled_param_name);
609 node.eq_token = try appendToken(c, .Equal, "=");605 node.eq_token = try appendToken(c, .Equal, "=");
610 node.init_node = try transCreateNodeIdentifier(c, arg_name);606 node.init_node = try transCreateNodeIdentifier(c, arg_name);