diff --git a/Makefile.rules b/Makefile.rules
index 10970cfbc17bceda81f0653ed2858c9fa51ac506..d917d87082c30a83ebb11291511f60d65ffba0ad 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -36,6 +36,12 @@ else
 endif
 
 OPTIMIZE?=-O6
+ifneq ($(findstring darwin,$(OSARCH)),)
+  ifeq ($(shell /usr/bin/sw_vers -productVersion | cut -c1-4),10.6)
+    # Snow Leopard has an issue with this optimization flag on large files (like chan_sip)
+    OPTIMIZE+=-fno-inline-functions
+  endif
+endif
 
 ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS)),)
     _ASTCFLAGS+=$(OPTIMIZE)
diff --git a/codecs/gsm/Makefile b/codecs/gsm/Makefile
index 831feaa5f37122bd2edd80a7eed018dd7700428f..aae356de671b3360df3b6c45e09b72bd329c2e1a 100644
--- a/codecs/gsm/Makefile
+++ b/codecs/gsm/Makefile
@@ -40,10 +40,15 @@ WAV49	= -DWAV49
 ifeq (, $(findstring $(OSARCH) , Darwin SunOS ))
 ifeq (, $(findstring $(PROC) , x86_64 amd64 ultrasparc sparc64 arm armv5b armeb ppc powerpc ppc64 ia64 s390 bfin mipsel mips))
 ifeq (, $(findstring $(shell uname -m) , ppc ppc64 alpha armv4l s390 ))
+ifeq ($(shell /usr/bin/sw_vers -productVersion | cut -c1-4),10.6)
+# Wow... Snow Leopard is BROKEN!
+OPTIMIZE+=-mtune=native
+else
 OPTIMIZE+=-march=$(PROC)
 endif
 endif
 endif
+endif
 
 #The problem with sparc is the best stuff is in newer versions of gcc (post 3.0) only.
 #This works for even old (2.96) versions of gcc and provides a small boost either way.