#-fno-warn-unused-do-bind ですが、GHC のバージョンで差があるので、僕は以下のように書いています。
#library
if impl(ghc >= 6.12)
GHC-Options: -Wall -fno-warn-unused-do-bind
else
GHC-Options: -Wall
#孤児問題は解決したようですが、僕なら Cabal ファイルに書くのは忍びないので、以下を関係するファイルにだけ書きます。
#{-# OPTIONS_GHC -fno-warn-orphans #-}
#TH の問題は、GHC に -ddump-splices を付けてみると、ある程度分かりませんか?
##