- Fixed broken Win32 build
authorAnton Korobeynikov <asl@math.spbu.ru>
Fri, 1 Sep 2006 20:35:17 +0000 (20:35 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Fri, 1 Sep 2006 20:35:17 +0000 (20:35 +0000)
- Removed warning about clobbered parameter in Bytecode/Reader

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30026 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Bytecode/Reader/Reader.cpp
lib/Bytecode/Reader/Reader.h
lib/System/Win32/MappedFile.inc
lib/System/Win32/Path.inc
lib/System/Win32/Program.inc
lib/System/Win32/Win32.h
tools/gccld/gccld.cpp
tools/llvm-ld/llvm-ld.cpp

index 7b42fee9154bdf6428a74db351e73ff24c0631dd..60c8e4f9db8d8c58748f0444ec9c1ba56bb0b9dd 100644 (file)
@@ -2409,7 +2409,7 @@ void BytecodeReader::ParseModule() {
 
 /// This function completely parses a bytecode buffer given by the \p Buf
 /// and \p Length parameters.
-bool BytecodeReader::ParseBytecode(BufPtr Buf, unsigned Length,
+bool BytecodeReader::ParseBytecode(volatile BufPtr Buf, unsigned Length,
                                    const std::string &ModuleID,
                                    std::string* ErrMsg) {
 
index 711dc89f4c28c47fe526bdc73b66d7f6544e776d..fcf79b478b7568217427d062436e43818359b41b 100644 (file)
@@ -140,7 +140,7 @@ public:
   /// @returns true if an error occurred
   /// @brief Main interface to parsing a bytecode buffer.
   bool ParseBytecode(
-     const unsigned char *Buf,    ///< Beginning of the bytecode buffer
+     volatile BufPtr Buf,         ///< Beginning of the bytecode buffer
      unsigned Length,             ///< Length of the bytecode buffer
      const std::string &ModuleID, ///< An identifier for the module constructed.
      std::string* ErrMsg = 0      ///< Optional place for error message 
index d5bedfcfed85398b5cb8244eed48c44f150bb045..877ff52be56e214469eaa949fe1d32e3250897b0 100644 (file)
@@ -55,6 +55,8 @@ bool MappedFile::initialize(std::string* ErrMsg) {
     return MakeErrMsg(ErrMsg, 
       std::string("Can't get size of file: ") + path_.toString());
   }
+
+  return false;
 }
 
 void MappedFile::terminate() {
index 96a59ded6fa465b042c2637b53e8e6abfefb8862..048bf602975ffed01b5e1511285fc03c09cc575e 100644 (file)
@@ -315,12 +315,12 @@ bool Path::makeReadableOnDisk(std::string* ErrMsg) {
   return false;
 }
 
-void Path::makeWriteableOnDisk(std::string* ErrMsg) {
+bool Path::makeWriteableOnDisk(std::string* ErrMsg) {
   DWORD attr = GetFileAttributes(path.c_str());
 
   // If it doesn't exist, we're done.
   if (attr == INVALID_FILE_ATTRIBUTES)
-    return;
+    return false;
 
   if (attr & FILE_ATTRIBUTE_READONLY) {
     if (!SetFileAttributes(path.c_str(), attr & ~FILE_ATTRIBUTE_READONLY)) {
@@ -338,7 +338,11 @@ bool Path::makeExecutableOnDisk(std::string* ErrMsg) {
 
 bool
 Path::getDirectoryContents(std::set<Path>& result, std::string* ErrMsg) const {
-  if (!isDirectory()) {
+  FileStatus Status;
+  if (getFileStatus(Status, ErrMsg))
+    return true;
+
+  if (!Status.isDir) {
     MakeErrMsg(ErrMsg, path + ": not a directory");
     return true;
   }
@@ -512,7 +516,7 @@ Path::createDirectoryOnDisk(bool create_parents, std::string* ErrMsg) {
     // Drop trailing slash.
     pathname[len-1] = 0;
     if (!CreateDirectory(pathname, NULL)) {
-      return MakeErrMsg(, std::string(pathname) + ": Can't create directory: ");
+      return MakeErrMsg(ErrMsg, std::string(pathname) + ": Can't create directory: ");
     }
   }
   return false;
@@ -652,10 +656,12 @@ Path::renamePathOnDisk(const Path& newName, std::string* ErrMsg) {
 }
 
 bool
-Path::setStatusInfoOnDisk(const FileStatus &si, std::string *ErrStr) const {
+Path::setStatusInfoOnDisk(const FileStatus &si, std::string *ErrMsg) const {
   // FIXME: should work on directories also.
-  if (!isFile()) return true;
-
+  if (!si.isFile) {
+    return true;
+  }
+  
   HANDLE h = CreateFile(path.c_str(),
                         FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES,
                         FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
@@ -671,7 +677,7 @@ Path::setStatusInfoOnDisk(const FileStatus &si, std::string *ErrStr) const {
     DWORD err = GetLastError();
     CloseHandle(h);
     SetLastError(err);
-    return MakeErrMsg(ErrStr, path + ": GetFileInformationByHandle: ");
+    return MakeErrMsg(ErrMsg, path + ": GetFileInformationByHandle: ");
   }
 
   FILETIME ft;
@@ -681,7 +687,7 @@ Path::setStatusInfoOnDisk(const FileStatus &si, std::string *ErrStr) const {
   CloseHandle(h);
   if (!ret) {
     SetLastError(err);
-    return MakeErrMsg(path + ": SetFileTime: ");
+    return MakeErrMsg(ErrMsg, path + ": SetFileTime: ");
   }
 
   // Best we can do with Unix permission bits is to interpret the owner
@@ -690,13 +696,13 @@ Path::setStatusInfoOnDisk(const FileStatus &si, std::string *ErrStr) const {
     if (bhfi.dwFileAttributes & FILE_ATTRIBUTE_READONLY) {
       if (!SetFileAttributes(path.c_str(),
               bhfi.dwFileAttributes & ~FILE_ATTRIBUTE_READONLY))
-        return MakeErrMsg(ErrStr, path + ": SetFileAttributes: ");
+        return MakeErrMsg(ErrMsg, path + ": SetFileAttributes: ");
     }
   } else {
     if (!(bhfi.dwFileAttributes & FILE_ATTRIBUTE_READONLY)) {
       if (!SetFileAttributes(path.c_str(),
               bhfi.dwFileAttributes | FILE_ATTRIBUTE_READONLY))
-        return MakeErrMsg(ErrStr, path + ": SetFileAttributes: ");
+        return MakeErrMsg(ErrMsg, path + ": SetFileAttributes: ");
     }
   }
 
@@ -739,13 +745,13 @@ Path::makeUnique(bool reuse_current, std::string* ErrMsg) {
 bool
 Path::createTemporaryFileOnDisk(bool reuse_current, std::string* ErrMsg) {
   // Make this into a unique file name
-  makeUnique(reuse_current);
+  makeUnique(reuse_current, ErrMsg);
 
   // Now go and create it
   HANDLE h = CreateFile(path.c_str(), GENERIC_WRITE, 0, NULL, CREATE_NEW,
                         FILE_ATTRIBUTE_NORMAL, NULL);
   if (h == INVALID_HANDLE_VALUE)
-    return MakeErrMsg(ErrMsg, path.toString() + ": can't create file");
+    return MakeErrMsg(ErrMsg, path + ": can't create file");
 
   CloseHandle(h);
   return false;
index b45cad1bb4580d4c94953b86ef820b4ec1d633c7..e1ad155bb34d5fbffcf30d556f025914dec925d6 100644 (file)
@@ -158,14 +158,14 @@ Program::ExecuteAndWait(const Path& path,
       MakeErrMsg(ErrMsg, "can't redirect stdin");
       return -1;
     }
-    si.hStdOutput = RedirectIO(redirects[1], 1);
+    si.hStdOutput = RedirectIO(redirects[1], 1, ErrMsg);
     if (si.hStdOutput == INVALID_HANDLE_VALUE) {
       CloseHandle(si.hStdInput);
       MakeErrMsg(ErrMsg, "can't redirect stdout");
       return -1;
     }
     if (redirects[1] && redirects[2] && *(redirects[1]) != *(redirects[2])) {
-      si.hStdError = RedirectIO(redirects[2], 2);
+      si.hStdError = RedirectIO(redirects[2], 2, ErrMsg);
       if (si.hStdError == INVALID_HANDLE_VALUE) {
         CloseHandle(si.hStdInput);
         CloseHandle(si.hStdOutput);
index 0180bfabcf072330742a8a239611e305e8dc31ad..74406aec5408d1f84ce474547f74bd7b63155281 100644 (file)
@@ -30,11 +30,7 @@ inline bool MakeErrMsg(std::string* ErrMsg, const std::string& prefix) {
   char *buffer = NULL;
   FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
       NULL, GetLastError(), 0, (LPSTR)&buffer, 1, NULL);
-  ErrMsg = prefix + buffer;
+  *ErrMsg = prefix + buffer;
   LocalFree(buffer);
   return true;
 }
-
-inline void MakeErrnoMsg(std::string* ErrMsg, const std::string & prefix) {
-  MakeErrorMsg(prefix + ": " + strerror(errno));
-}
index c8ecde549156743664eec5d6558c972037d2be10..9401a8acbfc16b474d1366a8d7783f09de531b73 100644 (file)
@@ -133,17 +133,22 @@ static int PrintAndReturn(const char *progname, const std::string &Message) {
 /// EmitShellScript - Output the wrapper file that invokes the JIT on the LLVM
 /// bytecode file for the program.
 static void EmitShellScript(char **argv) {
-#if defined(_WIN32) || defined(__CYGWIN__)
+#if defined(_WIN32) || defined(__CYGWIN__)  
   // Windows doesn't support #!/bin/sh style shell scripts in .exe files.  To
   // support windows systems, we copy the llvm-stub.exe executable from the
   // build tree to the destination file.
-  std::string llvmstub = FindExecutable("llvm-stub.exe", argv[0]).toString();
-  if (llvmstub.empty()) {
+  std::string ErrMsg;  
+  sys::Path llvmstub = FindExecutable("llvm-stub.exe", argv[0]);
+  if (llvmstub.isEmpty()) {
     std::cerr << "Could not find llvm-stub.exe executable!\n";
     exit(1);
   }
-  sys::CopyFile(sys::Path(OutputFilename), sys::Path(llvmstub));
-  return;
+  if (0 != sys::CopyFile(sys::Path(OutputFilename), llvmstub, &ErrMsg)) {
+    std::cerr << argv[0] << ": " << ErrMsg << "\n";
+    exit(1);    
+  }
+
+  return;  
 #endif
 
   // Output the script to start the program...
index 6b9adaff5a4b481db8949d5db4fc375b4a30a207..ab7109fb855433ee829f63713a84bbfaa6b75452 100644 (file)
@@ -345,12 +345,18 @@ static void EmitShellScript(char **argv) {
   // Windows doesn't support #!/bin/sh style shell scripts in .exe files.  To
   // support windows systems, we copy the llvm-stub.exe executable from the
   // build tree to the destination file.
+  std::string ErrMsg;  
   sys::Path llvmstub = FindExecutable("llvm-stub.exe", argv[0]);
   if (llvmstub.isEmpty()) {
     std::cerr << "Could not find llvm-stub.exe executable!\n";
     exit(1);
   }
-  sys::CopyFile(sys::Path(OutputFilename), llvmstub);
+
+  if (0 != sys::CopyFile(sys::Path(OutputFilename), llvmstub, &ErrMsg)) {
+    std::cerr << argv[0] << ": " << ErrMsg << "\n";
+    exit(1);    
+  }
+
   return;
 #endif