The allocated exception slot does not alias anything;  should fix self-host.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138615 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGException.cpp b/lib/CodeGen/CGException.cpp
index 263ac63..0605f62 100644
--- a/lib/CodeGen/CGException.cpp
+++ b/lib/CodeGen/CGException.cpp
@@ -1034,7 +1034,8 @@
   // Perform the copy construction.
   CGF.EmitAggExpr(copyExpr, AggValueSlot::forAddr(ParamAddr, Qualifiers(),
                                                   AggValueSlot::IsNotDestructed,
-                                          AggValueSlot::DoesNotNeedGCBarriers));
+                                          AggValueSlot::DoesNotNeedGCBarriers,
+                                                  AggValueSlot::IsNotAliased));
 
   // Leave the terminate scope.
   CGF.EHStack.popTerminate();
diff --git a/test/CodeGenCXX/exceptions.cpp b/test/CodeGenCXX/exceptions.cpp
index 0ce9679..4a32de0 100644
--- a/test/CodeGenCXX/exceptions.cpp
+++ b/test/CodeGenCXX/exceptions.cpp
@@ -390,3 +390,16 @@
     return new B(A(), new B(A(), 0));
   }
 }
+
+// Just don't crash.
+namespace test8 {
+  struct A {
+    A(const A&);
+    ~A();
+  };
+
+  A makeA();
+  void test() {
+    throw makeA();
+  }
+}