summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2011-09-02 18:07:19 +0000
committerDuncan Sands <baldrick@free.fr>2011-09-02 18:07:19 +0000
commit5c04c62765a0bb6c42b5d940867a53c93734fa06 (patch)
tree38f927dc43f4e4648cb835db2b401d51acf77205 /llvm/lib/CodeGen
parent54e09b47996ec06c1220eb6314d0cbd47a753d24 (diff)
downloadbcm5719-llvm-5c04c62765a0bb6c42b5d940867a53c93734fa06.tar.gz
bcm5719-llvm-5c04c62765a0bb6c42b5d940867a53c93734fa06.zip
Darwin wants ctors/dtors to be ordered the other way round to linux.
llvm-svn: 139015
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 6084a3c8f59..ddf5f9ccde6 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -1265,7 +1265,16 @@ void AsmPrinter::EmitXXStructorList(const Constant *List) {
}
// 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);
}
OpenPOWER on IntegriCloud