# and not worth re-implementing in our Makefile framework.
ifneq "$(HaveLibGmp)" "YES"
-ifneq "$(HaveFrameworkHaskellSupport)" "YES"
+ifneq "$(HaveFrameworkGMP)" "YES"
boot ::
if [ -f gmp/config.status ]; then \
cd gmp && CC=$(WhatGccIsCalled) ./config.status; \
-\#include ProfHeap.h \
-\#include LdvProfile.h \
-\#include Profiling.h \
- -\#include Apply.h
+ -\#include OSThreads.h \
+ -\#include Apply.h \
+ -\#include SMP.h
ifeq "$(Windows)" "YES"
PrimOps_HC_OPTS += -\#include '<windows.h>' -\#include win32/AsyncIO.h
endif
+# -O3 helps unroll some loops (especially in copy() with a constant argument).
+# -fno-strict-aliasing is a hack because we often mix StgPtr and StgClosure pointers
+# to the same object, and gcc will assume these don't alias. eg. it happens in
+# copy() with gcc 3.4.3, the upd_evacee() assigments get moved before the object copy.
+GC_HC_OPTS += -optc-O3 -optc-fno-strict-aliasing
+
# Cmm must be compiled via-C for now, because the NCG can't handle loops
SRC_HC_OPTS += -fvia-C
$(HC_POST_OPTS)
%.$(way_)hc : %.cmm $(H_FILES)
- $(HC_PRE_OPTS)
$(HC) $(HC_OPTS) -C $< -o $@
- $(HC_POST_OPTS)
%.$(way_)s : %.cmm $(H_FILES)
- $(HC_PRE_OPTS)
$(HC) $(HC_OPTS) -S $< -o $@
- $(HC_POST_OPTS)
endif
#-----------------------------------------------------------------------------