Commit 8c2c6368f9

Andrew Kelley <andrew@ziglang.org>
2019-02-24 21:30:30
zig cc: work around clang calling GetCommandLine on Windows
1 parent bcca76b
Changed files (2)
src/main.cpp
@@ -260,13 +260,9 @@ int main(int argc, char **argv) {
         return 0;
     }
 
-    if (argc >= 2 && (strcmp(argv[1], "cc") == 0)) {
-        return ZigClang_main(argc - 1, argv + 1);
-    }
-    if (argc >= 2 && strcmp(argv[1], "-cc1") == 0) {
-        return ZigClang_main(argc, argv);
-    }
-    if (argc >= 2 && strcmp(argv[1], "-cc1as") == 0) {
+    if (argc >= 2 && (strcmp(argv[1], "cc") == 0 ||
+            strcmp(argv[1], "-cc1") == 0 || strcmp(argv[1], "-cc1as") == 0))
+    {
         return ZigClang_main(argc, argv);
     }
 
src/zig_clang_driver.cpp
@@ -318,7 +318,8 @@ static int ExecuteCC1Tool(ArrayRef<const char *> argv, StringRef Tool) {
 extern "C" int ZigClang_main(int argc_, const char **argv_);
 int ZigClang_main(int argc_, const char **argv_) {
   llvm::InitLLVM X(argc_, argv_);
-  SmallVector<const char *, 256> argv(argv_, argv_ + argc_);
+  size_t argv_offset = (strcmp(argv_[1], "-cc1") == 0 || strcmp(argv_[1], "-cc1as") == 0) ? 0 : 1;
+  SmallVector<const char *, 256> argv(argv_ + argv_offset, argv_ + argc_);
 
   if (llvm::sys::Process::FixupStandardFileDescriptors())
     return 1;