Darwin wants ctors/dtors to be ordered the other way round to linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139015 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 6084a3c..ddf5f9c 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -1265,7 +1265,16 @@
   }
 
   // Emit the function pointers in reverse priority order.
-  std::sort(Structors.rbegin(), Structors.rend(), priority_order);
+  switch (MAI->getStructorOutputOrder()) {
+  case Structors::None:
+    break;
+  case Structors::PriorityOrder:
+    std::sort(Structors.begin(), Structors.end(), priority_order);
+    break;
+  case Structors::ReversePriorityOrder:
+    std::sort(Structors.rbegin(), Structors.rend(), priority_order);
+    break;
+  }
   for (unsigned i = 0, e = Structors.size(); i != e; ++i)
     EmitGlobalConstant(Structors[i].second);
 }