Add prefix only if it is needed.
authorDevang Patel <dpatel@apple.com>
Mon, 17 Aug 2009 23:17:17 +0000 (23:17 +0000)
committerDevang Patel <dpatel@apple.com>
Mon, 17 Aug 2009 23:17:17 +0000 (23:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79289 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/Mangler.cpp
test/FrontendObjC/2009-08-17-DebugInfo.m [new file with mode: 0644]

index 44cf77826629546e4c35d25d9c92824ed575ad56..8c918434e3fa1f3ee0759784c6c639d1fe3e5e42 100644 (file)
@@ -105,8 +105,9 @@ std::string Mangler::makeNameProper(const std::string &X,
 
     return Result;
   }
-  
-  Result = X.substr(0, I-X.begin());
+
+  if (NeedPrefix)
+    Result = X.substr(0, I-X.begin());
     
   // Otherwise, construct the string the expensive way.
   for (std::string::const_iterator E = X.end(); I != E; ++I) {
diff --git a/test/FrontendObjC/2009-08-17-DebugInfo.m b/test/FrontendObjC/2009-08-17-DebugInfo.m
new file mode 100644 (file)
index 0000000..cf96238
--- /dev/null
@@ -0,0 +1,30 @@
+// This is a regression test on debug info to make sure that we can set a
+// breakpoint on a objective message.
+// RUN: %llvmgcc -S -O0 -g %s -o - | llvm-as | llc -o %t.s -f -O0 
+// RUN: %compile_c %t.s -o %t.o
+// RUN: %link %t.o -o %t.exe -framework Foundation
+// RUN: echo {break randomFunc\n} > %t.in 
+// RUN: gdb -q -batch -n -x %t.in %t.exe | tee %t.out | \
+// RUN:   grep {Breakpoint 1 at 0x.*: file 2009-08-17-DebugInfo.m, line 22}
+// XTARGETS: darwin
+@interface MyClass
+{
+ int my;
+}
++ init;
+- randomFunc;
+@end
+
+@implementation MyClass
++ init {
+}
+- randomFunc { 
+  my = 42;
+}
+@end
+
+int main() {
+  id o = [MyClass init];
+  [o randomFunc];
+  return 0;
+}