diff options
Diffstat (limited to 'llvm/lib/Support/CommandLine.cpp')
| -rw-r--r-- | llvm/lib/Support/CommandLine.cpp | 31 | 
1 files changed, 15 insertions, 16 deletions
| diff --git a/llvm/lib/Support/CommandLine.cpp b/llvm/lib/Support/CommandLine.cpp index 87dfc5a703f..8cd483a25e5 100644 --- a/llvm/lib/Support/CommandLine.cpp +++ b/llvm/lib/Support/CommandLine.cpp @@ -388,23 +388,22 @@ static void ExpandResponseFiles(int argc, char** argv,        // Check that the response file is not empty (mmap'ing empty        // files can be problematic).        const sys::FileStatus *FileStat = respFile.getFileStatus(); -      if (!FileStat) -        continue; -      if (FileStat->getSize() == 0) -        continue; - -      // Mmap the response file into memory. -      OwningPtr<MemoryBuffer> -        respFilePtr(MemoryBuffer::getFile(respFile.c_str())); - -      if (respFilePtr == 0) -        continue; - -      ParseCStringVector(newArgv, respFilePtr->getBufferStart()); -    } -    else { -      newArgv.push_back(strdup(arg)); +      if (FileStat && FileStat->getSize() != 0) { + +        // Mmap the response file into memory. +        OwningPtr<MemoryBuffer> +          respFilePtr(MemoryBuffer::getFile(respFile.c_str())); + +        // If we could open the file, parse its contents, otherwise +        // pass the @file option verbatim. +        // TODO: support recursion. +        if (respFilePtr != 0) { +          ParseCStringVector(newArgv, respFilePtr->getBufferStart()); +          continue; +        } +      }      } +    newArgv.push_back(strdup(arg));    }  } | 

