标题是一个轻微的笑话。
我今天刚刚发现,ghc
接受任何优化级别而不抱怨。我知道-O2
应该是最高优化级别,并且有一个建议的-O3
here,但我很好奇当您错误地指定更高的优化级别时会发生什么。 ghc
默认为-O2
还是根本不进行优化?
答案 0 :(得分:11)
它似乎被夹在compiler/main/DynFlags.hs
中的0到2之间:
updOptLevel :: Int -> DynFlags -> DynFlags
-- ^ Sets the 'DynFlags' to be appropriate to the optimisation level
updOptLevel n dfs
= dfs2{ optLevel = final_n }
where
final_n = max 0 (min 2 n) -- Clamp to 0 <= n <= 2
...