This approach is not good enough. Working on the new solution. This reverts commit r280907. llvm-svn: 281689