understanding ghc compilation driver architecture