diff --git a/clang/lib/CodeGen/CGDecl.cpp b/clang/lib/CodeGen/CGDecl.cpp index fc16fb370dbaa..e143687479ee3 100644 --- a/clang/lib/CodeGen/CGDecl.cpp +++ b/clang/lib/CodeGen/CGDecl.cpp @@ -2453,7 +2453,10 @@ void CodeGenFunction::EmitParmDecl(const VarDecl &D, ParamValue Arg, assert((isa(D) || isa(D)) && "Invalid argument to EmitParmDecl"); - Arg.getAnyValue()->setName(D.getName()); + // Set the name of the parameter's initial value to make IR easier to + // read. Don't modify the names of globals. + if (!isa(Arg.getAnyValue())) + Arg.getAnyValue()->setName(D.getName()); QualType Ty = D.getType(); diff --git a/clang/test/CodeGenCXX/inheriting-constructor.cpp b/clang/test/CodeGenCXX/inheriting-constructor.cpp index b984ea177f211..37e9166becb4f 100644 --- a/clang/test/CodeGenCXX/inheriting-constructor.cpp +++ b/clang/test/CodeGenCXX/inheriting-constructor.cpp @@ -4,6 +4,24 @@ // RUN: %clang_cc1 -no-enable-noundef-analysis -std=c++11 -triple i386-windows -emit-llvm -o - %s | FileCheck %s --check-prefix=MSABI --check-prefix=WIN32 // RUN: %clang_cc1 -no-enable-noundef-analysis -std=c++11 -triple x86_64-windows -emit-llvm -o - %s | FileCheck %s --check-prefix=MSABI --check-prefix=WIN64 +// PR63618: make sure we generate definitions for all the globals defined in the test +// MSABI: @"?b@@3UB@@A" = {{.*}} zeroinitializer +// MSABI: @"?d@@3UD@@A" = {{.*}} zeroinitializer +// MSABI: @"?b@noninline_nonvirt@@3UB@1@A" = {{.*}} zeroinitializer +// MSABI: @"?c@noninline_nonvirt@@3UC@1@A" = {{.*}} zeroinitializer +// MSABI: @"?b@noninline_virt@@3UB@1@A" = {{.*}} zeroinitializer +// MSABI: @"?c@noninline_virt@@3UC@1@A" = {{.*}} zeroinitializer +// MSABI: @"?b@inalloca_nonvirt@@3UB@1@A" = {{.*}} zeroinitializer +// MSABI: @"?c@inalloca_nonvirt@@3UC@1@A" = {{.*}} zeroinitializer +// MSABI: @"?b@inalloca_virt@@3UB@1@A" = {{.*}} zeroinitializer +// MSABI: @"?c@inalloca_virt@@3UC@1@A" = {{.*}} zeroinitializer +// MSABI: @"?b@inline_nonvirt@@3UB@1@A" = {{.*}} zeroinitializer +// MSABI: @"?c@inline_nonvirt@@3UC@1@A" = {{.*}} zeroinitializer +// MSABI: @"?b@inline_virt@@3UB@1@A" = {{.*}} zeroinitializer +// MSABI: @"?c@inline_virt@@3UC@1@A" = {{.*}} zeroinitializer + +// MSABI-NOT: @this + // PR12219 struct A { A(int); virtual ~A(); }; struct B : A { using A::A; ~B(); };