sync file with LLVM trunk