SRC_CC_OPTS += $(GhcRtsCcOpts)
SRC_HC_OPTS += $(GhcRtsHcOpts)
+ifneq "$(GhcWithSMP)" "YES"
+SRC_CC_OPTS += -DNOSMP
+SRC_HC_OPTS += -optc-DNOSMP
+endif
+
ifneq "$(DLLized)" "YES"
SRC_HC_OPTS += -static
endif
if [ -f gmp/config.status ]; then \
cd gmp && CC=$(WhatGccIsCalled) ./config.status; \
else \
- cd gmp && CC=$(WhatGccIsCalled) ./configure --enable-shared=no \
+ cd gmp && CC=$(WhatGccIsCalled) $(SHELL) configure --enable-shared=no \
--host=`echo $(HOSTPLATFORM) | sed 's/i[567]86/i486/g'`; \
fi
# -O3 helps unroll some loops (especially in copy() with a constant argument).
GC_HC_OPTS += -optc-O3
+# Without this, thread_obj will not be inlined (at least on x86 with GCC 4.1.0)
+GCCompact_HC_OPTS += -optc-finline-limit=2500
+
# -fno-strict-aliasing is required for the runtime, because we often
# use a variety of types to represent closure pointers (StgPtr,
# StgClosure, StgMVar, etc.), and without -fno-strict-aliasing gcc is
# upd_evacee() assigments get moved before the object copy.
SRC_CC_OPTS += -fno-strict-aliasing
+# Cmm must be compiled via-C for now, because the NCG can't handle loops
+SRC_HC_OPTS += -fvia-C
+
# We *want* type-checking of hand-written cmm.
SRC_HC_OPTS += -dcmm-lint