GHC не оптимизируя модули, кроме основного модуля

В настоящее время я пишу многомодульную программу в Хаскелле. Я нашел странную проблему, где мои файлы не оптимизируются корректно, несмотря на то, что я передаю в -O2 и так далее. Файлы, о которых идет речь, являются общими 3D векторными математическими модулями. При компиляции индивидуально в .o эти модули оптимизируются корректно. При компиляции в рамках более крупной программы с использованием --make они оптимизируются некорректно. Ядро совершенно другое.

Я поместил в файл vector.hs простой урезанный тестовый код:

data TestVector = TestVector !Double !Double !Double !Double

addVec :: TestVector -> TestVector -> TestVector

addVec (TestVector x1 y1 z1 w1) (TestVector x2 y2 z2 w2) =
  TestVector (x1 + x2) (y1 + y2) (z1 + z2) (w1 + w2)

И импортировал его из main....

import Vector

Этот код компилируется по-другому, как отдельный .hs файл, в отличие от того, когда я собираю main.hs, используя --make

Моя командная строка:

ghc -tmpdir tmp -hidir hi -odir obj -fext-core -fexcess-precision -funbox-strict-fields -threaded -rtsopts -fwarn-missing-signatures -Wall -O2 Main.hs -o main

Cheers

27
задан Upendra Chaudhari 14 October 2011 в 12:43
поделиться