aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-09-17 17:46:16 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-09-17 17:46:16 -0400
commitb8ee3a8143c91bcc7ba5d7166dd88c217db89b25 (patch)
treee9dde7cf42c1263c9da49798f89858f39ad60d12 /src/main.cpp
parentfaaaf8832772108b240a277f984c9dbdd046f98e (diff)
downloadzig-b8ee3a8143c91bcc7ba5d7166dd88c217db89b25.tar.gz
zig-b8ee3a8143c91bcc7ba5d7166dd88c217db89b25.zip
add -mllvm support
useful for debugging crashes in llvm optimizer
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 66f75be449..86a6b82ac9 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -50,6 +50,7 @@ static int usage(const char *arg0) {
" --zig-std-dir [path] directory where zig standard library resides\n"
" -dirafter [dir] same as -isystem but do it last\n"
" -isystem [dir] add additional search path for other .h files\n"
+ " -mllvm [arg] additional arguments to forward to LLVM's option processing\n"
"Link Options:\n"
" --ar-path [path] set the path to ar\n"
" --dynamic-linker [path] set the path to ld.so\n"
@@ -190,6 +191,7 @@ int main(int argc, char **argv) {
const char *zig_std_dir = nullptr;
const char *dynamic_linker = nullptr;
ZigList<const char *> clang_argv = {0};
+ ZigList<const char *> llvm_argv = {0};
ZigList<const char *> lib_dirs = {0};
ZigList<const char *> link_libs = {0};
ZigList<const char *> frameworks = {0};
@@ -420,6 +422,11 @@ int main(int argc, char **argv) {
} else if (strcmp(arg, "-dirafter") == 0) {
clang_argv.append("-dirafter");
clang_argv.append(argv[i]);
+ } else if (strcmp(arg, "-mllvm") == 0) {
+ clang_argv.append("-mllvm");
+ clang_argv.append(argv[i]);
+
+ llvm_argv.append(argv[i]);
} else if (strcmp(arg, "--library-path") == 0 || strcmp(arg, "-L") == 0) {
lib_dirs.append(argv[i]);
} else if (strcmp(arg, "--library") == 0) {
@@ -604,6 +611,7 @@ int main(int argc, char **argv) {
codegen_set_each_lib_rpath(g, each_lib_rpath);
codegen_set_clang_argv(g, clang_argv.items, clang_argv.length);
+ codegen_set_llvm_argv(g, llvm_argv.items, llvm_argv.length);
codegen_set_strip(g, strip);
codegen_set_is_static(g, is_static);
if (libc_lib_dir)