summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorIan Lynagh <igloo@earth.li>2011-10-06 20:43:36 +0100
committerIan Lynagh <igloo@earth.li>2011-10-06 20:43:36 +0100
commit3aa2ee2bdbf6bb07de23a40a67d95fd975903ebc (patch)
treecccac8d788a2d4a8916ef03ac49e998697565dfd /compiler
parenta7be91a914b7f1608d259f9154b35a270674645b (diff)
parentbe6e231c961424ee96c0dc1269f2551daf314048 (diff)
downloadhaskell-3aa2ee2bdbf6bb07de23a40a67d95fd975903ebc.tar.gz
Merge branch 'master' of mac:ghc/git/val32/.
Diffstat (limited to 'compiler')
-rw-r--r--compiler/main/DriverPipeline.hs12
1 files changed, 8 insertions, 4 deletions
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs
index 4806a1d004..220fac012b 100644
--- a/compiler/main/DriverPipeline.hs
+++ b/compiler/main/DriverPipeline.hs
@@ -1680,11 +1680,15 @@ linkBinary dflags o_files dep_packages = do
else [])
-- '-no_compact_unwind'
- -- - C++/Objective-C exceptions cannot use optimised stack
- -- unwinding code (the optimised form is the default in Xcode 4 on
- -- x86_64).
+ -- C++/Objective-C exceptions cannot use optimised
+ -- stack unwinding code. The optimised form is the
+ -- default in Xcode 4 on at least x86_64, and
+ -- without this flag we're also seeing warnings
+ -- like
+ -- ld: warning: could not create compact unwind for .LFB3: non-standard register 5 being saved in prolog
+ -- on x86.
++ (if platformOS (targetPlatform dflags) == OSDarwin &&
- platformArch (targetPlatform dflags) == ArchX86_64
+ platformArch (targetPlatform dflags) `elem` [ArchX86, ArchX86_64]
then ["-Wl,-no_compact_unwind"]
else [])