diff --git a/clang/lib/CodeGen/CodeGenTBAA.cpp b/clang/lib/CodeGen/CodeGenTBAA.cpp index 0a8c293cb70c..f104c2f2f575 100644 --- a/clang/lib/CodeGen/CodeGenTBAA.cpp +++ b/clang/lib/CodeGen/CodeGenTBAA.cpp @@ -277,9 +277,14 @@ CodeGenTBAA::getTBAAStructTypeInfo(QualType QTy) { // TODO: This is using the RTTI name. Is there a better way to get // a unique string for a type? SmallString<256> OutName; - llvm::raw_svector_ostream Out(OutName); - MContext.mangleCXXRTTIName(QualType(Ty, 0), Out); - Out.flush(); + if (Features.CPlusPlus) { + // Don't use mangleCXXRTTIName for C code. + llvm::raw_svector_ostream Out(OutName); + MContext.mangleCXXRTTIName(QualType(Ty, 0), Out); + Out.flush(); + } else { + OutName = RD->getName(); + } // Create the struct type node with a vector of pairs (offset, type). return StructTypeMetadataCache[Ty] = MDHelper.createTBAAStructTypeNode(OutName, Fields); diff --git a/clang/test/CodeGen/bitfield.c b/clang/test/CodeGen/bitfield.c index 03748a067b15..41befe7c1766 100644 --- a/clang/test/CodeGen/bitfield.c +++ b/clang/test/CodeGen/bitfield.c @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - -O3 | FileCheck %s +// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - -O3 -struct-path-tbaa | FileCheck %s --check-prefix=PATH static int f0(int n) { struct s0 { @@ -17,6 +18,8 @@ static int f0(int n) { int g0(void) { // CHECK-LABEL: @g0() // CHECK: ret i32 1 +// PATH-LABEL: @g0() +// PATH: ret i32 1 return f0(-1) + 44335655; } @@ -37,6 +40,8 @@ static int f1(void) { int g1(void) { // CHECK-LABEL: @g1() // CHECK: ret i32 1 +// PATH-LABEL: @g1() +// PATH: ret i32 1 return f1() + 16; } @@ -55,6 +60,8 @@ static int f2(void) { int g2(void) { // CHECK-LABEL: @g2() // CHECK: ret i32 1 +// PATH-LABEL: @g2() +// PATH: ret i32 1 return f2() - 9; } @@ -76,5 +83,7 @@ static int f3(int n) { int g3(void) { // CHECK-LABEL: @g3() // CHECK: ret i32 1 +// PATH-LABEL: @g3() +// PATH: ret i32 1 return f3(20) + 130725747; } diff --git a/clang/test/CodeGen/may-alias.c b/clang/test/CodeGen/may-alias.c index 10339a57d304..8b30c608516f 100644 --- a/clang/test/CodeGen/may-alias.c +++ b/clang/test/CodeGen/may-alias.c @@ -37,4 +37,4 @@ void test1(struct Test1MA *p1, struct Test1 *p2) { // PATH: [[TAG_INT]] = metadata !{metadata [[TYPE_INT:!.*]], metadata [[TYPE_INT]], i64 0} // PATH: [[TYPE_INT]] = metadata !{metadata !"int", metadata [[TYPE_CHAR]] // PATH: [[TAG_test1_x]] = metadata !{metadata [[TYPE_test1:!.*]], metadata [[TYPE_INT]], i64 0} -// PATH: [[TYPE_test1]] = metadata !{metadata !"_ZTS5Test1", metadata [[TYPE_INT]], i64 0} +// PATH: [[TYPE_test1]] = metadata !{metadata !"Test1", metadata [[TYPE_INT]], i64 0}