r327738 - [MS] Don't escape MS C++ names with \01

Nico Weber via cfe-commits cfe-commits at lists.llvm.org
Sun Mar 18 03:54:34 PDT 2018


Was this discussed or reviewed somewhere? (It looks like a good change to
me, I'm just wondering if there was something that triggered this and would
like to read about the background if there's anything to read.)

On Fri, Mar 16, 2018, 9:39 PM Reid Kleckner via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> Modified: cfe/trunk/test/CodeGenCXX/microsoft-abi-vmemptr-conflicts.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vmemptr-conflicts.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/microsoft-abi-vmemptr-conflicts.cpp
> (original)
> +++ cfe/trunk/test/CodeGenCXX/microsoft-abi-vmemptr-conflicts.cpp Fri Mar
> 16 13:36:49 2018
> @@ -19,11 +19,11 @@ void f(C *c) {
>  }
>  }
>
> -// CHECK-LABEL: define dso_local void @"\01?f at num_params@@YAXPAUC at 1@@Z"(%"struct.num_params::C"*
> %c)
> -// CHECK: call x86_thiscallcc void bitcast (void
> (%"struct.num_params::C"*, ...)* @"\01??_9C at num_params@@$BA at AE" to void
> (%"struct.num_params::C"*, i32)*)(%"struct.num_params::C"* %{{.*}}, i32 0)
> -// CHECK: call x86_thiscallcc void bitcast (void
> (%"struct.num_params::C"*, ...)* @"\01??_9C at num_params@@$BA at AE" to void
> (%"struct.num_params::C"*, i32, i32)*)(%"struct.num_params::C"* %{{.*}},
> i32 0, i32 0)
> +// CHECK-LABEL: define dso_local void @"?f at num_params@@YAXPAUC at 1@@Z"(%"struct.num_params::C"*
> %c)
> +// CHECK: call x86_thiscallcc void bitcast (void
> (%"struct.num_params::C"*, ...)* @"??_9C at num_params@@$BA at AE" to void
> (%"struct.num_params::C"*, i32)*)(%"struct.num_params::C"* %{{.*}}, i32 0)
> +// CHECK: call x86_thiscallcc void bitcast (void
> (%"struct.num_params::C"*, ...)* @"??_9C at num_params@@$BA at AE" to void
> (%"struct.num_params::C"*, i32, i32)*)(%"struct.num_params::C"* %{{.*}},
> i32 0, i32 0)
>
> -// CHECK-LABEL: define linkonce_odr x86_thiscallcc void
> @"\01??_9C at num_params@@$BA at AE"(%"struct.num_params::C"* %this, ...)
> {{.*}} comdat
> +// CHECK-LABEL: define linkonce_odr x86_thiscallcc void @"??_9C at num_params
> @@$BA at AE"(%"struct.num_params::C"* %this, ...) {{.*}} comdat
>  // CHECK: musttail call x86_thiscallcc void (%"struct.num_params::C"*,
> ...) %{{.*}}(%"struct.num_params::C"* %{{.*}}, ...)
>  // CHECK-NEXT: ret void
>
> @@ -41,11 +41,11 @@ long long f(C *c) {
>  }
>  }
>
> -// CHECK-LABEL: define dso_local i64 @"\01?f at i64_return@@YA_JPAUC at 1@@Z"(%"struct.i64_return::C"*
> %c)
> -// CHECK: call x86_thiscallcc i32 bitcast (void
> (%"struct.i64_return::C"*, ...)* @"\01??_9C at i64_return@@$BA at AE" to i32
> (%"struct.i64_return::C"*)*)(%"struct.i64_return::C"* %{{.*}})
> -// CHECK: call x86_thiscallcc i64 bitcast (void
> (%"struct.i64_return::C"*, ...)* @"\01??_9C at i64_return@@$BA at AE" to i64
> (%"struct.i64_return::C"*)*)(%"struct.i64_return::C"* %{{.*}})
> +// CHECK-LABEL: define dso_local i64 @"?f at i64_return@@YA_JPAUC at 1@@Z"(%"struct.i64_return::C"*
> %c)
> +// CHECK: call x86_thiscallcc i32 bitcast (void
> (%"struct.i64_return::C"*, ...)* @"??_9C at i64_return@@$BA at AE" to i32
> (%"struct.i64_return::C"*)*)(%"struct.i64_return::C"* %{{.*}})
> +// CHECK: call x86_thiscallcc i64 bitcast (void
> (%"struct.i64_return::C"*, ...)* @"??_9C at i64_return@@$BA at AE" to i64
> (%"struct.i64_return::C"*)*)(%"struct.i64_return::C"* %{{.*}})
>
> -// CHECK-LABEL: define linkonce_odr x86_thiscallcc void
> @"\01??_9C at i64_return@@$BA at AE"(%"struct.i64_return::C"* %this, ...)
> {{.*}} comdat
> +// CHECK-LABEL: define linkonce_odr x86_thiscallcc void @"??_9C at i64_return
> @@$BA at AE"(%"struct.i64_return::C"* %this, ...) {{.*}} comdat
>  // CHECK: musttail call x86_thiscallcc void (%"struct.i64_return::C"*,
> ...) %{{.*}}(%"struct.i64_return::C"* %{{.*}}, ...)
>  // CHECK-NEXT: ret void
>
> @@ -63,11 +63,11 @@ void f(C *c) {
>  }
>  }
>
> -// CHECK-LABEL: define dso_local void @"\01?f at sret@@YAXPAUC at 1@@Z"(%"struct.sret::C"*
> %c)
> -// CHECK: call x86_thiscallcc i32 bitcast (void (%"struct.sret::C"*,
> ...)* @"\01??_9C at sret@@$BA at AE" to i32
> (%"struct.sret::C"*)*)(%"struct.sret::C"* %{{.*}})
> -// CHECK: call x86_thiscallcc void bitcast (void (%"struct.sret::C"*,
> ...)* @"\01??_9C at sret@@$BA at AE" to void (%"struct.sret::C"*,
> %"struct.sret::Big"*)*)(%"struct.sret::C"* %{{.*}}, %"struct.sret::Big"*
> sret %{{.*}})
> +// CHECK-LABEL: define dso_local void @"?f at sret@@YAXPAUC at 1@@Z"(%"struct.sret::C"*
> %c)
> +// CHECK: call x86_thiscallcc i32 bitcast (void (%"struct.sret::C"*,
> ...)* @"??_9C at sret@@$BA at AE" to i32
> (%"struct.sret::C"*)*)(%"struct.sret::C"* %{{.*}})
> +// CHECK: call x86_thiscallcc void bitcast (void (%"struct.sret::C"*,
> ...)* @"??_9C at sret@@$BA at AE" to void (%"struct.sret::C"*,
> %"struct.sret::Big"*)*)(%"struct.sret::C"* %{{.*}}, %"struct.sret::Big"*
> sret %{{.*}})
>
> -// CHECK-LABEL: define linkonce_odr x86_thiscallcc void @"\01??_9C at sret
> @@$BA at AE"(%"struct.sret::C"* %this, ...) {{.*}} comdat
> +// CHECK-LABEL: define linkonce_odr x86_thiscallcc void @"??_9C at sret
> @@$BA at AE"(%"struct.sret::C"* %this, ...) {{.*}} comdat
>  // CHECK: musttail call x86_thiscallcc void (%"struct.sret::C"*, ...)
> %{{.*}}(%"struct.sret::C"* %{{.*}}, ...)
>  // CHECK-NEXT: ret void
>
> @@ -92,10 +92,10 @@ void f(C *c) {
>  }
>  }
>
> -// CHECK-LABEL: define dso_local void @"\01?f at cdecl_inalloca@@YAXPAUC at 1@@Z"(%"struct.cdecl_inalloca::C"*
> %c)
> -// CHECK: call void bitcast (void (%"struct.cdecl_inalloca::C"*, ...)*
> @"\01??_9C at cdecl_inalloca@@$BA at AA" to void
> (%"struct.cdecl_inalloca::C"*)*)(%"struct.cdecl_inalloca::C"* %{{.*}})
> -// CHECK: call void bitcast (void (%"struct.cdecl_inalloca::C"*, ...)*
> @"\01??_9C at cdecl_inalloca@@$BA at AA" to void (<{
> %"struct.cdecl_inalloca::C"*, %"struct.cdecl_inalloca::Big" }>*)*)(<{
> %"struct.cdecl_inalloca::C"*, %"struct.cdecl_inalloca::Big" }>* inalloca
> %{{.*}})
> +// CHECK-LABEL: define dso_local void @"?f at cdecl_inalloca@@YAXPAUC at 1@@Z"(%"struct.cdecl_inalloca::C"*
> %c)
> +// CHECK: call void bitcast (void (%"struct.cdecl_inalloca::C"*, ...)*
> @"??_9C at cdecl_inalloca@@$BA at AA" to void
> (%"struct.cdecl_inalloca::C"*)*)(%"struct.cdecl_inalloca::C"* %{{.*}})
> +// CHECK: call void bitcast (void (%"struct.cdecl_inalloca::C"*, ...)*
> @"??_9C at cdecl_inalloca@@$BA at AA" to void (<{ %"struct.cdecl_inalloca::C"*,
> %"struct.cdecl_inalloca::Big" }>*)*)(<{ %"struct.cdecl_inalloca::C"*,
> %"struct.cdecl_inalloca::Big" }>* inalloca %{{.*}})
>
> -// CHECK-LABEL: define linkonce_odr void @"\01??_9C at cdecl_inalloca
> @@$BA at AA"(%"struct.cdecl_inalloca::C"* %this, ...) {{.*}} comdat
> +// CHECK-LABEL: define linkonce_odr void @"??_9C at cdecl_inalloca@@$BA at AA"(%"struct.cdecl_inalloca::C"*
> %this, ...) {{.*}} comdat
>  // CHECK: musttail call void (%"struct.cdecl_inalloca::C"*, ...)
> %{{.*}}(%"struct.cdecl_inalloca::C"* %{{.*}}, ...)
>  // CHECK-NEXT: ret void
>
> Modified: cfe/trunk/test/CodeGenCXX/microsoft-abi-vmemptr-fastcall.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vmemptr-fastcall.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/microsoft-abi-vmemptr-fastcall.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/microsoft-abi-vmemptr-fastcall.cpp Fri Mar
> 16 13:36:49 2018
> @@ -7,7 +7,7 @@ void (__fastcall A::*doit())(int, int) {
>    return &A::f;
>  }
>
> -// CHECK: define linkonce_odr x86_fastcallcc void @"\01??_9A@@$BA at AI"(%struct.A*
> inreg %this, ...) {{.*}} comdat align 2 {
> +// CHECK: define linkonce_odr x86_fastcallcc void @"??_9A@@$BA at AI"(%struct.A*
> inreg %this, ...) {{.*}} comdat align 2 {
>  // CHECK: [[VPTR:%.*]] = getelementptr inbounds void (%struct.A*, ...)*,
> void (%struct.A*, ...)** %{{.*}}, i64 0
>  // CHECK: [[CALLEE:%.*]] = load void (%struct.A*, ...)*, void
> (%struct.A*, ...)** [[VPTR]]
>  // CHECK: musttail call x86_fastcallcc void (%struct.A*, ...)
> [[CALLEE]](%struct.A* inreg %{{.*}}, ...)
>
> Modified: cfe/trunk/test/CodeGenCXX/microsoft-abi-vmemptr-vbase.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vmemptr-vbase.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/microsoft-abi-vmemptr-vbase.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/microsoft-abi-vmemptr-vbase.cpp Fri Mar 16
> 13:36:49 2018
> @@ -8,5 +8,5 @@ struct B : virtual A {
>      virtual void f();
>  };
>  void (B::*MemPtr)(void) = &B::f;
> -// CHECK-DAG: @"\01?MemPtr at PR23452@@3P8B at 1@AEXXZQ21@" = dso_local global
> { i8*, i32, i32 } { i8* bitcast ({{.*}} @"\01??_9B at PR23452@@$BA at AE" to
> i8*), i32 0, i32 4 }
> +// CHECK-DAG: @"?MemPtr at PR23452@@3P8B at 1@AEXXZQ21@" = dso_local global {
> i8*, i32, i32 } { i8* bitcast ({{.*}} @"??_9B at PR23452@@$BA at AE" to i8*),
> i32 0, i32 4 }
>  }
>
> Modified:
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-no-thunks.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-no-thunks.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> ---
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-no-thunks.cpp
> (original)
> +++
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-no-thunks.cpp
> Fri Mar 16 13:36:49 2018
> @@ -24,8 +24,8 @@ struct X : A, B {
>    // CHECK-LABEL: VFTable indices for 'test1::X' (1 entry)
>    // CHECK-NEXT:   0 | void test1::X::f()
>
> -  // MANGLING-DAG: @"\01??_7X at test1@@6BA at 1@@"
> -  // MANGLING-DAG: @"\01??_7X at test1@@6BB at 1@@"
> +  // MANGLING-DAG: @"??_7X at test1@@6BA at 1@@"
> +  // MANGLING-DAG: @"??_7X at test1@@6BB at 1@@"
>
>    // Overrides only the left child's method (A::f), needs no thunks.
>    virtual void f();
> @@ -108,7 +108,7 @@ struct X : Empty, A {
>    // CHECK-LABEL: VFTable indices for 'test4::X' (1 entry).
>    // CHECK-NEXT:   0 | void test4::X::f()
>
> -  // MANGLING-DAG: @"\01??_7X at test4@@6B@"
> +  // MANGLING-DAG: @"??_7X at test4@@6B@"
>
>    virtual void f();
>  } x;
> @@ -141,8 +141,8 @@ struct X : C {
>    // CHECK-LABEL: VFTable indices for 'test5::X' (1 entry).
>    // CHECK-NEXT:   0 | void test5::X::f()
>
> -  // MANGLING-DAG: @"\01??_7X at test5@@6BA at 1@@"
> -  // MANGLING-DAG: @"\01??_7X at test5@@6BB at 1@@"
> +  // MANGLING-DAG: @"??_7X at test5@@6BA at 1@@"
> +  // MANGLING-DAG: @"??_7X at test5@@6BB at 1@@"
>
>    // Overrides both C::f and A::f.
>    virtual void f();
> @@ -241,8 +241,8 @@ struct X : A, B {
>    // CHECK-LABEL: VFTable indices for 'test8::X' (1 entry).
>    // CHECK-NEXT:   1 | void test8::X::h()
>
> -  // MANGLING-DAG: @"\01??_7X at test8@@6BA at 1@@"
> -  // MANGLING-DAG: @"\01??_7X at test8@@6BB at 1@@"
> +  // MANGLING-DAG: @"??_7X at test8@@6BA at 1@@"
> +  // MANGLING-DAG: @"??_7X at test8@@6BB at 1@@"
>
>    virtual void h();
>  } x;
> @@ -290,10 +290,10 @@ struct X : C, D {
>    // CHECK-LABEL: VFTable indices for 'test9::X' (1 entry).
>    // CHECK-NEXT:   1 | void test9::X::z()
>
> -  // MANGLING-DAG: @"\01??_7X at test9@@6BA at 1@C at 1@@"
> -  // MANGLING-DAG: @"\01??_7X at test9@@6BA at 1@D at 1@@"
> -  // MANGLING-DAG: @"\01??_7X at test9@@6BB at 1@C at 1@@"
> -  // MANGLING-DAG: @"\01??_7X at test9@@6BB at 1@D at 1@@"
> +  // MANGLING-DAG: @"??_7X at test9@@6BA at 1@C at 1@@"
> +  // MANGLING-DAG: @"??_7X at test9@@6BA at 1@D at 1@@"
> +  // MANGLING-DAG: @"??_7X at test9@@6BB at 1@C at 1@@"
> +  // MANGLING-DAG: @"??_7X at test9@@6BB at 1@D at 1@@"
>
>    virtual void z();
>  } x;
>
> Modified:
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-pure-virtual.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-pure-virtual.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> ---
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-pure-virtual.cpp
> (original)
> +++
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-pure-virtual.cpp
> Fri Mar 16 13:36:49 2018
> @@ -23,8 +23,8 @@ struct C : A, B {
>    // CHECK-NEXT:   via vfptr at offset 4
>    // CHECK-NEXT:   0 | void C::g()
>
> -  // MANGLING-DAG: @"\01??_7C@@6BA@@@"
> -  // MANGLING-DAG: @"\01??_7C@@6BB@@@"
> +  // MANGLING-DAG: @"??_7C@@6BA@@@"
> +  // MANGLING-DAG: @"??_7C@@6BB@@@"
>
>    // Overrides only the right child's method (B::g),
>    // needs this adjustment but not thunks.
>
> Modified:
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-return-adjustment.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-return-adjustment.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> ---
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-return-adjustment.cpp
> (original)
> +++
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-return-adjustment.cpp
> Fri Mar 16 13:36:49 2018
> @@ -36,7 +36,7 @@ struct X : D {
>    // CHECK-LABEL: VFTable indices for 'test1::X' (1 entry).
>    // CHECK-NEXT:   2 | test1::C *test1::X::foo()
>
> -  // MANGLING-DAG: @"\01??_7X at test1@@6B@"
> +  // MANGLING-DAG: @"??_7X at test1@@6B@"
>
>    virtual C* foo();
>  } x;
>
> Modified:
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-this-adjustment.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-this-adjustment.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> ---
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-this-adjustment.cpp
> (original)
> +++
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-this-adjustment.cpp
> Fri Mar 16 13:36:49 2018
> @@ -29,8 +29,8 @@ struct X : A, B {
>    // CHECK-LABEL: VFTable indices for 'test1::X' (1 entry).
>    // CHECK-NEXT:   0 | void test1::X::g()
>
> -  // BITCODE-DAG: @"\01??_7X at test1@@6BA at 1@@"
> -  // BITCODE-DAG: @"\01??_7X at test1@@6BB at 1@@"
> +  // BITCODE-DAG: @"??_7X at test1@@6BA at 1@@"
> +  // BITCODE-DAG: @"??_7X at test1@@6BB at 1@@"
>
>    virtual void g();
>  } x;
> @@ -71,9 +71,9 @@ struct X : A, B, C {
>    // CHECK-NEXT:   via vfptr at offset 4
>    // CHECK-NEXT:   0 | void test2::X::g()
>
> -  // BITCODE-DAG: @"\01??_7X at test2@@6BA at 1@@"
> -  // BITCODE-DAG: @"\01??_7X at test2@@6BB at 1@@"
> -  // BITCODE-DAG: @"\01??_7X at test2@@6BC at 1@@"
> +  // BITCODE-DAG: @"??_7X at test2@@6BA at 1@@"
> +  // BITCODE-DAG: @"??_7X at test2@@6BB at 1@@"
> +  // BITCODE-DAG: @"??_7X at test2@@6BC at 1@@"
>
>    virtual void g();
>  } x;
> @@ -154,7 +154,7 @@ struct C : public A, public B {
>    virtual int bar();
>  };
>
> -// BITCODE-LABEL: define {{.*}}\01?ffun at test4@@YAXAAUC at 1@@Z
> +// BITCODE-LABEL: define {{.*}}"?ffun at test4@@YAXAAUC at 1@@Z
>  void ffun(C &c) {
>    // BITCODE: [[THIS1:%.+]] = bitcast %"struct.test4::C"* {{.*}} to i8*
>    // BITCODE: [[THIS2:%.+]] = getelementptr inbounds i8, i8* [[THIS1]],
> i32 4
> @@ -162,7 +162,7 @@ void ffun(C &c) {
>    c.bar();
>  }
>
> -// BITCODE-LABEL: define {{.*}}\01?fop at test4@@YAXAAUC at 1@@Z
> +// BITCODE-LABEL: define {{.*}}"?fop at test4@@YAXAAUC at 1@@Z
>  void fop(C &c) {
>    // BITCODE: [[THIS1:%.+]] = bitcast %"struct.test4::C"* {{.*}} to i8*
>    // BITCODE: [[THIS2:%.+]] = getelementptr inbounds i8, i8* [[THIS1]],
> i32 4
> @@ -189,12 +189,12 @@ void C::g(NonTrivial o) {
>    whatsthis = this;
>  }
>
> -// BITCODE-LABEL: define dso_local void @"\01?g at C@pr30293@
> @UAAXUNonTrivial at 2@@Z"(<{ i8*, %"struct.pr30293::NonTrivial" }>* inalloca)
> +// BITCODE-LABEL: define dso_local void @"?g at C@pr30293@@UAAXUNonTrivial at 2@@Z"(<{
> i8*, %"struct.pr30293::NonTrivial" }>* inalloca)
>  // BITCODE: %[[thisaddr:[^ ]*]] = getelementptr inbounds <{ i8*,
> %"struct.pr30293::NonTrivial" }>, <{ i8*, %"struct.pr30293::NonTrivial" }>*
> {{.*}}, i32 0, i32 0
>  // BITCODE: %[[thisaddr1:[^ ]*]] = bitcast i8** %[[thisaddr]] to
> %"struct.pr30293::C"**
>  // BITCODE: %[[this1:[^ ]*]] = load %"struct.pr30293::C"*,
> %"struct.pr30293::C"** %[[thisaddr1]], align 4
>  // BITCODE: %[[this2:[^ ]*]] = bitcast %"struct.pr30293::C"* %[[this1]]
> to i8*
>  // BITCODE: %[[this3:[^ ]*]] = getelementptr inbounds i8, i8* %[[this2]],
> i32 -4
>  // BITCODE: %[[this4:[^ ]*]] = bitcast i8* %[[this3]] to
> %"struct.pr30293::C"*
> -// BITCODE: store %"struct.pr30293::C"* %[[this4]],
> %"struct.pr30293::C"** @"\01?whatsthis at pr30293@@3PAUC at 1@A", align 4
> +// BITCODE: store %"struct.pr30293::C"* %[[this4]],
> %"struct.pr30293::C"** @"?whatsthis at pr30293@@3PAUC at 1@A", align 4
>  }
>
> Modified: cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-return-thunks.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-return-thunks.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-return-thunks.cpp
> (original)
> +++ cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-return-thunks.cpp Fri
> Mar 16 13:36:49 2018
> @@ -26,10 +26,10 @@ J::J() {}
>  // VFTABLES-NEXT:       [return adjustment (to type 'struct test1::C *'):
> 0 non-virtual]
>  // VFTABLES-NEXT:   2 | test1::D *test1::J::foo()
>
> -// GLOBALS-LABEL: @"\01??_7J at test1@@6B@" = linkonce_odr unnamed_addr
> constant { [3 x i8*] }
> -// GLOBALS: @"\01?foo at J@test1@@QAEPAUB at 2@XZ"
> -// GLOBALS: @"\01?foo at J@test1@@QAEPAUC at 2@XZ"
> -// GLOBALS: @"\01?foo at J@test1@@UAEPAUD at 2@XZ"
> +// GLOBALS-LABEL: @"??_7J at test1@@6B@" = linkonce_odr unnamed_addr
> constant { [3 x i8*] }
> +// GLOBALS: @"?foo at J@test1@@QAEPAUB at 2@XZ"
> +// GLOBALS: @"?foo at J@test1@@QAEPAUC at 2@XZ"
> +// GLOBALS: @"?foo at J@test1@@UAEPAUD at 2@XZ"
>
>  K::K() {}
>
> @@ -44,26 +44,26 @@ K::K() {}
>
>  // Only B to C requires adjustment, but we get 3 thunks in K's vftable,
> two of
>  // which are trivial.
> -// GLOBALS-LABEL: @"\01??_7K at test1@@6B@" = linkonce_odr unnamed_addr
> constant { [4 x i8*] }
> -// GLOBALS: @"\01?foo at K@test1@@QAEPAUB at 2@XZ"
> -// GLOBALS: @"\01?foo at K@test1@@QAEPAUC at 2@XZ"
> -// GLOBALS: @"\01?foo at K@test1@@QAEPAUD at 2@XZ"
> -// GLOBALS: @"\01?foo at K@test1@@UAEPAUE at 2@XZ"
> +// GLOBALS-LABEL: @"??_7K at test1@@6B@" = linkonce_odr unnamed_addr
> constant { [4 x i8*] }
> +// GLOBALS: @"?foo at K@test1@@QAEPAUB at 2@XZ"
> +// GLOBALS: @"?foo at K@test1@@QAEPAUC at 2@XZ"
> +// GLOBALS: @"?foo at K@test1@@QAEPAUD at 2@XZ"
> +// GLOBALS: @"?foo at K@test1@@UAEPAUE at 2@XZ"
>
>  //  This thunk has a return adjustment.
> -// CODEGEN-LABEL: define {{.*}} @"\01?foo at K@test1@@QAEPAUB at 2@XZ"
> -// CODEGEN: call {{.*}} @"\01?foo at K@test1@@UAEPAUE at 2@XZ"
> +// CODEGEN-LABEL: define {{.*}} @"?foo at K@test1@@QAEPAUB at 2@XZ"
> +// CODEGEN: call {{.*}} @"?foo at K@test1@@UAEPAUE at 2@XZ"
>  // CODEGEN: icmp {{.*}}, null
>  // CODEGEN: getelementptr
>  // CODEGEN: ret
>
>  //  These two don't.
> -// CODEGEN-LABEL: define {{.*}} @"\01?foo at K@test1@@QAEPAUC at 2@XZ"
> -// CODEGEN: call {{.*}} @"\01?foo at K@test1@@UAEPAUE at 2@XZ"
> +// CODEGEN-LABEL: define {{.*}} @"?foo at K@test1@@QAEPAUC at 2@XZ"
> +// CODEGEN: call {{.*}} @"?foo at K@test1@@UAEPAUE at 2@XZ"
>  // CODEGEN-NEXT: ret
>
> -// CODEGEN-LABEL: define {{.*}} @"\01?foo at K@test1@@QAEPAUD at 2@XZ"
> -// CODEGEN: call {{.*}} @"\01?foo at K@test1@@UAEPAUE at 2@XZ"
> +// CODEGEN-LABEL: define {{.*}} @"?foo at K@test1@@QAEPAUD at 2@XZ"
> +// CODEGEN: call {{.*}} @"?foo at K@test1@@UAEPAUE at 2@XZ"
>  // CODEGEN-NEXT: ret
>
>  }
> @@ -90,7 +90,7 @@ J::J() {}
>  // VFTABLES-NEXT:         [return adjustment (to type 'struct test2::B
> *'): 4 non-virtual]
>  // VFTABLES-NEXT:    1 | test2::D *test2::J::foo()
>
> -// GLOBALS-LABEL: @"\01??_7J at test2@@6B@" = linkonce_odr unnamed_addr
> constant { [2 x i8*] }
> +// GLOBALS-LABEL: @"??_7J at test2@@6B@" = linkonce_odr unnamed_addr
> constant { [2 x i8*] }
>
>  K::K() {}
>
> @@ -101,7 +101,7 @@ K::K() {}
>  // VFTABLES-NEXT:         [return adjustment (to type 'struct test2::D
> *'): 0 non-virtual]
>  // VFTABLES-NEXT:    2 | test2::E *test2::K::foo()
>
> -// GLOBALS-LABEL: @"\01??_7K at test2@@6B@" = linkonce_odr unnamed_addr
> constant { [3 x i8*] }
> +// GLOBALS-LABEL: @"??_7K at test2@@6B@" = linkonce_odr unnamed_addr
> constant { [3 x i8*] }
>
>  }
>
> @@ -124,9 +124,9 @@ struct C : virtual A, B {
>
>  C::C() {}
>
> -// GLOBALS-LABEL: @"\01??_7C at pr20479@@6B@" = linkonce_odr unnamed_addr
> constant { [2 x i8*] }
> -// GLOBALS: @"\01?f at B@pr20479@@QAEPAUA at 2@XZ"
> -// GLOBALS: @"\01?f at B@pr20479@@UAEPAU12 at XZ"
> +// GLOBALS-LABEL: @"??_7C at pr20479@@6B@" = linkonce_odr unnamed_addr
> constant { [2 x i8*] }
> +// GLOBALS: @"?f at B@pr20479@@QAEPAUA at 2@XZ"
> +// GLOBALS: @"?f at B@pr20479@@UAEPAU12 at XZ"
>  }
>
>  namespace pr21073 {
> @@ -151,9 +151,9 @@ struct C : virtual A, virtual B {
>
>  C::C() {}
>
> -// GLOBALS-LABEL: @"\01??_7C at pr21073@@6B@" = linkonce_odr unnamed_addr
> constant { [2 x i8*] }
> -// GLOBALS: @"\01?f at B@pr21073@@WPPPPPPPI at AEPAUA@2 at XZ"
> -// GLOBALS: @"\01?f at B@pr21073@@WPPPPPPPI at AEPAU12@XZ"
> +// GLOBALS-LABEL: @"??_7C at pr21073@@6B@" = linkonce_odr unnamed_addr
> constant { [2 x i8*] }
> +// GLOBALS: @"?f at B@pr21073@@WPPPPPPPI at AEPAUA@2 at XZ"
> +// GLOBALS: @"?f at B@pr21073@@WPPPPPPPI at AEPAU12@XZ"
>  }
>
>  namespace pr21073_2 {
> @@ -168,9 +168,9 @@ D::D() {}
>  // VFTABLES-NEXT:       [return adjustment (to type 'struct pr21073_2::A
> *'): vbase #1, 0 non-virtual]
>  // VFTABLES-NEXT:   1 | pr21073_2::C *pr21073_2::C::foo()
>
> -// GLOBALS-LABEL: @"\01??_7D at pr21073_2@@6B@" = {{.*}} constant { [2 x
> i8*] }
> -// GLOBALS: @"\01?foo at C@pr21073_2@@QAEPAUA at 2@XZ"
> -// GLOBALS: @"\01?foo at C@pr21073_2@@UAEPAU12 at XZ"
> +// GLOBALS-LABEL: @"??_7D at pr21073_2@@6B@" = {{.*}} constant { [2 x i8*] }
> +// GLOBALS: @"?foo at C@pr21073_2@@QAEPAUA at 2@XZ"
> +// GLOBALS: @"?foo at C@pr21073_2@@UAEPAU12 at XZ"
>  }
>
>  namespace test3 {
> @@ -196,10 +196,10 @@ D::D() {}
>  // VFTABLES-NEXT:       [return adjustment (to type 'struct test3::D *'):
> 0 non-virtual]
>  // VFTABLES-NEXT:       [this adjustment: vtordisp at -4, 0 non-virtual]
>
> -// GLOBALS-LABEL: @"\01??_7D at test3@@6B@" = {{.*}} constant { [3 x i8*] }
> -// GLOBALS: @"\01?fn at D@test3@@$4PPPPPPPM at A@AEPAUA at 2@XZ"
> -// GLOBALS: @"\01?fn at D@test3@@$4PPPPPPPM at A@AEPAUB at 2@XZ"
> -// GLOBALS: @"\01?fn at D@test3@@$4PPPPPPPM at A@AEPAU12 at XZ"
> +// GLOBALS-LABEL: @"??_7D at test3@@6B@" = {{.*}} constant { [3 x i8*] }
> +// GLOBALS: @"?fn at D@test3@@$4PPPPPPPM at A@AEPAUA at 2@XZ"
> +// GLOBALS: @"?fn at D@test3@@$4PPPPPPPM at A@AEPAUB at 2@XZ"
> +// GLOBALS: @"?fn at D@test3@@$4PPPPPPPM at A@AEPAU12 at XZ"
>  }
>
>  namespace pr34302 {
>
> Modified:
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp
> (original)
> +++ cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp
> Fri Mar 16 13:36:49 2018
> @@ -19,7 +19,7 @@ struct A {
>    int ia;
>  };
>  A a;
> -// EMITS-VFTABLE-DAG: @"\01??_7A@@6B@" = linkonce_odr unnamed_addr
> constant { [3 x i8*] }
> +// EMITS-VFTABLE-DAG: @"??_7A@@6B@" = linkonce_odr unnamed_addr constant
> { [3 x i8*] }
>  void use(A *obj) { obj->f(); }
>
>  struct B : A {
> @@ -39,7 +39,7 @@ struct B : A {
>    virtual void j();
>  };
>  B b;
> -// EMITS-VFTABLE-DAG: @"\01??_7B@@6B@" = linkonce_odr unnamed_addr
> constant { [5 x i8*] }
> +// EMITS-VFTABLE-DAG: @"??_7B@@6B@" = linkonce_odr unnamed_addr constant
> { [5 x i8*] }
>  void use(B *obj) { obj->f(); }
>
>  struct C {
> @@ -54,7 +54,7 @@ struct C {
>    virtual void f();
>  };
>  void C::f() {}
> -// NO-VFTABLE-NOT: @"\01??_7C@@6B@"
> +// NO-VFTABLE-NOT: @"??_7C@@6B@"
>  void use(C *obj) { obj->f(); }
>
>  struct D {
> @@ -69,7 +69,7 @@ struct D {
>    virtual ~D();
>  };
>  D d;
> -// EMITS-VFTABLE-DAG: @"\01??_7D@@6B@" = linkonce_odr unnamed_addr
> constant { [2 x i8*] }
> +// EMITS-VFTABLE-DAG: @"??_7D@@6B@" = linkonce_odr unnamed_addr constant
> { [2 x i8*] }
>  void use(D *obj) { obj->f(); }
>
>  struct E : A {
> @@ -89,7 +89,7 @@ struct E : A {
>    virtual void i();
>  };
>  void E::i() {}
> -// NO-VFTABLE-NOT: @"\01??_7E@@6B@"
> +// NO-VFTABLE-NOT: @"??_7E@@6B@"
>  void use(E *obj) { obj->i(); }
>
>  struct F : A {
> @@ -107,7 +107,7 @@ struct F : A {
>    virtual ~F();
>  };
>  F f;
> -// EMITS-VFTABLE-DAG: @"\01??_7F@@6B@" = linkonce_odr unnamed_addr
> constant { [5 x i8*] }
> +// EMITS-VFTABLE-DAG: @"??_7F@@6B@" = linkonce_odr unnamed_addr constant
> { [5 x i8*] }
>  void use(F *obj) { obj->i(); }
>
>  struct G : E {
> @@ -128,7 +128,7 @@ struct G : E {
>    virtual void j();
>  };
>  void G::j() {}
> -// NO-VFTABLE-NOT: @"\01??_7G@@6B@"
> +// NO-VFTABLE-NOT: @"??_7G@@6B@"
>  void use(G *obj) { obj->j(); }
>
>  // Test that the usual Itanium-style key method does not emit a vtable.
> @@ -136,7 +136,7 @@ struct H {
>    virtual void f();
>  };
>  void H::f() {}
> -// NO-VFTABLE-NOT: @"\01??_7H@@6B@"
> +// NO-VFTABLE-NOT: @"??_7H@@6B@"
>
>  struct Empty { };
>
> @@ -295,7 +295,7 @@ struct S {
>    // CHECK-NEXT:   0 | void S::f() [deleted]
>    virtual void f() = delete;
>    S();
> -  // EMITS-VFTABLE-DAG: @"\01??_7S@@6B@" = linkonce_odr unnamed_addr
> constant { [1 x i8*] } { [1 x i8*] [i8* bitcast (void ()* @_purecall to
> i8*)] }
> +  // EMITS-VFTABLE-DAG: @"??_7S@@6B@" = linkonce_odr unnamed_addr
> constant { [1 x i8*] } { [1 x i8*] [i8* bitcast (void ()* @_purecall to
> i8*)] }
>  };
>
>  S::S() {}
>
> Modified:
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance-vtordisps.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance-vtordisps.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> ---
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance-vtordisps.cpp
> (original)
> +++
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance-vtordisps.cpp
> Fri Mar 16 13:36:49 2018
> @@ -67,10 +67,10 @@ struct A : virtual V1 {
>    // CHECK-NEXT: 0 | [this adjustment: vtordisp at -4, 0 non-virtual]
>
>    virtual void f();
> -  // MANGLING-DAG: @"\01?f at A@simple@@$4PPPPPPPM at A@AEXXZ"
> +  // MANGLING-DAG: @"?f at A@simple@@$4PPPPPPPM at A@AEXXZ"
>
>    virtual ~A();
> -  // MANGLING-DAG: @"\01??_EA at simple@@$4PPPPPPPM at A@AEPAXI at Z"
> +  // MANGLING-DAG: @"??_EA at simple@@$4PPPPPPPM at A@AEPAXI at Z"
>  };
>
>  A a;
> @@ -102,11 +102,11 @@ struct B : virtual V3 {
>    B() { use_somewhere_else(this); }
>
>    virtual void f();
> -  // MANGLING-DAG: @"\01?f at B@simple@@$4PPPPPPPE at A@AEXXZ"
> +  // MANGLING-DAG: @"?f at B@simple@@$4PPPPPPPE at A@AEXXZ"
>
>    // Has an implicit destructor.
> -  // MANGLING-DAG: @"\01??_EB at simple@@$4PPPPPPPE at 7AEPAXI@Z"
> -  // MANGLING-DAG: @"\01??_EB at simple@@$4PPPPPPPM at A@AEPAXI at Z"
> +  // MANGLING-DAG: @"??_EB at simple@@$4PPPPPPPE at 7AEPAXI@Z"
> +  // MANGLING-DAG: @"??_EB at simple@@$4PPPPPPPM at A@AEPAXI at Z"
>  };
>
>  B b;
> @@ -147,12 +147,12 @@ struct C : virtual V4 {
>
>    int x;
>    virtual void f();
> -  // MANGLING-DAG: @"\01?f at C@simple@@$4PPPPPPPA at 3AEXXZ"
> -  // MANGLING-DAG: @"\01?f at C@simple@@$4PPPPPPPE at A@AEXXZ"
> +  // MANGLING-DAG: @"?f at C@simple@@$4PPPPPPPA at 3AEXXZ"
> +  // MANGLING-DAG: @"?f at C@simple@@$4PPPPPPPE at A@AEXXZ"
>    virtual ~C();
> -  // MANGLING-DAG: @"\01??_EC at simple@@$4PPPPPPPA at M@AEPAXI at Z"
> -  // MANGLING-DAG: @"\01??_EC at simple@@$4PPPPPPPE at 7AEPAXI@Z"
> -  // MANGLING-DAG: @"\01??_EC at simple@@$4PPPPPPPM at A@AEPAXI at Z"
> +  // MANGLING-DAG: @"??_EC at simple@@$4PPPPPPPA at M@AEPAXI at Z"
> +  // MANGLING-DAG: @"??_EC at simple@@$4PPPPPPPE at 7AEPAXI@Z"
> +  // MANGLING-DAG: @"??_EC at simple@@$4PPPPPPPM at A@AEPAXI at Z"
>  };
>
>  C c;
> @@ -167,7 +167,7 @@ class D : B {
>    D();
>    int z;
>
> -  // MANGLING-DAG: @"\01?f at B@simple@@$4PPPPPPPE at 3AEXXZ"
> +  // MANGLING-DAG: @"?f at B@simple@@$4PPPPPPPE at 3AEXXZ"
>  };
>
>  D::D() {}
> @@ -192,7 +192,7 @@ struct F : virtual E {
>    virtual void g();  // Force a vtordisp.
>    int f;
>
> -  // MANGLING-DAG: @"\01?g at F@simple@@$4PPPPPPPM at A
> @AEXXZ"{{.*}}??_EF at simple@@$4PPPPPPPM at A@AEPAXI at Z
> +  // MANGLING-DAG: @"?g at F@simple@@$4PPPPPPPM at A@AEXXZ"{{.*}}??_EF at simple
> @@$4PPPPPPPM at A@AEPAXI at Z
>    // MANGLING-DAG: ?f at E@simple@@UAEXXZ{{.*}}??_EF at simple
> @@$4PPPPPPPE at 7AEPAXI@Z
>  };
>
> @@ -213,8 +213,8 @@ struct G : F {
>    G();
>    int g;
>
> -  // MANGLING-DAG: @"\01?g at F@simple@@$4PPPPPPPM at 3AEXXZ
> "{{.*}}@"\01??_EG at simple@@$4PPPPPPPM at A@AEPAXI at Z"
> -  // MANGLING-DAG: @"\01?f at E@simple@@UAEXXZ"{{.*}}@"\01??_EG at simple
> @@$4PPPPPPPE at 7AEPAXI@Z"
> +  // MANGLING-DAG: @"?g at F@simple@@$4PPPPPPPM at 3AEXXZ"{{.*}}@"??_EG at simple
> @@$4PPPPPPPM at A@AEPAXI at Z"
> +  // MANGLING-DAG: @"?f at E@simple@@UAEXXZ"{{.*}}@"??_EG at simple
> @@$4PPPPPPPE at 7AEPAXI@Z"
>  };
>
>  G::G() {}
> @@ -248,11 +248,11 @@ struct A : virtual simple::A {
>    // CHECK-NEXT:      vboffset at 8 in the vbtable, 8 non-virtual]
>
>    // `vtordispex{8,8,4294967292,8}'
> -  // MANGLING-DAG: @"\01?f at A@simple@@$R477PPPPPPPM at 7AEXXZ"
> +  // MANGLING-DAG: @"?f at A@simple@@$R477PPPPPPPM at 7AEXXZ"
>
>    virtual ~A();
>    // vtordisp{4294967292,0}
> -  // MANGLING-DAG: @"\01??_EA at extended@@$4PPPPPPPM at A@AEPAXI at Z"
> +  // MANGLING-DAG: @"??_EA at extended@@$4PPPPPPPM at A@AEPAXI at Z"
>  };
>
>  A a;
> @@ -273,7 +273,7 @@ struct B : virtual simple::A {
>    // CHECK-NEXT:      vboffset at 8 in the vbtable, 8 non-virtual]
>
>    // vtordisp{4294967292,0}
> -  // MANGLING-DAG: @"\01??_EB at extended@@$4PPPPPPPM at A@AEPAXI at Z"
> +  // MANGLING-DAG: @"??_EB at extended@@$4PPPPPPPM at A@AEPAXI at Z"
>  };
>
>  B b;
> @@ -290,10 +290,10 @@ struct C : virtual simple::A {
>    // CHECK-NEXT:      vboffset at 8 in the vbtable, 8 non-virtual]
>
>    // `vtordispex{12,8,4294967292,8}'
> -  // MANGLING-DAG: @"\01?f at A@simple@@$R4M at 7PPPPPPPM@7AEXXZ"
> +  // MANGLING-DAG: @"?f at A@simple@@$R4M at 7PPPPPPPM@7AEXXZ"
>    int x;
>    virtual ~C();
> -  // MANGLING-DAG: @"\01??_EC at extended@@$4PPPPPPPM at A@AEPAXI at Z"
> +  // MANGLING-DAG: @"??_EC at extended@@$4PPPPPPPM at A@AEPAXI at Z"
>  };
>
>  C c;
> @@ -316,10 +316,10 @@ struct E : virtual D {
>    // CHECK-NEXT:      vboffset at 8 in the vbtable, 12 non-virtual]
>
>    // `vtordispex{8,8,4294967292,12}'
> -  // MANGLING-DAG: @"\01?f at D@extended@@$R477PPPPPPPM at M@AEXXZ"
> +  // MANGLING-DAG: @"?f at D@extended@@$R477PPPPPPPM at M@AEXXZ"
>
>    virtual ~E();
> -  // MANGLING-DAG: @"\01??_EE at extended@@$4PPPPPPPM at A@AEPAXI at Z"
> +  // MANGLING-DAG: @"??_EE at extended@@$4PPPPPPPM at A@AEPAXI at Z"
>  };
>
>  E e;
> @@ -336,10 +336,10 @@ struct F : virtual Z, virtual D {
>    // CHECK-NEXT:      vboffset at 12 in the vbtable, 12 non-virtual]
>
>    // `vtordispex{20,12,4294967292,12}'
> -  // MANGLING-DAG: @"\01?f at D@extended@@$R4BE at M@PPPPPPPM at M@AEXXZ"
> +  // MANGLING-DAG: @"?f at D@extended@@$R4BE at M@PPPPPPPM at M@AEXXZ"
>    int x;
>    virtual ~F();
> -  // MANGLING-DAG: @"\01??_EF at extended@@$4PPPPPPPM at M@AEPAXI at Z"
> +  // MANGLING-DAG: @"??_EF at extended@@$4PPPPPPPM at M@AEPAXI at Z"
>  };
>
>  F f;
> @@ -365,7 +365,7 @@ struct G : virtual simple::A {
>
>    virtual ~G();
>    // vtordisp{4294967292,0}
> -  // MANGLING-DAG: @"\01??_EG at extended@@$4PPPPPPPM at A@AEPAXI at Z"
> +  // MANGLING-DAG: @"??_EG at extended@@$4PPPPPPPM at A@AEPAXI at Z"
>  };
>
>  G g;
> @@ -385,8 +385,8 @@ struct H : Z, A {
>    // CHECK-NEXT: 0 | [this adjustment: vtordisp at -4, vbptr at 8 to the
> left,
>    // CHECK-NEXT:      vboffset at 8 in the vbtable, 8 non-virtual]
>
> -  // MANGLING-DAG: @"\01?f at A@simple@@$R477PPPPPPPM at 7AEXXZ"
> -  // MANGLING-DAG: @"\01??_EH at extended@@$4PPPPPPPM at BA@AEPAXI at Z"
> +  // MANGLING-DAG: @"?f at A@simple@@$R477PPPPPPPM at 7AEXXZ"
> +  // MANGLING-DAG: @"??_EH at extended@@$4PPPPPPPM at BA@AEPAXI at Z"
>  };
>
>  H h;
> @@ -407,7 +407,7 @@ struct A : virtual simple::B {
>    // CHECK-NEXT: 0 | [this adjustment: vtordisp at -12, vbptr at 20 to
> the left,
>    // CHECK-NEXT:      vboffset at 8 in the vbtable, 16 non-virtual]
>
> -  // MANGLING-DAG: @"\01?f at B@simple@@$R4BE at 7PPPPPPPE@BA at AEXXZ"
> +  // MANGLING-DAG: @"?f at B@simple@@$R4BE at 7PPPPPPPE@BA at AEXXZ"
>    int a;
>    virtual ~A();
>  };
> @@ -442,7 +442,7 @@ struct D : C {
>    // CHECK-NEXT:   0 | void pr19408::C::f()
>    // CHECK-NEXT:       [this adjustment: vtordisp at -4, -4 non-virtual]
>
> -  // MANGLING-DAG: @"\01?f at C@pr19408@@$4PPPPPPPM at 3AEXXZ"
> +  // MANGLING-DAG: @"?f at C@pr19408@@$4PPPPPPPM at 3AEXXZ"
>    D();
>    int d;
>  };
> @@ -463,10 +463,10 @@ struct B : virtual A {
>    virtual ~B();
>  protected:
>    virtual void prot();
> -  // MANGLING-DAG: @"\01?prot at B@access@@$2PPPPPPPM at A@AEXXZ"
> +  // MANGLING-DAG: @"?prot at B@access@@$2PPPPPPPM at A@AEXXZ"
>  private:
>    virtual void priv();
> -  // MANGLING-DAG: @"\01?priv at B@access@@$0PPPPPPPM at A@AEXXZ"
> +  // MANGLING-DAG: @"?priv at B@access@@$0PPPPPPPM at A@AEXXZ"
>  };
>
>  B b;
> @@ -474,8 +474,8 @@ B b;
>  struct C : virtual B {
>    virtual ~C();
>
> -  // MANGLING-DAG: @"\01?prot at B@access@@$R277PPPPPPPM at 7AEXXZ"
> -  // MANGLING-DAG: @"\01?priv at B@access@@$R077PPPPPPPM at 7AEXXZ"
> +  // MANGLING-DAG: @"?prot at B@access@@$R277PPPPPPPM at 7AEXXZ"
> +  // MANGLING-DAG: @"?priv at B@access@@$R077PPPPPPPM at 7AEXXZ"
>  };
>
>  C c;
> @@ -503,7 +503,7 @@ struct X : B, virtual C {
>    // CHECK-NEXT:   0 | void pr19505::B::f()
>    // CHECK-NEXT:   1 | void pr19505::A::z()
>
> -  // MANGLING-DAG: @"\01??_7X at pr19505@@6BB at 1@@" = {{.*}}@"\01?f at B
> @pr19505@@UAEXXZ"
> +  // MANGLING-DAG: @"??_7X at pr19505@@6BB at 1@@" = {{.*}}@"?f at B@pr19505@
> @UAEXXZ"
>  } x;
>
>  void build_vftable(X *obj) { obj->g(); }
> @@ -530,7 +530,7 @@ struct X : C, virtual B {
>    // CHECK-NEXT:   1 | void pr19506::X::g()
>    // CHECK-NEXT:       [this adjustment: vtordisp at -4, -12 non-virtual]
>
> -  // MANGLING-DAG: @"\01??_7X at pr19506@@6BB at 1@@" = {{.*}}@"\01?f at B
> @pr19506@@UAEXXZ"
> +  // MANGLING-DAG: @"??_7X at pr19506@@6BB at 1@@" = {{.*}}@"?f at B@pr19506@
> @UAEXXZ"
>  } x;
>
>  void build_vftable(X *obj) { obj->g(); }
> @@ -562,7 +562,7 @@ struct X : B, C {
>    // CHECK-NEXT:   1 | void pr19519::C::g()
>    // CHECK-NEXT:       [this adjustment: vtordisp at -4, -4 non-virtual]
>
> -  // MANGLING-DAG: @"\01??_7X at pr19519@@6B@" = {{.*}}@"\01?g at C@pr19519@
> @$4PPPPPPPM at 3AEXXZ"
> +  // MANGLING-DAG: @"??_7X at pr19519@@6B@" = {{.*}}@"?g at C@pr19519@
> @$4PPPPPPPM at 3AEXXZ"
>  };
>
>  X::X() {}
>
> Modified:
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> ---
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp
> (original)
> +++
> cfe/trunk/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp Fri
> Mar 16 13:36:49 2018
> @@ -22,7 +22,7 @@ struct C: virtual A {
>    // CHECK-NEXT: vbtable index 1, vfptr at offset 0
>    // CHECK-NEXT: 0 | void C::f()
>
> -  // MANGLING-DAG: @"\01??_7C@@6B@"
> +  // MANGLING-DAG: @"??_7C@@6B@"
>
>    virtual void f() {}
>  };
> @@ -44,8 +44,8 @@ struct D: virtual A {
>    // CHECK-NEXT: via vbtable index 1, vfptr at offset 0
>    // CHECK-NEXT: 0 | void D::f()
>
> -  // MANGLING-DAG: @"\01??_7D@@6B0@@"
> -  // MANGLING-DAG: @"\01??_7D@@6BA@@@"
> +  // MANGLING-DAG: @"??_7D@@6B0@@"
> +  // MANGLING-DAG: @"??_7D@@6BA@@@"
>
>    virtual void f();
>    virtual void h();
> @@ -60,7 +60,7 @@ struct X { int x; };
>
>  // X and A get reordered in the layout since X doesn't have a vfptr while
> A has.
>  struct Y : X, A { };
> -// MANGLING-DAG: @"\01??_7Y at Test1@@6B@"
> +// MANGLING-DAG: @"??_7Y at Test1@@6B@"
>
>  struct Z : virtual Y {
>    Z();
> @@ -70,7 +70,7 @@ struct Z : virtual Y {
>
>    // CHECK-NOT: VFTable indices for 'Test1::Z'
>
> -  // MANGLING-DAG: @"\01??_7Z at Test1@@6B@"
> +  // MANGLING-DAG: @"??_7Z at Test1@@6B@"
>  };
>
>  Z::Z() {}
> @@ -92,9 +92,9 @@ struct X: virtual A, virtual B {
>    // CHECK-LABEL: VFTable indices for 'Test2::X' (1 entry).
>    // CHECK-NEXT: 0 | void Test2::X::h()
>
> -  // MANGLING-DAG: @"\01??_7X at Test2@@6B01@@"
> -  // MANGLING-DAG: @"\01??_7X at Test2@@6BA@@@"
> -  // MANGLING-DAG: @"\01??_7X at Test2@@6BB@@@"
> +  // MANGLING-DAG: @"??_7X at Test2@@6B01@@"
> +  // MANGLING-DAG: @"??_7X at Test2@@6BA@@@"
> +  // MANGLING-DAG: @"??_7X at Test2@@6BB@@@"
>
>    virtual void h();
>  };
> @@ -106,7 +106,7 @@ void use(X *obj) { obj->h(); }
>  namespace Test3 {
>
>  struct X : virtual A {
> -  // MANGLING-DAG: @"\01??_7X at Test3@@6B@"
> +  // MANGLING-DAG: @"??_7X at Test3@@6B@"
>  };
>
>  struct Y: virtual X {
> @@ -117,7 +117,7 @@ struct Y: virtual X {
>
>    // CHECK-NOT: VFTable indices for 'Test3::Y'
>
> -  // MANGLING-DAG: @"\01??_7Y at Test3@@6B@"
> +  // MANGLING-DAG: @"??_7Y at Test3@@6B@"
>  };
>
>  Y::Y() {}
> @@ -142,10 +142,10 @@ struct X: virtual C {
>
>    // CHECK-NOT: VFTable indices for 'Test4::X'
>
> -  // MANGLING-DAG: @"\01??_7X at Test4@@6B@"
> +  // MANGLING-DAG: @"??_7X at Test4@@6B@"
>
>    // Also check the mangling of the thunk.
> -  // MANGLING-DAG: define linkonce_odr dso_local x86_thiscallcc void
> @"\01?f at C@@WPPPPPPPI at AEXXZ"
> +  // MANGLING-DAG: define linkonce_odr dso_local x86_thiscallcc void
> @"?f at C@@WPPPPPPPI at AEXXZ"
>  };
>
>  X::X() {}
> @@ -155,7 +155,7 @@ namespace Test5 {
>
>  // New methods are added to the base's vftable.
>  struct X : A {
> -  // MANGLING-DAG: @"\01??_7X at Test5@@6B@"
> +  // MANGLING-DAG: @"??_7X at Test5@@6B@"
>    virtual void g();
>  };
>
> @@ -171,8 +171,8 @@ struct Y : virtual X {
>    // CHECK-LABEL: VFTable indices for 'Test5::Y' (1 entry).
>    // CHECK-NEXT: 0 | void Test5::Y::h()
>
> -  // MANGLING-DAG: @"\01??_7Y at Test5@@6B01@@"
> -  // MANGLING-DAG: @"\01??_7Y at Test5@@6BX at 1@@"
> +  // MANGLING-DAG: @"??_7Y at Test5@@6B01@@"
> +  // MANGLING-DAG: @"??_7Y at Test5@@6BX at 1@@"
>
>    virtual void h();
>  };
> @@ -191,7 +191,7 @@ struct X : A, virtual Empty {
>
>    // CHECK-NOT: VFTable indices for 'Test6::X'
>
> -  // MANGLING-DAG: @"\01??_7X at Test6@@6B@"
> +  // MANGLING-DAG: @"??_7X at Test6@@6B@"
>  };
>
>  X::X() {}
> @@ -200,7 +200,7 @@ X::X() {}
>  namespace Test7 {
>
>  struct X : C {
> -  // MANGLING-DAG: @"\01??_7X at Test7@@6B@"
> +  // MANGLING-DAG: @"??_7X at Test7@@6B@"
>  };
>
>  struct Y : virtual X {
> @@ -215,7 +215,7 @@ struct Y : virtual X {
>
>    // CHECK-NOT: VFTable indices for 'Test7::Y'
>
> -  // MANGLING-DAG: @"\01??_7Y at Test7@@6B@"
> +  // MANGLING-DAG: @"??_7Y at Test7@@6B@"
>  };
>
>  Y::Y() {}
> @@ -236,8 +236,8 @@ struct X : D, C {
>    // CHECK-NEXT: via vbtable index 1, vfptr at offset 0
>    // CHECK-NEXT: 0 | void Test8::X::f()
>
> -  // MANGLING-DAG: @"\01??_7X at Test8@@6BA@@@"
> -  // MANGLING-DAG: @"\01??_7X at Test8@@6BD@@@"
> +  // MANGLING-DAG: @"??_7X at Test8@@6BA@@@"
> +  // MANGLING-DAG: @"??_7X at Test8@@6BD@@@"
>
>    virtual void f();
>  };
> @@ -299,8 +299,8 @@ struct Y : virtual X {
>    // CHECK-LABEL: VFTable indices for 'Test9::Y' (1 entry).
>    // CHECK-NEXT: 0 | void Test9::Y::h()
>
> -  // MANGLING-DAG: @"\01??_7Y at Test9@@6B01@@"
> -  // MANGLING-DAG: @"\01??_7Y at Test9@@6BX at 1@@"
> +  // MANGLING-DAG: @"??_7Y at Test9@@6B01@@"
> +  // MANGLING-DAG: @"??_7Y at Test9@@6BX at 1@@"
>
>    virtual void h();
>  };
> @@ -322,10 +322,10 @@ struct Z : Y, virtual B {
>
>    // CHECK-NOT: VFTable indices for 'Test9::Z'
>
> -  // MANGLING-DAG: @"\01??_7Z at Test9@@6BX at 1@@"
> -  // MANGLING-DAG: @"\01??_7Z at Test9@@6BY at 1@@"
> +  // MANGLING-DAG: @"??_7Z at Test9@@6BX at 1@@"
> +  // MANGLING-DAG: @"??_7Z at Test9@@6BY at 1@@"
>
> -  // MANGLING-DAG: @"\01??_7Z at Test9@@6B@"
> +  // MANGLING-DAG: @"??_7Z at Test9@@6B@"
>  };
>
>  Z::Z() {}
> @@ -355,12 +355,12 @@ struct W : Z, D, virtual A, virtual B {
>
>    // CHECK-NOT: VFTable indices for 'Test9::W'
>
> -  // MANGLING-DAG: @"\01??_7W at Test9@@6BA@@@"
> -  // MANGLING-DAG: @"\01??_7W at Test9@@6BD@@@"
> -  // MANGLING-DAG: @"\01??_7W at Test9@@6BX at 1@@"
> +  // MANGLING-DAG: @"??_7W at Test9@@6BA@@@"
> +  // MANGLING-DAG: @"??_7W at Test9@@6BD@@@"
> +  // MANGLING-DAG: @"??_7W at Test9@@6BX at 1@@"
>
> -  // MANGLING-DAG: @"\01??_7W at Test9@@6B@"
> -  // MANGLING-DAG: @"\01??_7W at Test9@@6BY at 1@@"
> +  // MANGLING-DAG: @"??_7W at Test9@@6B@"
> +  // MANGLING-DAG: @"??_7W at Test9@@6BY at 1@@"
>  };
>
>  W::W() {}
> @@ -404,12 +404,12 @@ struct T : Z, D, virtual A, virtual B {
>    // CHECK-NEXT: via vbtable index 2, vfptr at offset 0
>    // CHECK-NEXT: 0 | void Test9::T::g()
>
> -  // MANGLING-DAG: @"\01??_7T at Test9@@6BA@@@"
> -  // MANGLING-DAG: @"\01??_7T at Test9@@6BD@@@"
> -  // MANGLING-DAG: @"\01??_7T at Test9@@6BX at 1@@"
> +  // MANGLING-DAG: @"??_7T at Test9@@6BA@@@"
> +  // MANGLING-DAG: @"??_7T at Test9@@6BD@@@"
> +  // MANGLING-DAG: @"??_7T at Test9@@6BX at 1@@"
>
> -  // MANGLING-DAG: @"\01??_7T at Test9@@6B@"
> -  // MANGLING-DAG: @"\01??_7T at Test9@@6BY at 1@@"
> +  // MANGLING-DAG: @"??_7T at Test9@@6B@"
> +  // MANGLING-DAG: @"??_7T at Test9@@6BY at 1@@"
>
>    virtual void f();
>    virtual void g();
> @@ -443,8 +443,8 @@ struct X : virtual A {};
>  struct Y { virtual void g(); };
>
>  struct Z : virtual X, Y {
> -  // MANGLING-DAG: @"\01??_7Z at Test11@@6BY at 1@@"
> -  // MANGLING-DAG: @"\01??_7Z at Test11@@6BX at 1@@"
> +  // MANGLING-DAG: @"??_7Z at Test11@@6BY at 1@@"
> +  // MANGLING-DAG: @"??_7Z at Test11@@6BX at 1@@"
>  };
>
>  Z z;
> @@ -468,7 +468,7 @@ struct Z : virtual Y {
>    // CHECK-NEXT:   1 | void A::z()
>
>    int z;
> -  // MANGLING-DAG: @"\01??_7Z at Test12@@6BA@@@" = {{.*}}@"\01?f at Y@Test12@
> @UAEXXZ"
> +  // MANGLING-DAG: @"??_7Z at Test12@@6BA@@@" = {{.*}}@"?f at Y@Test12@@UAEXXZ"
>  };
>
>  struct W : Z {
> @@ -478,7 +478,7 @@ struct W : Z {
>    W();
>
>    int w;
> -  // MANGLING-DAG: @"\01??_7W at Test12@@6BA@@@" = {{.*}}@"\01?f at Y@Test12@
> @UAEXXZ"
> +  // MANGLING-DAG: @"??_7W at Test12@@6BA@@@" = {{.*}}@"?f at Y@Test12@@UAEXXZ"
>  };
>
>  W::W() {}
> @@ -683,10 +683,10 @@ struct C : virtual B, A {
>  };
>  C c;
>
> -// MANGLING-DAG: @"\01??_7A at pr17748@@6B@"
> -// MANGLING-DAG: @"\01??_7B at pr17748@@6B@"
> -// MANGLING-DAG: @"\01??_7C at pr17748@@6BA at 1@@"
> -// MANGLING-DAG: @"\01??_7C at pr17748@@6BB at 1@@"
> +// MANGLING-DAG: @"??_7A at pr17748@@6B@"
> +// MANGLING-DAG: @"??_7B at pr17748@@6B@"
> +// MANGLING-DAG: @"??_7C at pr17748@@6BA at 1@@"
> +// MANGLING-DAG: @"??_7C at pr17748@@6BB at 1@@"
>  }
>
>  namespace pr19066 {
> @@ -721,9 +721,9 @@ D obj;
>
>  // Each MDC only has one vftable.
>
> -// MANGLING-DAG: @"\01??_7D at pr19240@@6B@"
> -// MANGLING-DAG: @"\01??_7A at pr19240@@6B@"
> -// MANGLING-DAG: @"\01??_7B at pr19240@@6B@"
> +// MANGLING-DAG: @"??_7D at pr19240@@6B@"
> +// MANGLING-DAG: @"??_7A at pr19240@@6B@"
> +// MANGLING-DAG: @"??_7B at pr19240@@6B@"
>
>  }
>
> @@ -746,7 +746,7 @@ struct Z : Y {
>
>    Z();
>    int z;
> -  // MANGLING-DAG: @"\01??_7Z at pr19408@@6B@" = {{.*}}@"\01?f at Y@pr19408@
> @W3AEXXZ"
> +  // MANGLING-DAG: @"??_7Z at pr19408@@6B@" = {{.*}}@"?f at Y@pr19408@@W3AEXXZ"
>  };
>
>  Z::Z() {}
> @@ -759,7 +759,7 @@ struct W : B, Y {
>
>    W();
>    int w;
> -  // MANGLING-DAG: @"\01??_7W at pr19408@@6BY at 1@@" = {{.*}}@"\01?f at Y
> @pr19408@@W3AEXXZ"
> +  // MANGLING-DAG: @"??_7W at pr19408@@6BY at 1@@" = {{.*}}@"?f at Y@pr19408@
> @W3AEXXZ"
>  };
>
>  W::W() {}
> @@ -771,7 +771,7 @@ struct A {
>  };
>  struct __declspec(dllexport) B : virtual A {
>    virtual void f() = 0;
> -  // MANGLING-DAG: @"\01??_7B at Test13@@6B@" = weak_odr dllexport
> unnamed_addr constant { [1 x i8*] } { [1 x i8*] [i8* bitcast (void ()*
> @_purecall to i8*)] }
> +  // MANGLING-DAG: @"??_7B at Test13@@6B@" = weak_odr dllexport
> unnamed_addr constant { [1 x i8*] } { [1 x i8*] [i8* bitcast (void ()*
> @_purecall to i8*)] }
>  };
>  }
>
> @@ -788,8 +788,8 @@ C::C() {}
>  // CHECK-LABEL: VFTable for 'pr21031_1::B' in 'pr21031_1::C' (1 entry)
>  // CHECK-NEXT:   0 | void pr21031_1::B::g()
>
> -// MANGLING-DAG: @"\01??_7C at pr21031_1@@6BB at 1@@" = {{.*}} constant { [1 x
> i8*] }
> -// MANGLING-DAG: @"\01??_7C at pr21031_1@@6B@" = {{.*}} constant { [1 x
> i8*] }
> +// MANGLING-DAG: @"??_7C at pr21031_1@@6BB at 1@@" = {{.*}} constant { [1 x
> i8*] }
> +// MANGLING-DAG: @"??_7C at pr21031_1@@6B@" = {{.*}} constant { [1 x i8*] }
>  }
>
>  namespace pr21031_2 {
> @@ -804,8 +804,8 @@ C::C() {}
>  // CHECK-LABEL: VFTable for 'pr21031_2::A' in 'pr21031_2::B' in
> 'pr21031_2::C' (1 entry)
>  // CHECK-NEXT:   0 | void pr21031_2::A::f()
>
> -// MANGLING-DAG: @"\01??_7C at pr21031_2@@6BA at 1@@" = {{.*}} constant { [1 x
> i8*] }
> -// MANGLING-DAG: @"\01??_7C at pr21031_2@@6BB at 1@@" = {{.*}} constant { [1 x
> i8*] }
> +// MANGLING-DAG: @"??_7C at pr21031_2@@6BA at 1@@" = {{.*}} constant { [1 x
> i8*] }
> +// MANGLING-DAG: @"??_7C at pr21031_2@@6BB at 1@@" = {{.*}} constant { [1 x
> i8*] }
>  }
>
>  namespace pr21062_1 {
> @@ -818,7 +818,7 @@ D::D() {}
>  // CHECK-LABEL: VFTable for 'pr21062_1::A' in 'pr21062_1::D' (1 entry)
>  // CHECK-NEXT:   0 | void pr21062_1::A::f()
>
> -// MANGLING-DAG: @"\01??_7D at pr21062_1@@6B@" = {{.*}} constant { [1 x
> i8*] }
> +// MANGLING-DAG: @"??_7D at pr21062_1@@6B@" = {{.*}} constant { [1 x i8*] }
>  }
>
>  namespace pr21062_2 {
> @@ -831,7 +831,7 @@ D::D() {}
>  // CHECK-LABEL: VFTable for 'pr21062_2::A' in 'pr21062_2::D' (1 entry)
>  // CHECK-NEXT:   0 | void pr21062_2::A::f()
>
> -// MANGLING-DAG: @"\01??_7D at pr21062_2@@6B@" = {{.*}} constant { [1 x
> i8*] }
> +// MANGLING-DAG: @"??_7D at pr21062_2@@6B@" = {{.*}} constant { [1 x i8*] }
>  }
>
>  namespace pr21064 {
> @@ -843,5 +843,5 @@ D::D() {}
>  // CHECK-LABEL: VFTable for 'pr21064::B' in 'pr21064::C' in 'pr21064::D'
> (1 entry)
>  // CHECK-NEXT:   0 | void pr21064::B::f()
>
> -// MANGLING-DAG: @"\01??_7D at pr21064@@6B@" = {{.*}} constant { [1 x i8*] }
> +// MANGLING-DAG: @"??_7D at pr21064@@6B@" = {{.*}} constant { [1 x i8*] }
>  }
>
> Modified: cfe/trunk/test/CodeGenCXX/microsoft-compatibility.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-compatibility.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/microsoft-compatibility.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/microsoft-compatibility.cpp Fri Mar 16
> 13:36:49 2018
> @@ -8,7 +8,7 @@ struct S {
>  template <>
>  const int S<char>::x[] = {1};
>
> -// CHECK-LABEL: @"\01?x@?$S at D@@2QBHB" = weak_odr dso_local constant [1 x
> i32] [i32 1], comdat
> +// CHECK-LABEL: @"?x@?$S at D@@2QBHB" = weak_odr dso_local constant [1 x
> i32] [i32 1], comdat
>
>  template<class T>
>  void destroy(T *p) {
> @@ -21,10 +21,10 @@ extern "C" void f() {
>  }
>
>  // CHECK-LABEL: define dso_local void @f()
> -// CHECK: call void @"\01??$destroy at X@@YAXPAX at Z"
> +// CHECK: call void @"??$destroy at X@@YAXPAX at Z"
>  // CHECK: ret void
>
> -// CHECK-LABEL: define linkonce_odr dso_local void @"\01??$destroy at X
> @@YAXPAX at Z"(i8* %p)
> +// CHECK-LABEL: define linkonce_odr dso_local void @"??$destroy at X
> @@YAXPAX at Z"(i8* %p)
>  //    The pseudo-dtor expr should not generate calls to anything.
>  // CHECK-NOT: call
>  // CHECK-NOT: invoke
>
> Modified: cfe/trunk/test/CodeGenCXX/microsoft-new.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-new.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/microsoft-new.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/microsoft-new.cpp Fri Mar 16 13:36:49 2018
> @@ -13,7 +13,7 @@ namespace PR13164 {
>         // MSVC will fall back on the non-array operator new.
>      void *a;
>      int *p = new(arbitrary) int[4];
> -    // CHECK: call i8* @"\01??2 at YAPAXIUarbitrary_t@@@Z"(i32 16,
> %struct.arbitrary_t*
> +    // CHECK: call i8* @"??2 at YAPAXIUarbitrary_t@@@Z"(i32 16,
> %struct.arbitrary_t*
>    }
>
>    struct S {
> @@ -22,9 +22,9 @@ namespace PR13164 {
>
>    void g() {
>      S *s = new(arbitrary) S[2];
> -    // CHECK: call i8* @"\01??_US at PR13164@@SAPAXIUarbitrary_t@@@Z"(i32
> 2, %struct.arbitrary_t*
> +    // CHECK: call i8* @"??_US at PR13164@@SAPAXIUarbitrary_t@@@Z"(i32 2,
> %struct.arbitrary_t*
>      S *s1 = new(arbitrary) S;
> -    // CHECK: call i8* @"\01??2 at YAPAXIUarbitrary_t@@@Z"(i32 1,
> %struct.arbitrary_t*
> +    // CHECK: call i8* @"??2 at YAPAXIUarbitrary_t@@@Z"(i32 1,
> %struct.arbitrary_t*
>    }
>
>    struct T {
> @@ -34,6 +34,6 @@ namespace PR13164 {
>    void h() {
>      // This should still call the global operator new[].
>      T *t = new(arbitrary2) T[2];
> -    // CHECK: call i8* @"\01??_U at YAPAXIUarbitrary2_t@@@Z"(i32 2,
> %struct.arbitrary2_t*
> +    // CHECK: call i8* @"??_U at YAPAXIUarbitrary2_t@@@Z"(i32 2,
> %struct.arbitrary2_t*
>    }
>  }
>
> Modified: cfe/trunk/test/CodeGenCXX/microsoft-no-rtti-data.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-no-rtti-data.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/microsoft-no-rtti-data.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/microsoft-no-rtti-data.cpp Fri Mar 16
> 13:36:49 2018
> @@ -1,8 +1,8 @@
>  // RUN: %clang_cc1 %s -fno-rtti-data -triple=i386-pc-win32 -o -
> -emit-llvm | FileCheck %s
>
>  // vftable shouldn't have RTTI data in it.
> -// CHECK-NOT: @"\01??_R4S@@6B@"
> -// CHECK: @"\01??_7S@@6B@" = linkonce_odr unnamed_addr constant { [1 x
> i8*] } { [1 x i8*] [i8* bitcast ({{.*}} @"\01??_GS@@UAEPAXI at Z" to i8*)]
> }, comdat
> +// CHECK-NOT: @"??_R4S@@6B@"
> +// CHECK: @"??_7S@@6B@" = linkonce_odr unnamed_addr constant { [1 x i8*]
> } { [1 x i8*] [i8* bitcast ({{.*}} @"??_GS@@UAEPAXI at Z" to i8*)] }, comdat
>
>  struct type_info;
>  namespace std { using ::type_info; }
> @@ -19,4 +19,4 @@ extern S *getS();
>
>  const std::type_info &ti = typeid(*getS());
>  const U &u = dynamic_cast<U &>(*getS());
> -// CHECK: call i8* @__RTDynamicCast(i8* %{{.+}}, i32 0, i8* bitcast
> ({{.*}} @"\01??_R0?AUS@@@8" to i8*), i8* bitcast ({{.*}} @"\01??_R0?AUU@@@8"
> to i8*), i32 1)
> +// CHECK: call i8* @__RTDynamicCast(i8* %{{.+}}, i32 0, i8* bitcast
> ({{.*}} @"??_R0?AUS@@@8" to i8*), i8* bitcast ({{.*}} @"??_R0?AUU@@@8" to
> i8*), i32 1)
>
> Modified: cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp Fri Mar 16
> 13:36:49 2018
> @@ -16,12 +16,12 @@ struct __declspec(uuid("{BBBBBBBB-BBBB-B
>  struct __declspec(uuid("{CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC}")) C {};
>
>  const _GUID &xa = __uuidof(X<A>);
> -// CHECK-DAG:  @"\01?xa@@3ABU_GUID@@B" = {{.*}}
> @_GUID_aaaaaaaa_aaaa_aaaa_aaaa_aaaaaaaaaaaa
> +// CHECK-DAG:  @"?xa@@3ABU_GUID@@B" = {{.*}}
> @_GUID_aaaaaaaa_aaaa_aaaa_aaaa_aaaaaaaaaaaa
>
>  const _GUID &xb = __uuidof(X<B>);
> -// CHECK-DAG:  @"\01?xb@@3ABU_GUID@@B" = {{.*}}
> @_GUID_bbbbbbbb_bbbb_bbbb_bbbb_bbbbbbbbbbbb
> +// CHECK-DAG:  @"?xb@@3ABU_GUID@@B" = {{.*}}
> @_GUID_bbbbbbbb_bbbb_bbbb_bbbb_bbbbbbbbbbbb
>  const _GUID &xc = __uuidof(X<C>);
> -// CHECK-DAG:  @"\01?xc@@3ABU_GUID@@B" = {{.*}}
> @_GUID_cccccccc_cccc_cccc_cccc_cccccccccccc
> +// CHECK-DAG:  @"?xc@@3ABU_GUID@@B" = {{.*}}
> @_GUID_cccccccc_cccc_cccc_cccc_cccccccccccc
>
>  template <>
>  struct __declspec(uuid("{DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD}")) X<C> {};
> @@ -31,7 +31,7 @@ struct __declspec(uuid("{EEEEEEEE-EEEE-E
>  };
>
>  const _GUID &xd = __uuidof(X<C>);
> -// CHECK-DAG:  @"\01?xd@@3ABU_GUID@@B" = {{.*}}
> @_GUID_dddddddd_dddd_dddd_dddd_dddddddddddd
> +// CHECK-DAG:  @"?xd@@3ABU_GUID@@B" = {{.*}}
> @_GUID_dddddddd_dddd_dddd_dddd_dddddddddddd
>
>  const _GUID &yd = __uuidof(Y<X<C> >);
> -// CHECK-DAG:  @"\01?yd@@3ABU_GUID@@B" = {{.*}}
> @_GUID_dddddddd_dddd_dddd_dddd_dddddddddddd
> +// CHECK-DAG:  @"?yd@@3ABU_GUID@@B" = {{.*}}
> @_GUID_dddddddd_dddd_dddd_dddd_dddddddddddd
>
> Modified:
> cfe/trunk/test/CodeGenCXX/ms-integer-static-data-members-exported.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/ms-integer-static-data-members-exported.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/ms-integer-static-data-members-exported.cpp
> (original)
> +++ cfe/trunk/test/CodeGenCXX/ms-integer-static-data-members-exported.cpp
> Fri Mar 16 13:36:49 2018
> @@ -17,6 +17,6 @@ struct __declspec(dllexport) S {
>    };
>  };
>
> -// CHECK: @"\01?x at S@@2FB" = weak_odr dso_local dllexport constant i16
> 42, comdat, align 2
> -// CHECK: @"\01?y at S@@2W4Enum@@B" = weak_odr dso_local dllexport constant
> i32 2, comdat, align 4
> +// CHECK: @"?x at S@@2FB" = weak_odr dso_local dllexport constant i16 42,
> comdat, align 2
> +// CHECK: @"?y at S@@2W4Enum@@B" = weak_odr dso_local dllexport constant
> i32 2, comdat, align 4
>  // CHECK-NOT: NonExported
>
> Modified: cfe/trunk/test/CodeGenCXX/ms-integer-static-data-members.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/ms-integer-static-data-members.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/ms-integer-static-data-members.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/ms-integer-static-data-members.cpp Fri Mar
> 16 13:36:49 2018
> @@ -33,20 +33,20 @@ const int S::OutOfLine_Def_Ref = 5;
>
>
>  // No initialization.
> -// CHECK-DAG: @"\01?NoInit_Ref at S@@2HB" = external dso_local constant i32
> +// CHECK-DAG: @"?NoInit_Ref at S@@2HB" = external dso_local constant i32
>
>  // Inline initialization, no real definiton, not referenced.
> -// CHECK-NOT: @"\01?Inline_NotDef_NotRef at S@@2HB" = {{.*}} constant i32 5
> +// CHECK-NOT: @"?Inline_NotDef_NotRef at S@@2HB" = {{.*}} constant i32 5
>
>  // Inline initialization, no real definiton, referenced.
> -// CHECK-DAG: @"\01?Inline_NotDef_Ref at S@@2HB" = linkonce_odr dso_local
> constant i32 5, comdat, align 4
> +// CHECK-DAG: @"?Inline_NotDef_Ref at S@@2HB" = linkonce_odr dso_local
> constant i32 5, comdat, align 4
>
>  // Inline initialization, real definiton, not referenced.
> -// CHECK-NOT: @"\01?Inline_Def_NotRef at S@@2HB" = dso_local constant i32
> 5, align 4
> +// CHECK-NOT: @"?Inline_Def_NotRef at S@@2HB" = dso_local constant i32 5,
> align 4
>
>  // Inline initialization, real definiton, referenced.
> -// CHECK-DAG: @"\01?Inline_Def_Ref at S@@2HB" = linkonce_odr dso_local
> constant i32 5, comdat, align 4
> +// CHECK-DAG: @"?Inline_Def_Ref at S@@2HB" = linkonce_odr dso_local
> constant i32 5, comdat, align 4
>
>  // Out-of-line initialization.
> -// CHECK-DAG: @"\01?OutOfLine_Def_NotRef at S@@2HB" = dso_local constant
> i32 5, align 4
> -// CHECK-DAG: @"\01?OutOfLine_Def_Ref at S@@2HB" = dso_local constant i32
> 5, align 4
> +// CHECK-DAG: @"?OutOfLine_Def_NotRef at S@@2HB" = dso_local constant i32
> 5, align 4
> +// CHECK-DAG: @"?OutOfLine_Def_Ref at S@@2HB" = dso_local constant i32 5,
> align 4
>
> Modified: cfe/trunk/test/CodeGenCXX/ms-novtable.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/ms-novtable.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/ms-novtable.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/ms-novtable.cpp Fri Mar 16 13:36:49 2018
> @@ -1,14 +1,14 @@
>  // RUN: %clang_cc1 -triple i386-pc-win32 %s -emit-llvm -fms-extensions
> -fms-compatibility -fno-rtti -o - | FileCheck %s
>
> -// CHECK-NOT: @"\01??_7C@@6B@"
> +// CHECK-NOT: @"??_7C@@6B@"
>
> -// CHECK-DAG: @"\01??_7A2@@6B@"
> +// CHECK-DAG: @"??_7A2@@6B@"
>
> -// CHECK-DAG: @"\01??_7B2@@6B@"
> +// CHECK-DAG: @"??_7B2@@6B@"
>
> -// CHECK-NOT: @"\01??_7B1@@6B@"
> +// CHECK-NOT: @"??_7B1@@6B@"
>
> -// CHECK-NOT: @"\01??_7A1@@6B@"
> +// CHECK-NOT: @"??_7A1@@6B@"
>
>  struct __declspec(novtable) A1 {
>    virtual void a();
>
> Modified: cfe/trunk/test/CodeGenCXX/ms-property.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/ms-property.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/ms-property.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/ms-property.cpp Fri Mar 16 13:36:49 2018
> @@ -53,61 +53,61 @@ int main(int argc, char **argv) {
>    Test1 t(argc);
>    S *p1 = 0;
>    St<float> *p2 = 0;
> -  // CHECK: call i32 @"\01?GetX at S@@QEAAHHH at Z"(%class.S* %{{.+}}, i32
> 223, i32 11)
> +  // CHECK: call i32 @"?GetX at S@@QEAAHHH at Z"(%class.S* %{{.+}}, i32 223,
> i32 11)
>    int j = p1->x[223][11];
>    // CHECK: [[J:%.+]] = load i32, i32* %
> -  // CHECK-NEXT: call void @"\01?PutX at S@@QEAAXHHH at Z"(%class.S* %{{.+}},
> i32 23, i32 1, i32 [[J]])
> +  // CHECK-NEXT: call void @"?PutX at S@@QEAAXHHH at Z"(%class.S* %{{.+}}, i32
> 23, i32 1, i32 [[J]])
>    p1->x[23][1] = j;
> -  // CHECK: call float @"\01?GetX@?$St at M@@QEAAMMM at Z"(%class.St* %{{.+}},
> float 2.230000e+02, float 1.100000e+01)
> +  // CHECK: call float @"?GetX@?$St at M@@QEAAMMM at Z"(%class.St* %{{.+}},
> float 2.230000e+02, float 1.100000e+01)
>    float j1 = p2->x[223][11];
>    // CHECK: [[J1:%.+]] = load float, float* %
> -  // CHECK-NEXT: [[CALL:%.+]] = call float @"\01?PutX@?$St at M@@QEAAMMMM at Z"(%class.St*
> %{{.+}}, float 2.300000e+01, float 1.000000e+00, float [[J1]])
> +  // CHECK-NEXT: [[CALL:%.+]] = call float @"?PutX@?$St at M@@QEAAMMMM at Z"(%class.St*
> %{{.+}}, float 2.300000e+01, float 1.000000e+00, float [[J1]])
>    // CHECK-NEXT: [[CONV:%.+]] = fptosi float [[CALL]] to i32
>    // CHECK-NEXT: store i32 [[CONV]], i32*
>    argc = p2->x[23][1] = j1;
> -  // CHECK: [[IDX:%.+]] = call i32 @"\01?idx@@YAHXZ"()
> +  // CHECK: [[IDX:%.+]] = call i32 @"?idx@@YAHXZ"()
>    // CHECK-NEXT: [[CONV:%.+]] = sitofp i32 [[IDX]] to float
> -  // CHECK-NEXT: [[GET:%.+]] = call float @"\01?GetX@?$St at M@@QEAAMMM at Z"(%class.St*
> %{{.+}}, float [[CONV]], float 1.000000e+00)
> +  // CHECK-NEXT: [[GET:%.+]] = call float @"?GetX@?$St at M@@QEAAMMM at Z"(%class.St*
> %{{.+}}, float [[CONV]], float 1.000000e+00)
>    // CHECK-NEXT: [[INC:%.+]] = fadd float [[GET]], 1.000000e+00
>    // CHECK-NEXT: [[CONV:%.+]] = sitofp i32 [[IDX]] to float
> -  // CHECK-NEXT: call float @"\01?PutX@?$St at M@@QEAAMMMM at Z"(%class.St*
> %{{.+}}, float [[CONV]], float 1.000000e+00, float [[INC]])
> +  // CHECK-NEXT: call float @"?PutX@?$St at M@@QEAAMMMM at Z"(%class.St*
> %{{.+}}, float [[CONV]], float 1.000000e+00, float [[INC]])
>    ++p2->x[idx()][1];
> -  // CHECK: call void @"\01??$foo at H@@YAXHH at Z"(i32 %{{.+}}, i32 %{{.+}})
> +  // CHECK: call void @"??$foo at H@@YAXHH at Z"(i32 %{{.+}}, i32 %{{.+}})
>    foo(argc, (int)argv[0][0]);
>    // CHECK: [[P2:%.+]] = load %class.St*, %class.St** %
> -  // CHECK: [[T_X:%.+]] = call i32 @"\01?get_x at Test1@@QEBAHXZ"(%class.Test1*
> %{{.+}})
> +  // CHECK: [[T_X:%.+]] = call i32 @"?get_x at Test1@@QEBAHXZ"(%class.Test1*
> %{{.+}})
>    // CHECK: [[P1:%.+]] = load %class.S*, %class.S** %
> -  // CHECK: [[P1_X_22_33:%.+]] = call i32 @"\01?GetX at S@@QEAAHHH at Z"(%class.S*
> [[P1]], i32 22, i32 33)
> +  // CHECK: [[P1_X_22_33:%.+]] = call i32 @"?GetX at S@@QEAAHHH at Z"(%class.S*
> [[P1]], i32 22, i32 33)
>    // CHECK: [[CAST:%.+]] = sitofp i32 [[P1_X_22_33]] to double
>    // CHECK: [[ARGC:%.+]] = load i32, i32* %
>    // CHECK: [[CAST2:%.+]] = trunc i32 [[T_X]] to i8
> -  // CHECK: call void @"\01?PutY@?$St at M@@QEAAXDHN at Z"(%class.St* [[P2]],
> i8 [[CAST2]], i32 [[ARGC]], double [[CAST]])
> +  // CHECK: call void @"?PutY@?$St at M@@QEAAXDHN at Z"(%class.St* [[P2]], i8
> [[CAST2]], i32 [[ARGC]], double [[CAST]])
>    p2->y[t.X][argc] =  p1->x[22][33];
>    // CHECK: [[P2_1:%.+]] = load %class.St*, %class.St**
>    // CHECK: [[P2_2:%.+]] = load %class.St*, %class.St**
>    // CHECK: [[P1:%.+]] = load %class.S*, %class.S**
>    // CHECK: [[ARGC:%.+]] = load i32, i32* %
> -  // CHECK: [[P1_X_ARGC_0:%.+]] = call i32 @"\01?GetX at S@@QEAAHHH at Z"(%class.S*
> [[P1]], i32 [[ARGC]], i32 0)
> +  // CHECK: [[P1_X_ARGC_0:%.+]] = call i32 @"?GetX at S@@QEAAHHH at Z"(%class.S*
> [[P1]], i32 [[ARGC]], i32 0)
>    // CHECK: [[CAST:%.+]] = trunc i32 [[P1_X_ARGC_0]] to i8
> -  // CHECK: [[P2_Y_p1_X_ARGC_0_T:%.+]] = call i8 @"\01?GetY@?$St at M
> @@QEAADDVTest1@@@Z"(%class.St* [[P2_2]], i8 [[CAST]], %class.Test1*
> %{{.+}})
> +  // CHECK: [[P2_Y_p1_X_ARGC_0_T:%.+]] = call i8 @"?GetY@?$St at M
> @@QEAADDVTest1@@@Z"(%class.St* [[P2_2]], i8 [[CAST]], %class.Test1*
> %{{.+}})
>    // CHECK: [[CAST:%.+]] = sitofp i8 [[P2_Y_p1_X_ARGC_0_T]] to float
>    // CHECK: [[J:%.+]] = load i32, i32* %
>    // CHECK: [[CAST1:%.+]] = sitofp i32 [[J]] to float
>    // CHECK: [[J:%.+]] = load i32, i32* %
>    // CHECK: [[CAST2:%.+]] = sitofp i32 [[J]] to float
> -  // CHECK: call float @"\01?PutX@?$St at M@@QEAAMMMM at Z"(%class.St*
> [[P2_1]], float [[CAST2]], float [[CAST1]], float [[CAST]])
> +  // CHECK: call float @"?PutX@?$St at M@@QEAAMMMM at Z"(%class.St* [[P2_1]],
> float [[CAST2]], float [[CAST1]], float [[CAST]])
>    p2->x[j][j] = p2->y[p1->x[argc][0]][t];
> -  // CHECK: [[CALL:%.+]] = call %class.Test1* @"\01?GetTest1 at Test1
> @@SAPEAV1 at XZ"()
> -  // CHECK-NEXT: call i32 @"\01?get_x at Test1@@QEBAHXZ"(%class.Test1*
> [[CALL]])
> +  // CHECK: [[CALL:%.+]] = call %class.Test1* @"?GetTest1 at Test1
> @@SAPEAV1 at XZ"()
> +  // CHECK-NEXT: call i32 @"?get_x at Test1@@QEBAHXZ"(%class.Test1*
> [[CALL]])
>    return Test1::GetTest1()->X;
>  }
>
> -// CHECK: define linkonce_odr dso_local void @"\01??$foo at H@@YAXHH at Z"(i32
> %{{.+}}, i32 %{{.+}})
> -// CHECK: call i32 @"\01?GetX@?$St at H@@QEAAHHH at Z"(%class.St{{.+}}*
> [[BAR:%.+]], i32 %{{.+}} i32 %{{.+}})
> -// CHECK: call i32 @"\01?PutX@?$St at H@@QEAAHHHH at Z"(%class.St{{.+}}*
> [[BAR]], i32 %{{.+}}, i32 %{{.+}}, i32 %{{.+}})
> -// CHECK: call i32 @"\01?GetX@?$St at H@@QEAAHHH at Z"(%class.St{{.+}}*
> [[BAR]], i32 %{{.+}} i32 %{{.+}})
> -// CHECK: call void @"\01?PutY@?$St at H@@QEAAXDHN at Z"(%class.St{{.+}}*
> [[BAR]], i8 %{{.+}}, i32 %{{.+}}, double %{{.+}}
> -// CHECK: call i32 @"\01?GetX@?$St at H@@QEAAHHH at Z"(%class.St{{.+}}*
> [[BAR]], i32 %{{.+}} i32 %{{.+}})
> -// CHECK: call i8 @"\01?GetY@?$St at H@@QEAADDVTest1@@@Z"(%class.St{{.+}}*
> [[BAR]], i8 %{{.+}}, %class.Test1* %{{.+}})
> -// CHECK: call i32 @"\01?PutX@?$St at H@@QEAAHHHH at Z"(%class.St{{.+}}*
> [[BAR]], i32 %{{.+}}, i32 %{{.+}}, i32 %{{.+}})
> +// CHECK: define linkonce_odr dso_local void @"??$foo at H@@YAXHH at Z"(i32
> %{{.+}}, i32 %{{.+}})
> +// CHECK: call i32 @"?GetX@?$St at H@@QEAAHHH at Z"(%class.St{{.+}}*
> [[BAR:%.+]], i32 %{{.+}} i32 %{{.+}})
> +// CHECK: call i32 @"?PutX@?$St at H@@QEAAHHHH at Z"(%class.St{{.+}}* [[BAR]],
> i32 %{{.+}}, i32 %{{.+}}, i32 %{{.+}})
> +// CHECK: call i32 @"?GetX@?$St at H@@QEAAHHH at Z"(%class.St{{.+}}* [[BAR]],
> i32 %{{.+}} i32 %{{.+}})
> +// CHECK: call void @"?PutY@?$St at H@@QEAAXDHN at Z"(%class.St{{.+}}*
> [[BAR]], i8 %{{.+}}, i32 %{{.+}}, double %{{.+}}
> +// CHECK: call i32 @"?GetX@?$St at H@@QEAAHHH at Z"(%class.St{{.+}}* [[BAR]],
> i32 %{{.+}} i32 %{{.+}})
> +// CHECK: call i8 @"?GetY@?$St at H@@QEAADDVTest1@@@Z"(%class.St{{.+}}*
> [[BAR]], i8 %{{.+}}, %class.Test1* %{{.+}})
> +// CHECK: call i32 @"?PutX@?$St at H@@QEAAHHHH at Z"(%class.St{{.+}}* [[BAR]],
> i32 %{{.+}}, i32 %{{.+}}, i32 %{{.+}})
>  #endif //HEADER
>
> Modified: cfe/trunk/test/CodeGenCXX/ms-thread_local.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/ms-thread_local.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/ms-thread_local.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/ms-thread_local.cpp Fri Mar 16 13:36:49 2018
> @@ -5,18 +5,18 @@ struct A {
>    ~A();
>  };
>
> -// CHECK-DAG: $"\01??$a at X@@3UA@@A" = comdat any
> -// CHECK-DAG: @"\01??$a at X@@3UA@@A" = linkonce_odr dso_local thread_local
> global %struct.A zeroinitializer, comdat, align 1
> -// CHECK-DAG: @"\01??__E?$a at X@@YAXXZ$initializer$" = internal constant
> void ()* @"\01??__E?$a at X@@YAXXZ", section ".CRT$XDU", comdat($"\01??$a at X
> @@3UA@@A")
> +// CHECK-DAG: $"??$a at X@@3UA@@A" = comdat any
> +// CHECK-DAG: @"??$a at X@@3UA@@A" = linkonce_odr dso_local thread_local
> global %struct.A zeroinitializer, comdat, align 1
> +// CHECK-DAG: @"??__E?$a at X@@YAXXZ$initializer$" = internal constant void
> ()* @"??__E?$a at X@@YAXXZ", section ".CRT$XDU", comdat($"??$a at X@@3UA@@A")
>  template <typename T>
>  thread_local A a = A();
>
> -// CHECK-DAG: @"\01?b@@3UA@@A" = dso_local thread_local global %struct.A
> zeroinitializer, align 1
> +// CHECK-DAG: @"?b@@3UA@@A" = dso_local thread_local global %struct.A
> zeroinitializer, align 1
>  // CHECK-DAG: @"__tls_init$initializer$" = internal constant void ()*
> @__tls_init, section ".CRT$XDU"
>  thread_local A b;
>
>  // CHECK-LABEL: define internal void @__tls_init()
> -// CHECK: call void @"\01??__Eb@@YAXXZ"
> +// CHECK: call void @"??__Eb@@YAXXZ"
>
>  thread_local A &c = b;
>  thread_local A &d = c;
>
> Modified: cfe/trunk/test/CodeGenCXX/ms_wide_predefined_expr.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/ms_wide_predefined_expr.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/ms_wide_predefined_expr.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/ms_wide_predefined_expr.cpp Fri Mar 16
> 13:36:49 2018
> @@ -1,6 +1,6 @@
>  // RUN: %clang_cc1 %s -fms-extensions -triple i686-pc-win32 -emit-llvm -o
> - | FileCheck %s
>
> -// CHECK: @"\01??_C at _19DPFBEKIN@?$AAf?$AAu?$AAn?$AAc?$AA?$AA@" =
> linkonce_odr unnamed_addr constant [5 x i16] [i16 102, i16 117, i16 110,
> i16 99, i16 0], comdat, align 2
> +// CHECK: @"??_C at _19DPFBEKIN@?$AAf?$AAu?$AAn?$AAc?$AA?$AA@" =
> linkonce_odr unnamed_addr constant [5 x i16] [i16 102, i16 117, i16 110,
> i16 99, i16 0], comdat, align 2
>
>  void wprint(const wchar_t*);
>
>
> Modified: cfe/trunk/test/CodeGenCXX/msabi-blocks.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/msabi-blocks.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/msabi-blocks.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/msabi-blocks.cpp Fri Mar 16 13:36:49 2018
> @@ -7,25 +7,25 @@ void (^b)() = ^{
>    static int i = 0;
>  };
>
> -// CHECK-X86-DAG: @"\01?i@?1??_block_invoke@@YAXPAU__block_literal@
> @@Z at 4HA" ={{.*}} global i32 0
> -// CHECK-X64-DAG: @"\01?i@?1??_block_invoke@@YAXPEAU__block_literal@
> @@Z at 4HA" ={{.*}} global i32 0
> +// CHECK-X86-DAG: @"?i@?1??_block_invoke@@YAXPAU__block_literal@@@Z at 4HA"
> ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?1??_block_invoke@@YAXPEAU__block_literal@@@Z at 4HA"
> ={{.*}} global i32 0
>
>  void f(void) {
>    static int i = 0;
>    ^{ static int i = e(); }();
>
> -// CHECK-X86-DAG: @"\01?i@?1??_block_invoke_1@@YAXPAU__block_literal_1@
> @@Z?1??f@@YAXXZ at 4HA" ={{.*}} global i32 0
> -// CHECK-X64-DAG: @"\01?i@?1??_block_invoke_1@@YAXPEAU__block_literal_1@
> @@Z?1??f@@YAXXZ at 4HA" ={{.*}} global i32 0
> +// CHECK-X86-DAG: @"?i@?1??_block_invoke_1@@YAXPAU__block_literal_1@
> @@Z?1??f@@YAXXZ at 4HA" ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?1??_block_invoke_1@@YAXPEAU__block_literal_1@
> @@Z?1??f@@YAXXZ at 4HA" ={{.*}} global i32 0
>
>    ^{ static int i = e(); }();
>
> -// CHECK-X86-DAG: @"\01?i@?1??_block_invoke_2@@YAXPAU__block_literal_2@
> @@Z?1??f@@YAXXZ at 4HA" ={{.*}} global i32 0
> -// CHECK-X64-DAG: @"\01?i@?1??_block_invoke_2@@YAXPEAU__block_literal_2@
> @@Z?1??f@@YAXXZ at 4HA" ={{.*}} global i32 0
> +// CHECK-X86-DAG: @"?i@?1??_block_invoke_2@@YAXPAU__block_literal_2@
> @@Z?1??f@@YAXXZ at 4HA" ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?1??_block_invoke_2@@YAXPEAU__block_literal_2@
> @@Z?1??f@@YAXXZ at 4HA" ={{.*}} global i32 0
>
>    ^{ ^{ static int i = e(); }(); }();
>
> -// CHECK-X86-DAG: @"\01?i@?1??_block_invoke_3@@YAXPAU__block_literal_3@
> @@Z?1??_block_invoke_4@@YAXPAU__block_literal_4@@@Z?1??f@@YAXXZ at 4HA"
> ={{.*}} global i32 0
> -// CHECK-X64-DAG: @"\01?i@?1??_block_invoke_3@@YAXPEAU__block_literal_3@
> @@Z?1??_block_invoke_4@@YAXPEAU__block_literal_4@@@Z?1??f@@YAXXZ at 4HA"
> ={{.*}} global i32 0
> +// CHECK-X86-DAG: @"?i@?1??_block_invoke_3@@YAXPAU__block_literal_3@
> @@Z?1??_block_invoke_4@@YAXPAU__block_literal_4@@@Z?1??f@@YAXXZ at 4HA"
> ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?1??_block_invoke_3@@YAXPEAU__block_literal_3@
> @@Z?1??_block_invoke_4@@YAXPEAU__block_literal_4@@@Z?1??f@@YAXXZ at 4HA"
> ={{.*}} global i32 0
>  }
>
>
> @@ -36,47 +36,47 @@ void g(void) {
>
>  template void g<char>(void);
>
> -// CHECK-X86-DAG: @"\01?i@?2??_block_invoke_1@@YAXPAU__block_literal_1@
> @@Z?2???$g at D@@YAXXZ at 4HA" ={{.*}} global i32 0
> -// CHECK-X64-DAG: @"\01?i@?2??_block_invoke_1@@YAXPEAU__block_literal_1@
> @@Z?2???$g at D@@YAXXZ at 4HA" ={{.*}} global i32 0
> +// CHECK-X86-DAG: @"?i@?2??_block_invoke_1@@YAXPAU__block_literal_1@
> @@Z?2???$g at D@@YAXXZ at 4HA" ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?2??_block_invoke_1@@YAXPEAU__block_literal_1@
> @@Z?2???$g at D@@YAXXZ at 4HA" ={{.*}} global i32 0
>
>  template void g<int>(void);
>
> -// CHECK-X86-DAG: @"\01?i@?2??_block_invoke_1@@YAXPAU__block_literal_1@
> @@Z?2???$g at H@@YAXXZ at 4HA" ={{.*}} global i32 0
> -// CHECK-X64-DAG: @"\01?i@?2??_block_invoke_1@@YAXPEAU__block_literal_1@
> @@Z?2???$g at H@@YAXXZ at 4HA" ={{.*}} global i32 0
> +// CHECK-X86-DAG: @"?i@?2??_block_invoke_1@@YAXPAU__block_literal_1@
> @@Z?2???$g at H@@YAXXZ at 4HA" ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?2??_block_invoke_1@@YAXPEAU__block_literal_1@
> @@Z?2???$g at H@@YAXXZ at 4HA" ={{.*}} global i32 0
>
>  inline void h(void) {
>    ^{ static int i = e(); }();
>  }
>
> -// CHECK-X86-DAG: @"\01?i@?2??_block_invoke_1@@YAXPAU__block_literal_1@
> @@Z?2??h@@YAXXZ at 4HA" ={{.*}} global i32 0
> -// CHECK-X64-DAG: @"\01?i@?2??_block_invoke_1@@YAXPEAU__block_literal_1@
> @@Z?2??h@@YAXXZ at 4HA" ={{.*}} global i32 0
> +// CHECK-X86-DAG: @"?i@?2??_block_invoke_1@@YAXPAU__block_literal_1@
> @@Z?2??h@@YAXXZ at 4HA" ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?2??_block_invoke_1@@YAXPEAU__block_literal_1@
> @@Z?2??h@@YAXXZ at 4HA" ={{.*}} global i32 0
>
>  struct s {
>    int i = ^{ static int i = e(); return ++i; }();
>
> -// CHECK-X86-DAG: @"\01?i@?0??_block_invoke_1 at 0s
> @@YAXPAU__block_literal_1@@@Z at 4HA" ={{.*}} global i32 0
> -// CHECK-X64-DAG: @"\01?i@?0??_block_invoke_1 at 0s
> @@YAXPEAU__block_literal_1@@@Z at 4HA" ={{.*}} global i32 0
> +// CHECK-X86-DAG: @"?i@?0??_block_invoke_1 at 0s@@YAXPAU__block_literal_1@
> @@Z at 4HA" ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?0??_block_invoke_1 at 0s@@YAXPEAU__block_literal_1@
> @@Z at 4HA" ={{.*}} global i32 0
>
>    int j = ^{ static int i = e(); return ++i; }();
>
> -// CHECK-X86-DAG: @"\01?i@?0??_block_invoke_1 at j@s@
> @YAXPAU__block_literal_1@@@Z at 4HA" ={{.*}} global i32 0
> -// CHECK-X64-DAG: @"\01?i@?0??_block_invoke_1 at j@s@
> @YAXPEAU__block_literal_1@@@Z at 4HA" ={{.*}} global i32 0
> +// CHECK-X86-DAG: @"?i@?0??_block_invoke_1 at j@s@@YAXPAU__block_literal_1@
> @@Z at 4HA" ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?0??_block_invoke_1 at j@s@@YAXPEAU__block_literal_1@
> @@Z at 4HA" ={{.*}} global i32 0
>
>    void m(int i = ^{ static int i = e(); return ++i; }(),
>           int j = ^{ static int i = e(); return ++i; }()) {}
>
> -// CHECK-X86-DAG: @"\01?i@?0??_block_invoke_1_1@
> @YAXPAU__block_literal_1_1@@@Z?0??m at s@@QAEXHH at Z@4HA" ={{.*}} global i32 0
> -// CHECK-X86-DAG: @"\01?i@?0??_block_invoke_1_2@
> @YAXPAU__block_literal_1_2@@@Z?0??m at s@@QAEXHH at Z@4HA" ={{.*}} global i32 0
> -// CHECK-X64-DAG: @"\01?i@?0??_block_invoke_1_1@
> @YAXPEAU__block_literal_1_1@@@Z?0??m at s@@QEAAXHH at Z@4HA" ={{.*}} global i32
> 0
> -// CHECK-X64-DAG: @"\01?i@?0??_block_invoke_1_2@
> @YAXPEAU__block_literal_1_2@@@Z?0??m at s@@QEAAXHH at Z@4HA" ={{.*}} global i32
> 0
> +// CHECK-X86-DAG: @"?i@?0??_block_invoke_1_1@@YAXPAU__block_literal_1_1@
> @@Z?0??m at s@@QAEXHH at Z@4HA" ={{.*}} global i32 0
> +// CHECK-X86-DAG: @"?i@?0??_block_invoke_1_2@@YAXPAU__block_literal_1_2@
> @@Z?0??m at s@@QAEXHH at Z@4HA" ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?0??_block_invoke_1_1@@YAXPEAU__block_literal_1_1@
> @@Z?0??m at s@@QEAAXHH at Z@4HA" ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?0??_block_invoke_1_2@@YAXPEAU__block_literal_1_2@
> @@Z?0??m at s@@QEAAXHH at Z@4HA" ={{.*}} global i32 0
>
>    void n(int = ^{ static int i = e(); return ++i; }(),
>           int = ^{ static int i = e(); return ++i; }()) {}
>
> -// CHECK-X86-DAG: @"\01?i@?0??_block_invoke_1_1@
> @YAXPAU__block_literal_1_1@@@Z?0??n at s@@QAEXHH at Z@4HA" ={{.*}} global i32 0
> -// CHECK-X86-DAG: @"\01?i@?0??_block_invoke_1_2@
> @YAXPAU__block_literal_1_2@@@Z?0??n at s@@QAEXHH at Z@4HA" ={{.*}} global i32 0
> -// CHECK-X64-DAG: @"\01?i@?0??_block_invoke_1_1@
> @YAXPEAU__block_literal_1_1@@@Z?0??n at s@@QEAAXHH at Z@4HA" ={{.*}} global i32
> 0
> -// CHECK-X64-DAG: @"\01?i@?0??_block_invoke_1_2@
> @YAXPEAU__block_literal_1_2@@@Z?0??n at s@@QEAAXHH at Z@4HA" ={{.*}} global i32
> 0
> +// CHECK-X86-DAG: @"?i@?0??_block_invoke_1_1@@YAXPAU__block_literal_1_1@
> @@Z?0??n at s@@QAEXHH at Z@4HA" ={{.*}} global i32 0
> +// CHECK-X86-DAG: @"?i@?0??_block_invoke_1_2@@YAXPAU__block_literal_1_2@
> @@Z?0??n at s@@QAEXHH at Z@4HA" ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?0??_block_invoke_1_1@@YAXPEAU__block_literal_1_1@
> @@Z?0??n at s@@QEAAXHH at Z@4HA" ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?0??_block_invoke_1_2@@YAXPEAU__block_literal_1_2@
> @@Z?0??n at s@@QEAAXHH at Z@4HA" ={{.*}} global i32 0
>
>  };
>
> @@ -84,8 +84,8 @@ struct t {
>    struct u {
>      int i = ^{ static int i = e(); return ++i; }();
>
> -// CHECK-X86-DAG: @"\01?i@?0??_block_invoke_1 at 0u@t@
> @YAXPAU__block_literal_1@@@Z at 4HA" ={{.*}} global i32 0
> -// CHECK-X64-DAG: @"\01?i@?0??_block_invoke_1 at 0u@t@
> @YAXPEAU__block_literal_1@@@Z at 4HA" ={{.*}} global i32 0
> +// CHECK-X86-DAG: @"?i@?0??_block_invoke_1 at 0u@t@@YAXPAU__block_literal_1@
> @@Z at 4HA" ={{.*}} global i32 0
> +// CHECK-X64-DAG: @"?i@?0??_block_invoke_1 at 0u@t@
> @YAXPEAU__block_literal_1@@@Z at 4HA" ={{.*}} global i32 0
>
>    };
>  };
>
> Modified: cfe/trunk/test/CodeGenCXX/msabi-swiftcall-cc.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/msabi-swiftcall-cc.cpp?rev=327738&r1=327737&r2=327738&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/msabi-swiftcall-cc.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/msabi-swiftcall-cc.cpp Fri Mar 16 13:36:49
> 2018
> @@ -1,28 +1,28 @@
>  // RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fdeclspec
> -emit-llvm %s -o - | FileCheck %s
>
>  void __attribute__((__swiftcall__)) f() {}
> -// CHECK-DAG: @"\01?f@@YSXXZ"
> +// CHECK-DAG: @"?f@@YSXXZ"
>
>  void (__attribute__((__swiftcall__)) *p)();
> -// CHECK-DAG: @"\01?p@@3P6SXXZA"
> +// CHECK-DAG: @"?p@@3P6SXXZA"
>
>  namespace {
>  void __attribute__((__swiftcall__)) __attribute__((__used__)) f() { }
> -// CHECK-DAG: "\01?f@?A@@YSXXZ"
> +// CHECK-DAG: "?f@?A@@YSXXZ"
>  }
>
>  namespace n {
>  void __attribute__((__swiftcall__)) f() {}
> -// CHECK-DAG: "\01?f at n@@YSXXZ"
> +// CHECK-DAG: "?f at n@@YSXXZ"
>  }
>
>  struct __declspec(dllexport) S {
>    S(const S &) = delete;
>    S & operator=(const S &) = delete;
>    void __attribute__((__swiftcall__)) m() { }
> -  // CHECK-DAG: "\01?m at S@@QASXXZ"
> +  // CHECK-DAG: "?m at S@@QASXXZ"
>  };
>
>  void f(void (__attribute__((__swiftcall__))())) {}
> -// CHECK-DAG: "\01?f@@YAXP6SXXZ at Z"
> +// CHECK-DAG: "?f@@YAXP6SXXZ at Z"
>
>
> Modified: cfe/trunk/test/CodeGenCXX/pr20719.cpp
> URL: http://l
> <http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/pr20719.cpp?rev=327738&r1=327737&r2=327738&view=diff>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180318/dc62d22d/attachment-0001.html>


More information about the cfe-commits mailing list