Fix exception handling line table problems introduced by r173593

r173593 made us a little too eager to associate all code at the end of a
function with the user-written 'return' line. This caused problems with
breakpoints as they'd be set in exception handling code preceeding the
actual non-exception return handling code, leading to the breakpoint never
being hit in non-exceptional execution.

This change restores the pre-r173593 exception handling line information where
the cleanup code is associated with the '}' not the return line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174206 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/CodeGenCXX/debug-info-class.cpp b/test/CodeGenCXX/debug-info-class.cpp
index 131693b..410b921 100644
--- a/test/CodeGenCXX/debug-info-class.cpp
+++ b/test/CodeGenCXX/debug-info-class.cpp
@@ -1,21 +1,20 @@
 // RUN: %clang  -emit-llvm -g -S %s -o - | FileCheck %s
 struct foo;
-void func(foo *f) { // CHECK: DW_TAG_structure_type
+void func(foo *f) {
 }
 class bar;
-void func(bar *f) { // CHECK: DW_TAG_class_type
+void func(bar *f) {
 }
 union baz;
-void func(baz *f) { // CHECK: DW_TAG_union_type
+void func(baz *f) {
 }
-class B { // CHECK: DW_TAG_class_type
+class B {
 public:
   virtual ~B();
-// CHECK: metadata !"_vptr$B", {{.*}}, i32 64, metadata !{{.*}}} ; [ DW_TAG_member ]
 };
-struct A { // CHECK: DW_TAG_structure_type
+struct A {
   int one;
-  static const int HdrSize = 52; // CHECK: HdrSize
+  static const int HdrSize = 52;
   int two;
   A() {
     int x = 1;
@@ -23,7 +22,22 @@
 };
 
 
-int main() {
-  A a;
+int main(int argc, char **argv) {
   B b;
+  if (argc) {
+    A a;
+  }
+  return 0;
 }
+
+// CHECK: unwind label %terminate.lpad, !dbg ![[EXCEPTLOC:.*]]
+// CHECK: store i32 0, i32* %retval, !dbg ![[RETLOC:.*]]
+// CHECK: DW_TAG_structure_type ] [foo]
+// CHECK: DW_TAG_class_type ] [bar]
+// CHECK: DW_TAG_union_type ] [baz]
+// CHECK: DW_TAG_structure_type ] [A]
+// CHECK: HdrSize
+// CHECK: DW_TAG_class_type ] [B]
+// CHECK: metadata !"_vptr$B", {{.*}}, i32 64, metadata !{{.*}}} ; [ DW_TAG_member ]
+// CHECK: ![[EXCEPTLOC]] = metadata !{i32 31,
+// CHECK: ![[RETLOC]] = metadata !{i32 30,