]> git.lizzy.rs Git - rust.git/commitdiff
Auto merge of #38702 - philipc:debuginfo-lldb, r=alexcrichton
authorbors <bors@rust-lang.org>
Sat, 31 Dec 2016 10:39:46 +0000 (10:39 +0000)
committerbors <bors@rust-lang.org>
Sat, 31 Dec 2016 10:39:46 +0000 (10:39 +0000)
rustbuild: allow running debuginfo-lldb tests on linux

27 files changed:
src/Cargo.lock
src/bootstrap/bin/rustc.rs
src/bootstrap/check.rs
src/bootstrap/compile.rs
src/bootstrap/doc.rs
src/bootstrap/lib.rs
src/bootstrap/mk/Makefile.in
src/bootstrap/step.rs
src/liballoc_jemalloc/Cargo.toml
src/liballoc_system/Cargo.toml
src/libcompiler_builtins/Cargo.toml
src/libpanic_abort/Cargo.toml
src/libpanic_unwind/Cargo.toml
src/librand/Cargo.toml
src/librustc_back/target/asmjs_unknown_emscripten.rs
src/librustc_back/target/emscripten_base.rs [new file with mode: 0644]
src/librustc_back/target/mod.rs
src/librustc_back/target/wasm32_unknown_emscripten.rs
src/libunwind/Cargo.toml
src/rustc/libc_shim/Cargo.toml
src/rustc/std_shim/Cargo.toml
src/rustllvm/ArchiveWrapper.cpp
src/rustllvm/PassWrapper.cpp
src/rustllvm/RustWrapper.cpp
src/rustllvm/rustllvm.h
src/tools/compiletest/Cargo.toml
src/tools/compiletest/src/main.rs

index 9cd77e71b82dde04638ee53c04353b5ced783024..20ee2e1fcf387825132ec987352188a88129dc5b 100644 (file)
@@ -89,7 +89,7 @@ version = "0.0.0"
 dependencies = [
  "env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "serialize 0.0.0",
+ "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
index 129798836e03b7d1012f27de6866fe78020a0044..90fd31ecbdd732d963b4ccfce6b8478418a32292 100644 (file)
@@ -89,7 +89,9 @@ fn main() {
         // When we build Rust dylibs they're all intended for intermediate
         // usage, so make sure we pass the -Cprefer-dynamic flag instead of
         // linking all deps statically into the dylib.
-        cmd.arg("-Cprefer-dynamic");
+        if env::var_os("RUSTC_NO_PREFER_DYNAMIC").is_none() {
+            cmd.arg("-Cprefer-dynamic");
+        }
 
         // Help the libc crate compile by assisting it in finding the MUSL
         // native libraries.
index ec0243908edab1bc1b4eb131ff6d04972eb02d83..a032f57a416776b379d384a521a4bd13c0814671 100644 (file)
@@ -62,9 +62,9 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
 ///
 /// This tool in `src/tools` will verify the validity of all our links in the
 /// documentation to ensure we don't have a bunch of dead ones.
-pub fn linkcheck(build: &Build, stage: u32, host: &str) {
-    println!("Linkcheck stage{} ({})", stage, host);
-    let compiler = Compiler::new(stage, host);
+pub fn linkcheck(build: &Build, host: &str) {
+    println!("Linkcheck ({})", host);
+    let compiler = Compiler::new(0, host);
 
     let _time = util::timeit();
     build.run(build.tool_cmd(&compiler, "linkchecker")
@@ -93,10 +93,11 @@ pub fn cargotest(build: &Build, stage: u32, host: &str) {
     t!(fs::create_dir_all(&out_dir));
 
     let _time = util::timeit();
-    build.run(build.tool_cmd(compiler, "cargotest")
-                   .env("PATH", newpath)
-                   .arg(&build.cargo)
-                   .arg(&out_dir));
+    let mut cmd = Command::new(build.tool(&Compiler::new(0, host), "cargotest"));
+    build.prepare_tool_cmd(compiler, &mut cmd);
+    build.run(cmd.env("PATH", newpath)
+                 .arg(&build.cargo)
+                 .arg(&out_dir));
 }
 
 /// Runs the `tidy` tool as compiled in `stage` by the `host` compiler.
@@ -104,9 +105,9 @@ pub fn cargotest(build: &Build, stage: u32, host: &str) {
 /// This tool in `src/tools` checks up on various bits and pieces of style and
 /// otherwise just implements a few lint-like checks that are specific to the
 /// compiler itself.
-pub fn tidy(build: &Build, stage: u32, host: &str) {
-    println!("tidy check stage{} ({})", stage, host);
-    let compiler = Compiler::new(stage, host);
+pub fn tidy(build: &Build, host: &str) {
+    println!("tidy check ({})", host);
+    let compiler = Compiler::new(0, host);
     build.run(build.tool_cmd(&compiler, "tidy")
                    .arg(build.src.join("src")));
 }
@@ -127,7 +128,9 @@ pub fn compiletest(build: &Build,
                    suite: &str) {
     println!("Check compiletest suite={} mode={} ({} -> {})",
              suite, mode, compiler.host, target);
-    let mut cmd = build.tool_cmd(compiler, "compiletest");
+    let mut cmd = Command::new(build.tool(&Compiler::new(0, compiler.host),
+                                          "compiletest"));
+    build.prepare_tool_cmd(compiler, &mut cmd);
 
     // compiletest currently has... a lot of arguments, so let's just pass all
     // of them!
@@ -287,7 +290,8 @@ pub fn error_index(build: &Build, compiler: &Compiler) {
     let output = dir.join("error-index.md");
 
     let _time = util::timeit();
-    build.run(build.tool_cmd(compiler, "error_index_generator")
+    build.run(build.tool_cmd(&Compiler::new(0, compiler.host),
+                             "error_index_generator")
                    .arg("markdown")
                    .arg(&output)
                    .env("CFG_BUILD", &build.config.build));
@@ -507,6 +511,10 @@ fn find_tests(dir: &Path,
 pub fn android_copy_libs(build: &Build,
                          compiler: &Compiler,
                          target: &str) {
+    if !target.contains("android") {
+        return
+    }
+
     println!("Android copy libs to emulator ({})", target);
     build.run(Command::new("adb").arg("remount"));
     build.run(Command::new("adb").args(&["shell", "rm", "-r", ADB_TEST_DIR]));
index dcccf78893521d73871c748117326e4a78770901..a7633998aad8bc484235233c2d11d94e24958751 100644 (file)
@@ -379,6 +379,11 @@ pub fn tool(build: &Build, stage: u32, host: &str, tool: &str) {
     let mut cargo = build.cargo(&compiler, Mode::Tool, host, "build");
     cargo.arg("--manifest-path")
          .arg(build.src.join(format!("src/tools/{}/Cargo.toml", tool)));
+
+    // We don't want to build tools dynamically as they'll be running across
+    // stages and such and it's just easier if they're not dynamically linked.
+    cargo.env("RUSTC_NO_PREFER_DYNAMIC", "1");
+
     build.run(&mut cargo);
 }
 
index 4c4462bf1220dd68261bd4a74f517e4b560699a5..bbbf5cba8a1ab23782d87347abb702f48683f07a 100644 (file)
 ///
 /// This will not actually generate any documentation if the documentation has
 /// already been generated.
-pub fn rustbook(build: &Build, stage: u32, target: &str, name: &str) {
+pub fn rustbook(build: &Build, target: &str, name: &str) {
     let out = build.doc_out(target);
     t!(fs::create_dir_all(&out));
 
     let out = out.join(name);
-    let compiler = Compiler::new(stage, &build.config.build);
+    let compiler = Compiler::new(0, &build.config.build);
     let src = build.src.join("src/doc").join(name);
     let index = out.join("index.html");
     let rustbook = build.tool(&compiler, "rustbook");
     if up_to_date(&src, &index) && up_to_date(&rustbook, &index) {
         return
     }
-    println!("Rustbook stage{} ({}) - {}", stage, target, name);
+    println!("Rustbook ({}) - {}", target, name);
     let _ = fs::remove_dir_all(&out);
     build.run(build.tool_cmd(&compiler, "rustbook")
                    .arg("build")
@@ -151,7 +151,8 @@ pub fn std(build: &Build, stage: u32, target: &str) {
     let mut cargo = build.cargo(&compiler, Mode::Libstd, target, "doc");
     cargo.arg("--manifest-path")
          .arg(build.src.join("src/rustc/std_shim/Cargo.toml"))
-         .arg("--features").arg(build.std_features());
+         .arg("--features").arg(build.std_features())
+         .arg("-p").arg("std");
     build.run(&mut cargo);
     cp_r(&out_dir, &out)
 }
@@ -213,11 +214,11 @@ pub fn rustc(build: &Build, stage: u32, target: &str) {
 
 /// Generates the HTML rendered error-index by running the
 /// `error_index_generator` tool.
-pub fn error_index(build: &Build, stage: u32, target: &str) {
-    println!("Documenting stage{} error index ({})", stage, target);
+pub fn error_index(build: &Build, target: &str) {
+    println!("Documenting error index ({})", target);
     let out = build.doc_out(target);
     t!(fs::create_dir_all(&out));
-    let compiler = Compiler::new(stage, &build.config.build);
+    let compiler = Compiler::new(0, &build.config.build);
     let mut index = build.tool_cmd(&compiler, "error_index_generator");
     index.arg("html");
     index.arg(out.join("error-index.html"));
index 49eaed4c67acd23658b3177a1126df13bf61db8c..a65511efeb053a7098e74bd97caf3f7642489605 100644 (file)
@@ -570,6 +570,15 @@ fn rustdoc(&self, compiler: &Compiler) -> PathBuf {
     /// `host`.
     fn tool_cmd(&self, compiler: &Compiler, tool: &str) -> Command {
         let mut cmd = Command::new(self.tool(&compiler, tool));
+        self.prepare_tool_cmd(compiler, &mut cmd);
+        return cmd
+    }
+
+    /// Prepares the `cmd` provided to be able to run the `compiler` provided.
+    ///
+    /// Notably this munges the dynamic library lookup path to point to the
+    /// right location to run `compiler`.
+    fn prepare_tool_cmd(&self, compiler: &Compiler, cmd: &mut Command) {
         let host = compiler.host;
         let mut paths = vec![
             self.sysroot_libdir(compiler, compiler.host),
@@ -593,8 +602,7 @@ fn tool_cmd(&self, compiler: &Compiler, tool: &str) -> Command {
                 }
             }
         }
-        add_lib_path(paths, &mut cmd);
-        return cmd
+        add_lib_path(paths, cmd);
     }
 
     /// Get the space-separated set of activated features for the standard
index a3333369930b84244f132b68764718cd7714ac29..d6f6a7772c9d98fee667753b77a486d8a8473d78 100644 (file)
@@ -69,7 +69,7 @@ distcheck:
 install:
        $(Q)$(BOOTSTRAP) dist --install $(BOOTSTRAP_ARGS)
 tidy:
-       $(Q)$(BOOTSTRAP) test src/tools/tidy $(BOOTSTRAP_ARGS) --stage 0
+       $(Q)$(BOOTSTRAP) test src/tools/tidy $(BOOTSTRAP_ARGS)
 
 check-stage2-T-arm-linux-androideabi-H-x86_64-unknown-linux-gnu:
        $(Q)$(BOOTSTRAP) test --target arm-linux-androideabi
index 286957c5aac3215b79d75297c67ca4a5173357e3..6a81f759dc73f8e93203d8093dadbf14b68f1f75 100644 (file)
@@ -293,15 +293,9 @@ fn crate_rule<'a, 'b>(build: &'a Build,
         let mut suite = |name, path, mode, dir| {
             rules.test(name, path)
                  .dep(|s| s.name("libtest"))
-                 .dep(|s| s.name("tool-compiletest").target(s.host))
+                 .dep(|s| s.name("tool-compiletest").target(s.host).stage(0))
                  .dep(|s| s.name("test-helpers"))
-                 .dep(move |s| {
-                     if s.target.contains("android") {
-                         s.name("android-copy-libs")
-                     } else {
-                         Step::noop()
-                     }
-                 })
+                 .dep(|s| s.name("android-copy-libs"))
                  .default(mode != "pretty") // pretty tests don't run everywhere
                  .run(move |s| {
                      check::compiletest(build, &s.compiler(), s.target, mode, dir)
@@ -330,16 +324,17 @@ fn crate_rule<'a, 'b>(build: &'a Build,
     } else {
         rules.test("check-debuginfo-lldb", "src/test/debuginfo-lldb")
              .dep(|s| s.name("libtest"))
-             .dep(|s| s.name("tool-compiletest").target(s.host))
+             .dep(|s| s.name("tool-compiletest").target(s.host).stage(0))
              .dep(|s| s.name("test-helpers"))
              .dep(|s| s.name("debugger-scripts"))
              .run(move |s| check::compiletest(build, &s.compiler(), s.target,
                                          "debuginfo-lldb", "debuginfo"));
         rules.test("check-debuginfo-gdb", "src/test/debuginfo-gdb")
              .dep(|s| s.name("libtest"))
-             .dep(|s| s.name("tool-compiletest").target(s.host))
+             .dep(|s| s.name("tool-compiletest").target(s.host).stage(0))
              .dep(|s| s.name("test-helpers"))
              .dep(|s| s.name("debugger-scripts"))
+             .dep(|s| s.name("android-copy-libs"))
              .run(move |s| check::compiletest(build, &s.compiler(), s.target,
                                          "debuginfo-gdb", "debuginfo"));
         let mut rule = rules.test("check-debuginfo", "src/test/debuginfo");
@@ -360,7 +355,7 @@ fn crate_rule<'a, 'b>(build: &'a Build,
             rules.test(name, path)
                  .dep(|s| s.name("librustc"))
                  .dep(|s| s.name("test-helpers"))
-                 .dep(|s| s.name("tool-compiletest").target(s.host))
+                 .dep(|s| s.name("tool-compiletest").target(s.host).stage(0))
                  .default(mode != "pretty")
                  .host(true)
                  .run(move |s| {
@@ -390,12 +385,14 @@ fn crate_rule<'a, 'b>(build: &'a Build,
     for (krate, path, _default) in krates("std_shim") {
         rules.test(&krate.test_step, path)
              .dep(|s| s.name("libtest"))
+             .dep(|s| s.name("android-copy-libs"))
              .run(move |s| check::krate(build, &s.compiler(), s.target,
                                         Mode::Libstd, TestKind::Test,
                                         Some(&krate.name)));
     }
     rules.test("check-std-all", "path/to/nowhere")
          .dep(|s| s.name("libtest"))
+         .dep(|s| s.name("android-copy-libs"))
          .default(true)
          .run(move |s| check::krate(build, &s.compiler(), s.target,
                                     Mode::Libstd, TestKind::Test, None));
@@ -404,12 +401,14 @@ fn crate_rule<'a, 'b>(build: &'a Build,
     for (krate, path, _default) in krates("std_shim") {
         rules.bench(&krate.bench_step, path)
              .dep(|s| s.name("libtest"))
+             .dep(|s| s.name("android-copy-libs"))
              .run(move |s| check::krate(build, &s.compiler(), s.target,
                                         Mode::Libstd, TestKind::Bench,
                                         Some(&krate.name)));
     }
     rules.bench("bench-std-all", "path/to/nowhere")
          .dep(|s| s.name("libtest"))
+         .dep(|s| s.name("android-copy-libs"))
          .default(true)
          .run(move |s| check::krate(build, &s.compiler(), s.target,
                                     Mode::Libstd, TestKind::Bench, None));
@@ -417,18 +416,21 @@ fn crate_rule<'a, 'b>(build: &'a Build,
     for (krate, path, _default) in krates("test_shim") {
         rules.test(&krate.test_step, path)
              .dep(|s| s.name("libtest"))
+             .dep(|s| s.name("android-copy-libs"))
              .run(move |s| check::krate(build, &s.compiler(), s.target,
                                         Mode::Libtest, TestKind::Test,
                                         Some(&krate.name)));
     }
     rules.test("check-test-all", "path/to/nowhere")
          .dep(|s| s.name("libtest"))
+         .dep(|s| s.name("android-copy-libs"))
          .default(true)
          .run(move |s| check::krate(build, &s.compiler(), s.target,
                                     Mode::Libtest, TestKind::Test, None));
     for (krate, path, _default) in krates("rustc-main") {
         rules.test(&krate.test_step, path)
              .dep(|s| s.name("librustc"))
+             .dep(|s| s.name("android-copy-libs"))
              .host(true)
              .run(move |s| check::krate(build, &s.compiler(), s.target,
                                         Mode::Librustc, TestKind::Test,
@@ -436,19 +438,20 @@ fn crate_rule<'a, 'b>(build: &'a Build,
     }
     rules.test("check-rustc-all", "path/to/nowhere")
          .dep(|s| s.name("librustc"))
+         .dep(|s| s.name("android-copy-libs"))
          .default(true)
          .host(true)
          .run(move |s| check::krate(build, &s.compiler(), s.target,
                                     Mode::Librustc, TestKind::Test, None));
 
     rules.test("check-linkchecker", "src/tools/linkchecker")
-         .dep(|s| s.name("tool-linkchecker"))
+         .dep(|s| s.name("tool-linkchecker").stage(0))
          .dep(|s| s.name("default:doc"))
          .default(true)
          .host(true)
-         .run(move |s| check::linkcheck(build, s.stage, s.target));
+         .run(move |s| check::linkcheck(build, s.target));
     rules.test("check-cargotest", "src/tools/cargotest")
-         .dep(|s| s.name("tool-cargotest"))
+         .dep(|s| s.name("tool-cargotest").stage(0))
          .dep(|s| s.name("librustc"))
          .host(true)
          .run(move |s| check::cargotest(build, s.stage, s.target));
@@ -456,10 +459,10 @@ fn crate_rule<'a, 'b>(build: &'a Build,
          .dep(|s| s.name("tool-tidy").stage(0))
          .default(true)
          .host(true)
-         .run(move |s| check::tidy(build, 0, s.target));
+         .run(move |s| check::tidy(build, s.target));
     rules.test("check-error-index", "src/tools/error_index_generator")
          .dep(|s| s.name("libstd"))
-         .dep(|s| s.name("tool-error-index").host(s.host))
+         .dep(|s| s.name("tool-error-index").host(s.host).stage(0))
          .default(true)
          .host(true)
          .run(move |s| check::error_index(build, &s.compiler()));
@@ -505,23 +508,23 @@ fn crate_rule<'a, 'b>(build: &'a Build,
     // ========================================================================
     // Documentation targets
     rules.doc("doc-book", "src/doc/book")
-         .dep(move |s| s.name("tool-rustbook").target(&build.config.build))
+         .dep(move |s| s.name("tool-rustbook").target(&build.config.build).stage(0))
          .default(build.config.docs)
-         .run(move |s| doc::rustbook(build, s.stage, s.target, "book"));
+         .run(move |s| doc::rustbook(build, s.target, "book"));
     rules.doc("doc-nomicon", "src/doc/nomicon")
-         .dep(move |s| s.name("tool-rustbook").target(&build.config.build))
+         .dep(move |s| s.name("tool-rustbook").target(&build.config.build).stage(0))
          .default(build.config.docs)
-         .run(move |s| doc::rustbook(build, s.stage, s.target, "nomicon"));
+         .run(move |s| doc::rustbook(build, s.target, "nomicon"));
     rules.doc("doc-standalone", "src/doc")
          .dep(move |s| s.name("rustc").host(&build.config.build).target(&build.config.build))
          .default(build.config.docs)
          .run(move |s| doc::standalone(build, s.stage, s.target));
     rules.doc("doc-error-index", "src/tools/error_index_generator")
-         .dep(move |s| s.name("tool-error-index").target(&build.config.build))
-         .dep(move |s| s.name("librustc-link"))
+         .dep(move |s| s.name("tool-error-index").target(&build.config.build).stage(0))
+         .dep(move |s| s.name("librustc-link").stage(0))
          .default(build.config.docs)
          .host(true)
-         .run(move |s| doc::error_index(build, s.stage, s.target));
+         .run(move |s| doc::error_index(build, s.target));
     for (krate, path, default) in krates("std_shim") {
         rules.doc(&krate.doc_step, path)
              .dep(|s| s.name("libstd-link"))
index 25b3c8a3a0a8355a89888a305ddb9c373cd04f05..01393be9949ae2f9cdc5a2c7b4e5a8b3e6a1a3cb 100644 (file)
@@ -9,6 +9,7 @@ links = "jemalloc"
 name = "alloc_jemalloc"
 path = "lib.rs"
 test = false
+doc = false
 
 [dependencies]
 core = { path = "../libcore" }
index 88e8e2d7adbc38ee9a5a55f0e2fe990bade2c155..8e3c2c0b9cc66695c58a3a31fca886d42a22e9b4 100644 (file)
@@ -7,6 +7,7 @@ version = "0.0.0"
 name = "alloc_system"
 path = "lib.rs"
 test = false
+doc = false
 
 [dependencies]
 core = { path = "../libcore" }
index 79570dc025219efb8e352777d95d53cc7b32d081..1a549ae823ac540e8f9e119dd2164d972a652feb 100644 (file)
@@ -9,6 +9,7 @@ name = "compiler_builtins"
 path = "lib.rs"
 test = false
 bench = false
+doc = false
 
 [dependencies]
 core = { path = "../libcore" }
index d90d2864813c9b3f094dd73cc9b33b611bf0d2d1..e0eac41f49ec92b1ada6f8c0c027e811161fcd2a 100644 (file)
@@ -7,6 +7,7 @@ version = "0.0.0"
 path = "lib.rs"
 test = false
 bench = false
+doc = false
 
 [dependencies]
 core = { path = "../libcore" }
index 90c16fff6f1f169d5dcf84f12349828cbcefaa7d..a978ea16e9e74245ecd355fe6dab581c6d005463 100644 (file)
@@ -7,6 +7,7 @@ version = "0.0.0"
 path = "lib.rs"
 test = false
 bench = false
+doc = false
 
 [dependencies]
 alloc = { path = "../liballoc" }
index 86b061db05413f3704975c8e15d92753fae4ea8b..eda5f217565de80a1876fc146ff4d925fa63a159 100644 (file)
@@ -6,6 +6,7 @@ version = "0.0.0"
 [lib]
 name = "rand"
 path = "lib.rs"
+doc = false
 
 [dependencies]
 core = { path = "../libcore" }
index 98a9e343d004426f732233ae3b55e7133cf3ef94..2dbaeaf26e970f68cf15d27859324e6c94b88245 100644 (file)
@@ -9,11 +9,12 @@
 // except according to those terms.
 
 use super::{Target, TargetOptions};
+use super::emscripten_base::{cmd};
 
 pub fn target() -> Result<Target, String> {
     let opts = TargetOptions {
-        linker: "emcc".to_string(),
-        ar: "emar".to_string(),
+        linker: cmd("emcc"),
+        ar: cmd("emar"),
 
         dynamic_linking: false,
         executables: true,
diff --git a/src/librustc_back/target/emscripten_base.rs b/src/librustc_back/target/emscripten_base.rs
new file mode 100644 (file)
index 0000000..bacada3
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright 2014-2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+pub fn cmd(name: &str) -> String {
+    if cfg!(windows) {
+        format!("{}.bat", name)
+    } else {
+        name.to_string()
+    }
+}
index 6a409edf0feccbf564f38d91cfbbf24888e29765..9616cc77e356a4764d83f5ba20077166cecd70c6 100644 (file)
@@ -58,6 +58,7 @@
 mod arm_base;
 mod bitrig_base;
 mod dragonfly_base;
+mod emscripten_base;
 mod freebsd_base;
 mod haiku_base;
 mod linux_base;
index fec269074da8bed879f94e795c9be087db0ae019..a06980767fd75cd58baded41b2fabe298191e15a 100644 (file)
@@ -9,11 +9,12 @@
 // except according to those terms.
 
 use super::{Target, TargetOptions};
+use super::emscripten_base::{cmd};
 
 pub fn target() -> Result<Target, String> {
     let opts = TargetOptions {
-        linker: "emcc".to_string(),
-        ar: "emar".to_string(),
+        linker: cmd("emcc"),
+        ar: cmd("emar"),
 
         dynamic_linking: false,
         executables: true,
index 36f361b7238948690fd1898b74ded2adbb032890..fbd9789d2f52d16c98aa91319664b707cb9c2ad8 100644 (file)
@@ -9,6 +9,7 @@ name = "unwind"
 path = "lib.rs"
 test = false
 bench = false
+doc = false
 
 [dependencies]
 core = { path = "../libcore" }
index e501766fbed156b65001b18e18b462e0d8f836cb..39df3528be369adac52e033e8dedc53edd8d9f6a 100644 (file)
@@ -17,6 +17,7 @@ name = "libc"
 path = "../../liblibc/src/lib.rs"
 test = false
 bench = false
+doc = false
 
 [dependencies]
 core = { path = "../../libcore" }
index 18680dc4fd9a1853dc39f04b3439ca453ea615de..1fa917724353628ce1e981c6b2d61186016de45f 100644 (file)
@@ -27,6 +27,7 @@ authors = ["The Rust Project Developers"]
 [lib]
 name = "std_shim"
 path = "lib.rs"
+doc = false
 
 [dependencies]
 std = { path = "../../libstd" }
index 7304f384c61d601b771a18b4de0c784443e48e0c..6ff06b56bc412e79c8769c20ea60b19ea815c655 100644 (file)
@@ -21,52 +21,51 @@ struct RustArchiveMember {
   const char *name;
   Archive::Child child;
 
-  RustArchiveMember(): filename(NULL), name(NULL),
+  RustArchiveMember()
+      : filename(nullptr), name(nullptr),
 #if LLVM_VERSION_GE(3, 8)
-    child(NULL, NULL, NULL)
+        child(nullptr, nullptr, nullptr)
 #else
-    child(NULL, NULL)
+        child(nullptr, nullptr)
 #endif
-  {}
+  {
+  }
   ~RustArchiveMember() {}
 };
 
-
 struct RustArchiveIterator {
-    bool first;
-    Archive::child_iterator cur;
-    Archive::child_iterator end;
+  bool first;
+  Archive::child_iterator cur;
+  Archive::child_iterator end;
 #if LLVM_VERSION_GE(3, 9)
-    Error err;
+  Error err;
 
-    RustArchiveIterator() : first(true), err(Error::success()) { }
+  RustArchiveIterator() : first(true), err(Error::success()) {}
 #else
-    RustArchiveIterator() : first(true) { }
+  RustArchiveIterator() : first(true) {}
 #endif
 };
 
 enum class LLVMRustArchiveKind {
-    Other,
-    GNU,
-    MIPS64,
-    BSD,
-    COFF,
+  Other,
+  GNU,
+  MIPS64,
+  BSD,
+  COFF,
 };
 
-static Archive::Kind
-from_rust(LLVMRustArchiveKind kind)
-{
-    switch (kind) {
-    case LLVMRustArchiveKind::GNU:
-        return Archive::K_GNU;
-    case LLVMRustArchiveKind::MIPS64:
-        return Archive::K_MIPS64;
-    case LLVMRustArchiveKind::BSD:
-        return Archive::K_BSD;
-    case LLVMRustArchiveKind::COFF:
-        return Archive::K_COFF;
-    default:
-      llvm_unreachable("Bad ArchiveKind.");
+static Archive::Kind from_rust(LLVMRustArchiveKind kind) {
+  switch (kind) {
+  case LLVMRustArchiveKind::GNU:
+    return Archive::K_GNU;
+  case LLVMRustArchiveKind::MIPS64:
+    return Archive::K_MIPS64;
+  case LLVMRustArchiveKind::BSD:
+    return Archive::K_BSD;
+  case LLVMRustArchiveKind::COFF:
+    return Archive::K_COFF;
+  default:
+    llvm_unreachable("Bad ArchiveKind.");
   }
 }
 
@@ -76,174 +75,166 @@ typedef Archive::Child *LLVMRustArchiveChildRef;
 typedef Archive::Child const *LLVMRustArchiveChildConstRef;
 typedef RustArchiveIterator *LLVMRustArchiveIteratorRef;
 
-extern "C" LLVMRustArchiveRef
-LLVMRustOpenArchive(char *path) {
-    ErrorOr<std::unique_ptr<MemoryBuffer>> buf_or = MemoryBuffer::getFile(path,
-                                                                          -1,
-                                                                          false);
-    if (!buf_or) {
-        LLVMRustSetLastError(buf_or.getError().message().c_str());
-        return nullptr;
-    }
+extern "C" LLVMRustArchiveRef LLVMRustOpenArchive(char *path) {
+  ErrorOr<std::unique_ptr<MemoryBuffer>> buf_or =
+      MemoryBuffer::getFile(path, -1, false);
+  if (!buf_or) {
+    LLVMRustSetLastError(buf_or.getError().message().c_str());
+    return nullptr;
+  }
 
 #if LLVM_VERSION_LE(3, 8)
-    ErrorOr<std::unique_ptr<Archive>> archive_or =
+  ErrorOr<std::unique_ptr<Archive>> archive_or =
 #else
-    Expected<std::unique_ptr<Archive>> archive_or =
+  Expected<std::unique_ptr<Archive>> archive_or =
 #endif
-        Archive::create(buf_or.get()->getMemBufferRef());
+      Archive::create(buf_or.get()->getMemBufferRef());
 
-    if (!archive_or) {
+  if (!archive_or) {
 #if LLVM_VERSION_LE(3, 8)
-        LLVMRustSetLastError(archive_or.getError().message().c_str());
+    LLVMRustSetLastError(archive_or.getError().message().c_str());
 #else
-        LLVMRustSetLastError(toString(archive_or.takeError()).c_str());
+    LLVMRustSetLastError(toString(archive_or.takeError()).c_str());
 #endif
-        return nullptr;
-    }
+    return nullptr;
+  }
 
-    OwningBinary<Archive> *ret = new OwningBinary<Archive>(
-            std::move(archive_or.get()), std::move(buf_or.get()));
+  OwningBinary<Archive> *ret = new OwningBinary<Archive>(
+      std::move(archive_or.get()), std::move(buf_or.get()));
 
-    return ret;
+  return ret;
 }
 
-extern "C" void
-LLVMRustDestroyArchive(LLVMRustArchiveRef ar) {
-    delete ar;
-}
+extern "C" void LLVMRustDestroyArchive(LLVMRustArchiveRef ar) { delete ar; }
 
 extern "C" LLVMRustArchiveIteratorRef
 LLVMRustArchiveIteratorNew(LLVMRustArchiveRef ra) {
-    Archive *ar = ra->getBinary();
-    RustArchiveIterator *rai = new RustArchiveIterator();
+  Archive *ar = ra->getBinary();
+  RustArchiveIterator *rai = new RustArchiveIterator();
 #if LLVM_VERSION_LE(3, 8)
-    rai->cur = ar->child_begin();
+  rai->cur = ar->child_begin();
 #else
-    rai->cur = ar->child_begin(rai->err);
-    if (rai->err) {
-        LLVMRustSetLastError(toString(std::move(rai->err)).c_str());
-        delete rai;
-        return NULL;
-    }
+  rai->cur = ar->child_begin(rai->err);
+  if (rai->err) {
+    LLVMRustSetLastError(toString(std::move(rai->err)).c_str());
+    delete rai;
+    return nullptr;
+  }
 #endif
-    rai->end = ar->child_end();
-    return rai;
+  rai->end = ar->child_end();
+  return rai;
 }
 
 extern "C" LLVMRustArchiveChildConstRef
 LLVMRustArchiveIteratorNext(LLVMRustArchiveIteratorRef rai) {
-    if (rai->cur == rai->end) return nullptr;
-
-    // Advancing the iterator validates the next child, and this can
-    // uncover an error. LLVM requires that we check all Errors,
-    // so we only advance the iterator if we actually need to fetch
-    // the next child.
-    // This means we must not advance the iterator in the *first* call,
-    // but instead advance it *before* fetching the child in all later calls.
-    if (!rai->first) {
-        ++rai->cur;
+  if (rai->cur == rai->end)
+    return nullptr;
+
+  // Advancing the iterator validates the next child, and this can
+  // uncover an error. LLVM requires that we check all Errors,
+  // so we only advance the iterator if we actually need to fetch
+  // the next child.
+  // This means we must not advance the iterator in the *first* call,
+  // but instead advance it *before* fetching the child in all later calls.
+  if (!rai->first) {
+    ++rai->cur;
 #if LLVM_VERSION_GE(3, 9)
-        if (rai->err) {
-            LLVMRustSetLastError(toString(std::move(rai->err)).c_str());
-            return nullptr;
-        }
-#endif
-    } else {
-      rai->first = false;
+    if (rai->err) {
+      LLVMRustSetLastError(toString(std::move(rai->err)).c_str());
+      return nullptr;
     }
+#endif
+  } else {
+    rai->first = false;
+  }
 
-    if (rai->cur == rai->end) return nullptr;
+  if (rai->cur == rai->end)
+    return nullptr;
 
 #if LLVM_VERSION_EQ(3, 8)
-    const ErrorOr<Archive::Child>* cur = rai->cur.operator->();
-    if (!*cur) {
-        LLVMRustSetLastError(cur->getError().message().c_str());
-        return nullptr;
-    }
-    const Archive::Child &child = cur->get();
+  const ErrorOr<Archive::Child> *cur = rai->cur.operator->();
+  if (!*cur) {
+    LLVMRustSetLastError(cur->getError().message().c_str());
+    return nullptr;
+  }
+  const Archive::Child &child = cur->get();
 #else
-    const Archive::Child &child = *rai->cur.operator->();
+  const Archive::Child &child = *rai->cur.operator->();
 #endif
-    Archive::Child *ret = new Archive::Child(child);
+  Archive::Child *ret = new Archive::Child(child);
 
-    return ret;
+  return ret;
 }
 
-extern "C" void
-LLVMRustArchiveChildFree(LLVMRustArchiveChildRef child) {
-    delete child;
+extern "C" void LLVMRustArchiveChildFree(LLVMRustArchiveChildRef child) {
+  delete child;
 }
 
-extern "C" void
-LLVMRustArchiveIteratorFree(LLVMRustArchiveIteratorRef rai) {
-    delete rai;
+extern "C" void LLVMRustArchiveIteratorFree(LLVMRustArchiveIteratorRef rai) {
+  delete rai;
 }
 
-extern "C" const char*
+extern "C" const char *
 LLVMRustArchiveChildName(LLVMRustArchiveChildConstRef child, size_t *size) {
 #if LLVM_VERSION_GE(4, 0)
-    Expected<StringRef> name_or_err = child->getName();
-    if (!name_or_err) {
-        // rustc_llvm currently doesn't use this error string, but it might be useful
-        // in the future, and in the mean time this tells LLVM that the error was
-        // not ignored and that it shouldn't abort the process.
-        LLVMRustSetLastError(toString(name_or_err.takeError()).c_str());
-        return NULL;
-    }
+  Expected<StringRef> name_or_err = child->getName();
+  if (!name_or_err) {
+    // rustc_llvm currently doesn't use this error string, but it might be useful
+    // in the future, and in the mean time this tells LLVM that the error was
+    // not ignored and that it shouldn't abort the process.
+    LLVMRustSetLastError(toString(name_or_err.takeError()).c_str());
+    return nullptr;
+  }
 #else
-    ErrorOr<StringRef> name_or_err = child->getName();
-    if (name_or_err.getError())
-        return NULL;
+  ErrorOr<StringRef> name_or_err = child->getName();
+  if (name_or_err.getError())
+    return nullptr;
 #endif
-    StringRef name = name_or_err.get();
-    *size = name.size();
-    return name.data();
+  StringRef name = name_or_err.get();
+  *size = name.size();
+  return name.data();
 }
 
-extern "C" const char*
-LLVMRustArchiveChildData(LLVMRustArchiveChildRef child, size_t *size) {
-    StringRef buf;
+extern "C" const char *LLVMRustArchiveChildData(LLVMRustArchiveChildRef child,
+                                                size_t *size) {
+  StringRef buf;
 #if LLVM_VERSION_GE(4, 0)
-    Expected<StringRef> buf_or_err = child->getBuffer();
-    if (!buf_or_err) {
-      LLVMRustSetLastError(toString(buf_or_err.takeError()).c_str());
-      return NULL;
-    }
+  Expected<StringRef> buf_or_err = child->getBuffer();
+  if (!buf_or_err) {
+    LLVMRustSetLastError(toString(buf_or_err.takeError()).c_str());
+    return nullptr;
+  }
 #else
-    ErrorOr<StringRef> buf_or_err = child->getBuffer();
-    if (buf_or_err.getError()) {
-      LLVMRustSetLastError(buf_or_err.getError().message().c_str());
-      return NULL;
-    }
+  ErrorOr<StringRef> buf_or_err = child->getBuffer();
+  if (buf_or_err.getError()) {
+    LLVMRustSetLastError(buf_or_err.getError().message().c_str());
+    return nullptr;
+  }
 #endif
-    buf = buf_or_err.get();
-    *size = buf.size();
-    return buf.data();
+  buf = buf_or_err.get();
+  *size = buf.size();
+  return buf.data();
 }
 
 extern "C" LLVMRustArchiveMemberRef
 LLVMRustArchiveMemberNew(char *Filename, char *Name,
-                        LLVMRustArchiveChildRef child) {
-    RustArchiveMember *Member = new RustArchiveMember;
-    Member->filename = Filename;
-    Member->name = Name;
-    if (child)
-        Member->child = *child;
-    return Member;
+                         LLVMRustArchiveChildRef child) {
+  RustArchiveMember *Member = new RustArchiveMember;
+  Member->filename = Filename;
+  Member->name = Name;
+  if (child)
+    Member->child = *child;
+  return Member;
 }
 
-extern "C" void
-LLVMRustArchiveMemberFree(LLVMRustArchiveMemberRef Member) {
-    delete Member;
+extern "C" void LLVMRustArchiveMemberFree(LLVMRustArchiveMemberRef Member) {
+  delete Member;
 }
 
 extern "C" LLVMRustResult
-LLVMRustWriteArchive(char *Dst,
-                     size_t NumMembers,
+LLVMRustWriteArchive(char *Dst, size_t NumMembers,
                      const LLVMRustArchiveMemberRef *NewMembers,
-                     bool WriteSymbtab,
-                     LLVMRustArchiveKind rust_kind) {
+                     bool WriteSymbtab, LLVMRustArchiveKind rust_kind) {
 
 #if LLVM_VERSION_LE(3, 8)
   std::vector<NewArchiveIterator> Members;
@@ -257,7 +248,8 @@ LLVMRustWriteArchive(char *Dst,
     assert(Member->name);
     if (Member->filename) {
 #if LLVM_VERSION_GE(3, 9)
-      Expected<NewArchiveMember> MOrErr = NewArchiveMember::getFile(Member->filename, true);
+      Expected<NewArchiveMember> MOrErr =
+          NewArchiveMember::getFile(Member->filename, true);
       if (!MOrErr) {
         LLVMRustSetLastError(toString(MOrErr.takeError()).c_str());
         return LLVMRustResult::Failure;
@@ -272,7 +264,8 @@ LLVMRustWriteArchive(char *Dst,
 #if LLVM_VERSION_LE(3, 8)
       Members.push_back(NewArchiveIterator(Member->child, Member->name));
 #else
-      Expected<NewArchiveMember> MOrErr = NewArchiveMember::getOldMember(Member->child, true);
+      Expected<NewArchiveMember> MOrErr =
+          NewArchiveMember::getOldMember(Member->child, true);
       if (!MOrErr) {
         LLVMRustSetLastError(toString(MOrErr.takeError()).c_str());
         return LLVMRustResult::Failure;
index c45d1c2d0888eac555c0f48ff328314722e3170c..f71dac77caf092075c57d259e393a14c910a8e8c 100644 (file)
 
 #include "rustllvm.h"
 
-#include "llvm/Support/CBindingWrapping.h"
-#include "llvm/Support/FileSystem.h"
-#include "llvm/Support/Host.h"
 #include "llvm/Analysis/TargetLibraryInfo.h"
 #include "llvm/Analysis/TargetTransformInfo.h"
 #include "llvm/IR/AutoUpgrade.h"
+#include "llvm/Support/CBindingWrapping.h"
+#include "llvm/Support/FileSystem.h"
+#include "llvm/Support/Host.h"
 #include "llvm/Target/TargetMachine.h"
 #include "llvm/Target/TargetSubtargetInfo.h"
 #include "llvm/Transforms/IPO/PassManagerBuilder.h"
@@ -38,10 +38,10 @@ typedef struct LLVMOpaqueTargetMachine *LLVMTargetMachineRef;
 
 DEFINE_STDCXX_CONVERSION_FUNCTIONS(Pass, LLVMPassRef)
 DEFINE_STDCXX_CONVERSION_FUNCTIONS(TargetMachine, LLVMTargetMachineRef)
-DEFINE_STDCXX_CONVERSION_FUNCTIONS(PassManagerBuilder, LLVMPassManagerBuilderRef)
+DEFINE_STDCXX_CONVERSION_FUNCTIONS(PassManagerBuilder,
+                                   LLVMPassManagerBuilderRef)
 
-extern "C" void
-LLVMInitializePasses() {
+extern "C" void LLVMInitializePasses() {
   PassRegistry &Registry = *PassRegistry::getPassRegistry();
   initializeCore(Registry);
   initializeCodeGen(Registry);
@@ -64,44 +64,39 @@ enum class LLVMRustPassKind {
   Module,
 };
 
-static LLVMRustPassKind
-to_rust(PassKind kind)
-{
+static LLVMRustPassKind to_rust(PassKind kind) {
   switch (kind) {
   case PT_Function:
-      return LLVMRustPassKind::Function;
+    return LLVMRustPassKind::Function;
   case PT_Module:
-      return LLVMRustPassKind::Module;
+    return LLVMRustPassKind::Module;
   default:
-      return LLVMRustPassKind::Other;
+    return LLVMRustPassKind::Other;
   }
 }
 
-extern "C" LLVMPassRef
-LLVMRustFindAndCreatePass(const char *PassName) {
-    StringRef SR(PassName);
-    PassRegistry *PR = PassRegistry::getPassRegistry();
+extern "C" LLVMPassRef LLVMRustFindAndCreatePass(const char *PassName) {
+  StringRef SR(PassName);
+  PassRegistry *PR = PassRegistry::getPassRegistry();
 
-    const PassInfo *PI = PR->getPassInfo(SR);
-    if (PI) {
-      return wrap(PI->createPass());
-    }
-    return NULL;
+  const PassInfo *PI = PR->getPassInfo(SR);
+  if (PI) {
+    return wrap(PI->createPass());
+  }
+  return nullptr;
 }
 
-extern "C" LLVMRustPassKind
-LLVMRustPassKind(LLVMPassRef rust_pass) {
-    assert(rust_pass);
-    Pass *pass = unwrap(rust_pass);
-    return to_rust(pass->getPassKind());
+extern "C" LLVMRustPassKind LLVMRustPassKind(LLVMPassRef rust_pass) {
+  assert(rust_pass);
+  Pass *pass = unwrap(rust_pass);
+  return to_rust(pass->getPassKind());
 }
 
-extern "C" void
-LLVMRustAddPass(LLVMPassManagerRef PM, LLVMPassRef rust_pass) {
-    assert(rust_pass);
-    Pass *pass = unwrap(rust_pass);
-    PassManagerBase *pm = unwrap(PM);
-    pm->add(pass);
+extern "C" void LLVMRustAddPass(LLVMPassManagerRef PM, LLVMPassRef rust_pass) {
+  assert(rust_pass);
+  Pass *pass = unwrap(rust_pass);
+  PassManagerBase *pm = unwrap(PM);
+  pm->add(pass);
 }
 
 #ifdef LLVM_COMPONENT_X86
@@ -146,100 +141,94 @@ LLVMRustAddPass(LLVMPassManagerRef PM, LLVMPassRef rust_pass) {
 #define SUBTARGET_MSP430
 #endif
 
-#define GEN_SUBTARGETS    \
-        SUBTARGET_X86     \
-        SUBTARGET_ARM     \
-        SUBTARGET_AARCH64 \
-        SUBTARGET_MIPS    \
-        SUBTARGET_PPC     \
-        SUBTARGET_SYSTEMZ \
-        SUBTARGET_MSP430
-
-#define SUBTARGET(x) namespace llvm {                \
-    extern const SubtargetFeatureKV x##FeatureKV[];  \
-    extern const SubtargetFeatureKV x##SubTypeKV[];  \
+#define GEN_SUBTARGETS                                                         \
+  SUBTARGET_X86                                                                \
+  SUBTARGET_ARM                                                                \
+  SUBTARGET_AARCH64                                                            \
+  SUBTARGET_MIPS                                                               \
+  SUBTARGET_PPC                                                                \
+  SUBTARGET_SYSTEMZ                                                            \
+  SUBTARGET_MSP430
+
+#define SUBTARGET(x)                                                           \
+  namespace llvm {                                                             \
+  extern const SubtargetFeatureKV x##FeatureKV[];                              \
+  extern const SubtargetFeatureKV x##SubTypeKV[];                              \
   }
 
 GEN_SUBTARGETS
 #undef SUBTARGET
 
-extern "C" bool
-LLVMRustHasFeature(LLVMTargetMachineRef TM,
-                  const char *feature) {
-    TargetMachine *Target = unwrap(TM);
-    const MCSubtargetInfo *MCInfo = Target->getMCSubtargetInfo();
-    const FeatureBitset &Bits = MCInfo->getFeatureBits();
-    const llvm::SubtargetFeatureKV *FeatureEntry;
-
-#define SUBTARGET(x)                                        \
-    if (MCInfo->isCPUStringValid(x##SubTypeKV[0].Key)) {    \
-        FeatureEntry = x##FeatureKV;                       \
-    } else
-
-    GEN_SUBTARGETS {
-        return false;
-    }
+extern "C" bool LLVMRustHasFeature(LLVMTargetMachineRef TM,
+                                   const char *feature) {
+  TargetMachine *Target = unwrap(TM);
+  const MCSubtargetInfo *MCInfo = Target->getMCSubtargetInfo();
+  const FeatureBitset &Bits = MCInfo->getFeatureBits();
+  const llvm::SubtargetFeatureKV *FeatureEntry;
+
+#define SUBTARGET(x)                                                           \
+  if (MCInfo->isCPUStringValid(x##SubTypeKV[0].Key)) {                         \
+    FeatureEntry = x##FeatureKV;                                               \
+  } else
+
+  GEN_SUBTARGETS { return false; }
 #undef SUBTARGET
 
-    while (strcmp(feature, FeatureEntry->Key) != 0)
-        FeatureEntry++;
+  while (strcmp(feature, FeatureEntry->Key) != 0)
+    FeatureEntry++;
 
-    return (Bits & FeatureEntry->Value) == FeatureEntry->Value;
+  return (Bits & FeatureEntry->Value) == FeatureEntry->Value;
 }
 
 enum class LLVMRustCodeModel {
-    Other,
-    Default,
-    JITDefault,
-    Small,
-    Kernel,
-    Medium,
-    Large,
+  Other,
+  Default,
+  JITDefault,
+  Small,
+  Kernel,
+  Medium,
+  Large,
 };
 
-static CodeModel::Model
-from_rust(LLVMRustCodeModel model)
-{
-    switch (model) {
-    case LLVMRustCodeModel::Default:
-        return CodeModel::Default;
-    case LLVMRustCodeModel::JITDefault:
-        return CodeModel::JITDefault;
-    case LLVMRustCodeModel::Small:
-        return CodeModel::Small;
-    case LLVMRustCodeModel::Kernel:
-        return CodeModel::Kernel;
-    case LLVMRustCodeModel::Medium:
-        return CodeModel::Medium;
-    case LLVMRustCodeModel::Large:
-        return CodeModel::Large;
-    default:
-        llvm_unreachable("Bad CodeModel.");
+static CodeModel::Model from_rust(LLVMRustCodeModel model) {
+  switch (model) {
+  case LLVMRustCodeModel::Default:
+    return CodeModel::Default;
+  case LLVMRustCodeModel::JITDefault:
+    return CodeModel::JITDefault;
+  case LLVMRustCodeModel::Small:
+    return CodeModel::Small;
+  case LLVMRustCodeModel::Kernel:
+    return CodeModel::Kernel;
+  case LLVMRustCodeModel::Medium:
+    return CodeModel::Medium;
+  case LLVMRustCodeModel::Large:
+    return CodeModel::Large;
+  default:
+    llvm_unreachable("Bad CodeModel.");
   }
 }
 
 enum class LLVMRustCodeGenOptLevel {
-    Other,
-    None,
-    Less,
-    Default,
-    Aggressive,
+  Other,
+  None,
+  Less,
+  Default,
+  Aggressive,
 };
 
-static CodeGenOpt::Level
-from_rust(LLVMRustCodeGenOptLevel level)
-{
-    switch (level) {
-    case LLVMRustCodeGenOptLevel::None:
-        return CodeGenOpt::None;
-    case LLVMRustCodeGenOptLevel::Less:
-        return CodeGenOpt::Less;
-    case LLVMRustCodeGenOptLevel::Default:
-        return CodeGenOpt::Default;
-    case LLVMRustCodeGenOptLevel::Aggressive:
-        return CodeGenOpt::Aggressive;
-    default:
-        llvm_unreachable("Bad CodeGenOptLevel.");
+static CodeGenOpt::Level from_rust(LLVMRustCodeGenOptLevel level) {
+  switch (level) {
+  case LLVMRustCodeGenOptLevel::None:
+    return CodeGenOpt::None;
+  case LLVMRustCodeGenOptLevel::Less:
+    return CodeGenOpt::Less;
+  case LLVMRustCodeGenOptLevel::Default:
+    return CodeGenOpt::Default;
+  case LLVMRustCodeGenOptLevel::Aggressive:
+    return CodeGenOpt::Aggressive;
+  default:
+    llvm_unreachable("Bad CodeGenOptLevel.");
   }
 }
 
@@ -253,234 +242,209 @@ static size_t getLongestEntryLength(ArrayRef<SubtargetFeatureKV> Table) {
   return MaxLen;
 }
 
-extern "C" void
-LLVMRustPrintTargetCPUs(LLVMTargetMachineRef TM) {
-    const TargetMachine *Target = unwrap(TM);
-    const MCSubtargetInfo *MCInfo = Target->getMCSubtargetInfo();
-    const ArrayRef<SubtargetFeatureKV> CPUTable = MCInfo->getCPUTable();
-    unsigned MaxCPULen = getLongestEntryLength(CPUTable);
-
-    printf("Available CPUs for this target:\n");
-    for (auto &CPU : CPUTable)
-        printf("    %-*s - %s.\n", MaxCPULen, CPU.Key, CPU.Desc);
-    printf("\n");
+extern "C" void LLVMRustPrintTargetCPUs(LLVMTargetMachineRef TM) {
+  const TargetMachine *Target = unwrap(TM);
+  const MCSubtargetInfo *MCInfo = Target->getMCSubtargetInfo();
+  const ArrayRef<SubtargetFeatureKV> CPUTable = MCInfo->getCPUTable();
+  unsigned MaxCPULen = getLongestEntryLength(CPUTable);
+
+  printf("Available CPUs for this target:\n");
+  for (auto &CPU : CPUTable)
+    printf("    %-*s - %s.\n", MaxCPULen, CPU.Key, CPU.Desc);
+  printf("\n");
 }
 
-extern "C" void
-LLVMRustPrintTargetFeatures(LLVMTargetMachineRef TM) {
-    const TargetMachine *Target = unwrap(TM);
-    const MCSubtargetInfo *MCInfo = Target->getMCSubtargetInfo();
-    const ArrayRef<SubtargetFeatureKV> FeatTable = MCInfo->getFeatureTable();
-    unsigned MaxFeatLen = getLongestEntryLength(FeatTable);
-
-    printf("Available features for this target:\n");
-    for (auto &Feature : FeatTable)
-        printf("    %-*s - %s.\n", MaxFeatLen, Feature.Key, Feature.Desc);
-    printf("\n");
-
-    printf("Use +feature to enable a feature, or -feature to disable it.\n"
-            "For example, rustc -C -target-cpu=mycpu -C target-feature=+feature1,-feature2\n\n");
+extern "C" void LLVMRustPrintTargetFeatures(LLVMTargetMachineRef TM) {
+  const TargetMachine *Target = unwrap(TM);
+  const MCSubtargetInfo *MCInfo = Target->getMCSubtargetInfo();
+  const ArrayRef<SubtargetFeatureKV> FeatTable = MCInfo->getFeatureTable();
+  unsigned MaxFeatLen = getLongestEntryLength(FeatTable);
+
+  printf("Available features for this target:\n");
+  for (auto &Feature : FeatTable)
+    printf("    %-*s - %s.\n", MaxFeatLen, Feature.Key, Feature.Desc);
+  printf("\n");
+
+  printf("Use +feature to enable a feature, or -feature to disable it.\n"
+         "For example, rustc -C -target-cpu=mycpu -C "
+         "target-feature=+feature1,-feature2\n\n");
 }
 
 #else
 
-extern "C" void
-LLVMRustPrintTargetCPUs(LLVMTargetMachineRef) {
-    printf("Target CPU help is not supported by this LLVM version.\n\n");
+extern "C" void LLVMRustPrintTargetCPUs(LLVMTargetMachineRef) {
+  printf("Target CPU help is not supported by this LLVM version.\n\n");
 }
 
-extern "C" void
-LLVMRustPrintTargetFeatures(LLVMTargetMachineRef) {
-    printf("Target features help is not supported by this LLVM version.\n\n");
+extern "C" void LLVMRustPrintTargetFeatures(LLVMTargetMachineRef) {
+  printf("Target features help is not supported by this LLVM version.\n\n");
 }
 #endif
 
-extern "C" LLVMTargetMachineRef
-LLVMRustCreateTargetMachine(const char *triple,
-                            const char *cpu,
-                            const char *feature,
-                            LLVMRustCodeModel rust_CM,
-                            LLVMRelocMode Reloc,
-                            LLVMRustCodeGenOptLevel rust_OptLevel,
-                            bool UseSoftFloat,
-                            bool PositionIndependentExecutable,
-                            bool FunctionSections,
-                            bool DataSections) {
+extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
+    const char *triple, const char *cpu, const char *feature,
+    LLVMRustCodeModel rust_CM, LLVMRelocMode Reloc,
+    LLVMRustCodeGenOptLevel rust_OptLevel, bool UseSoftFloat,
+    bool PositionIndependentExecutable, bool FunctionSections,
+    bool DataSections) {
 
 #if LLVM_VERSION_LE(3, 8)
-    Reloc::Model RM;
+  Reloc::Model RM;
 #else
-    Optional<Reloc::Model> RM;
+  Optional<Reloc::Model> RM;
 #endif
-    auto CM = from_rust(rust_CM);
-    auto OptLevel = from_rust(rust_OptLevel);
-
-    switch (Reloc){
-        case LLVMRelocStatic:
-            RM = Reloc::Static;
-            break;
-        case LLVMRelocPIC:
-            RM = Reloc::PIC_;
-            break;
-        case LLVMRelocDynamicNoPic:
-            RM = Reloc::DynamicNoPIC;
-            break;
-        default:
+  auto CM = from_rust(rust_CM);
+  auto OptLevel = from_rust(rust_OptLevel);
+
+  switch (Reloc) {
+  case LLVMRelocStatic:
+    RM = Reloc::Static;
+    break;
+  case LLVMRelocPIC:
+    RM = Reloc::PIC_;
+    break;
+  case LLVMRelocDynamicNoPic:
+    RM = Reloc::DynamicNoPIC;
+    break;
+  default:
 #if LLVM_VERSION_LE(3, 8)
-            RM = Reloc::Default;
+    RM = Reloc::Default;
 #endif
-            break;
-    }
+    break;
+  }
 
-    std::string Error;
-    Triple Trip(Triple::normalize(triple));
-    const llvm::Target *TheTarget = TargetRegistry::lookupTarget(Trip.getTriple(),
-                                                                 Error);
-    if (TheTarget == NULL) {
-        LLVMRustSetLastError(Error.c_str());
-        return NULL;
-    }
+  std::string Error;
+  Triple Trip(Triple::normalize(triple));
+  const llvm::Target *TheTarget =
+      TargetRegistry::lookupTarget(Trip.getTriple(), Error);
+  if (TheTarget == nullptr) {
+    LLVMRustSetLastError(Error.c_str());
+    return nullptr;
+  }
 
-    StringRef real_cpu = cpu;
-    if (real_cpu == "native") {
-        real_cpu = sys::getHostCPUName();
-    }
+  StringRef real_cpu = cpu;
+  if (real_cpu == "native") {
+    real_cpu = sys::getHostCPUName();
+  }
 
-    TargetOptions Options;
+  TargetOptions Options;
 #if LLVM_VERSION_LE(3, 8)
-    Options.PositionIndependentExecutable = PositionIndependentExecutable;
+  Options.PositionIndependentExecutable = PositionIndependentExecutable;
 #endif
 
-    Options.FloatABIType = FloatABI::Default;
-    if (UseSoftFloat) {
-        Options.FloatABIType = FloatABI::Soft;
-    }
-    Options.DataSections = DataSections;
-    Options.FunctionSections = FunctionSections;
-
-    TargetMachine *TM = TheTarget->createTargetMachine(Trip.getTriple(),
-                                                       real_cpu,
-                                                       feature,
-                                                       Options,
-                                                       RM,
-                                                       CM,
-                                                       OptLevel);
-    return wrap(TM);
+  Options.FloatABIType = FloatABI::Default;
+  if (UseSoftFloat) {
+    Options.FloatABIType = FloatABI::Soft;
+  }
+  Options.DataSections = DataSections;
+  Options.FunctionSections = FunctionSections;
+
+  TargetMachine *TM = TheTarget->createTargetMachine(
+      Trip.getTriple(), real_cpu, feature, Options, RM, CM, OptLevel);
+  return wrap(TM);
 }
 
-extern "C" void
-LLVMRustDisposeTargetMachine(LLVMTargetMachineRef TM) {
-    delete unwrap(TM);
+extern "C" void LLVMRustDisposeTargetMachine(LLVMTargetMachineRef TM) {
+  delete unwrap(TM);
 }
 
 // Unfortunately, LLVM doesn't expose a C API to add the corresponding analysis
 // passes for a target to a pass manager. We export that functionality through
 // this function.
-extern "C" void
-LLVMRustAddAnalysisPasses(LLVMTargetMachineRef TM,
-                          LLVMPassManagerRef PMR,
-                          LLVMModuleRef M) {
-    PassManagerBase *PM = unwrap(PMR);
-    PM->add(createTargetTransformInfoWrapperPass(
-          unwrap(TM)->getTargetIRAnalysis()));
+extern "C" void LLVMRustAddAnalysisPasses(LLVMTargetMachineRef TM,
+                                          LLVMPassManagerRef PMR,
+                                          LLVMModuleRef M) {
+  PassManagerBase *PM = unwrap(PMR);
+  PM->add(
+      createTargetTransformInfoWrapperPass(unwrap(TM)->getTargetIRAnalysis()));
 }
 
-extern "C" void
-LLVMRustConfigurePassManagerBuilder(LLVMPassManagerBuilderRef PMB,
-                                   LLVMRustCodeGenOptLevel OptLevel,
-                                    bool MergeFunctions,
-                                    bool SLPVectorize,
-                                    bool LoopVectorize) {
-    // Ignore mergefunc for now as enabling it causes crashes.
-    //unwrap(PMB)->MergeFunctions = MergeFunctions;
-    unwrap(PMB)->SLPVectorize = SLPVectorize;
-    unwrap(PMB)->OptLevel = from_rust(OptLevel);
-    unwrap(PMB)->LoopVectorize = LoopVectorize;
+extern "C" void LLVMRustConfigurePassManagerBuilder(
+    LLVMPassManagerBuilderRef PMB, LLVMRustCodeGenOptLevel OptLevel,
+    bool MergeFunctions, bool SLPVectorize, bool LoopVectorize) {
+  // Ignore mergefunc for now as enabling it causes crashes.
+  // unwrap(PMB)->MergeFunctions = MergeFunctions;
+  unwrap(PMB)->SLPVectorize = SLPVectorize;
+  unwrap(PMB)->OptLevel = from_rust(OptLevel);
+  unwrap(PMB)->LoopVectorize = LoopVectorize;
 }
 
 // Unfortunately, the LLVM C API doesn't provide a way to set the `LibraryInfo`
 // field of a PassManagerBuilder, we expose our own method of doing so.
-extern "C" void
-LLVMRustAddBuilderLibraryInfo(LLVMPassManagerBuilderRef PMB,
-                              LLVMModuleRef M,
-                              bool DisableSimplifyLibCalls) {
-    Triple TargetTriple(unwrap(M)->getTargetTriple());
-    TargetLibraryInfoImpl *TLI = new TargetLibraryInfoImpl(TargetTriple);
-    if (DisableSimplifyLibCalls)
-      TLI->disableAllFunctions();
-    unwrap(PMB)->LibraryInfo = TLI;
+extern "C" void LLVMRustAddBuilderLibraryInfo(LLVMPassManagerBuilderRef PMB,
+                                              LLVMModuleRef M,
+                                              bool DisableSimplifyLibCalls) {
+  Triple TargetTriple(unwrap(M)->getTargetTriple());
+  TargetLibraryInfoImpl *TLI = new TargetLibraryInfoImpl(TargetTriple);
+  if (DisableSimplifyLibCalls)
+    TLI->disableAllFunctions();
+  unwrap(PMB)->LibraryInfo = TLI;
 }
 
 // Unfortunately, the LLVM C API doesn't provide a way to create the
 // TargetLibraryInfo pass, so we use this method to do so.
-extern "C" void
-LLVMRustAddLibraryInfo(LLVMPassManagerRef PMB,
-                       LLVMModuleRef M,
-                       bool DisableSimplifyLibCalls) {
-    Triple TargetTriple(unwrap(M)->getTargetTriple());
-    TargetLibraryInfoImpl TLII(TargetTriple);
-    if (DisableSimplifyLibCalls)
-      TLII.disableAllFunctions();
-    unwrap(PMB)->add(new TargetLibraryInfoWrapperPass(TLII));
+extern "C" void LLVMRustAddLibraryInfo(LLVMPassManagerRef PMB, LLVMModuleRef M,
+                                       bool DisableSimplifyLibCalls) {
+  Triple TargetTriple(unwrap(M)->getTargetTriple());
+  TargetLibraryInfoImpl TLII(TargetTriple);
+  if (DisableSimplifyLibCalls)
+    TLII.disableAllFunctions();
+  unwrap(PMB)->add(new TargetLibraryInfoWrapperPass(TLII));
 }
 
 // Unfortunately, the LLVM C API doesn't provide an easy way of iterating over
 // all the functions in a module, so we do that manually here. You'll find
 // similar code in clang's BackendUtil.cpp file.
-extern "C" void
-LLVMRustRunFunctionPassManager(LLVMPassManagerRef PM, LLVMModuleRef M) {
-    llvm::legacy::FunctionPassManager *P = unwrap<llvm::legacy::FunctionPassManager>(PM);
-    P->doInitialization();
-
-    // Upgrade all calls to old intrinsics first.
-    for (Module::iterator I = unwrap(M)->begin(),
-         E = unwrap(M)->end(); I != E;)
-        UpgradeCallsToIntrinsic(&*I++); // must be post-increment, as we remove
-
-    for (Module::iterator I = unwrap(M)->begin(),
-         E = unwrap(M)->end(); I != E; ++I)
-        if (!I->isDeclaration())
-            P->run(*I);
-
-    P->doFinalization();
+extern "C" void LLVMRustRunFunctionPassManager(LLVMPassManagerRef PM,
+                                               LLVMModuleRef M) {
+  llvm::legacy::FunctionPassManager *P =
+      unwrap<llvm::legacy::FunctionPassManager>(PM);
+  P->doInitialization();
+
+  // Upgrade all calls to old intrinsics first.
+  for (Module::iterator I = unwrap(M)->begin(), E = unwrap(M)->end(); I != E;)
+    UpgradeCallsToIntrinsic(&*I++); // must be post-increment, as we remove
+
+  for (Module::iterator I = unwrap(M)->begin(), E = unwrap(M)->end(); I != E;
+       ++I)
+    if (!I->isDeclaration())
+      P->run(*I);
+
+  P->doFinalization();
 }
 
-extern "C" void
-LLVMRustSetLLVMOptions(int Argc, char **Argv) {
-    // Initializing the command-line options more than once is not allowed. So,
-    // check if they've already been initialized.  (This could happen if we're
-    // being called from rustpkg, for example). If the arguments change, then
-    // that's just kinda unfortunate.
-    static bool initialized = false;
-    if (initialized) return;
-    initialized = true;
-    cl::ParseCommandLineOptions(Argc, Argv);
+extern "C" void LLVMRustSetLLVMOptions(int Argc, char **Argv) {
+  // Initializing the command-line options more than once is not allowed. So,
+  // check if they've already been initialized.  (This could happen if we're
+  // being called from rustpkg, for example). If the arguments change, then
+  // that's just kinda unfortunate.
+  static bool initialized = false;
+  if (initialized)
+    return;
+  initialized = true;
+  cl::ParseCommandLineOptions(Argc, Argv);
 }
 
 enum class LLVMRustFileType {
-    Other,
-    AssemblyFile,
-    ObjectFile,
+  Other,
+  AssemblyFile,
+  ObjectFile,
 };
 
-static TargetMachine::CodeGenFileType
-from_rust(LLVMRustFileType type)
-{
-    switch (type) {
-    case LLVMRustFileType::AssemblyFile:
-        return TargetMachine::CGFT_AssemblyFile;
-    case LLVMRustFileType::ObjectFile:
-        return TargetMachine::CGFT_ObjectFile;
-    default:
-        llvm_unreachable("Bad FileType.");
+static TargetMachine::CodeGenFileType from_rust(LLVMRustFileType type) {
+  switch (type) {
+  case LLVMRustFileType::AssemblyFile:
+    return TargetMachine::CGFT_AssemblyFile;
+  case LLVMRustFileType::ObjectFile:
+    return TargetMachine::CGFT_ObjectFile;
+  default:
+    llvm_unreachable("Bad FileType.");
   }
 }
 
 extern "C" LLVMRustResult
-LLVMRustWriteOutputFile(LLVMTargetMachineRef Target,
-                        LLVMPassManagerRef PMR,
-                        LLVMModuleRef M,
-                        const char *path,
+LLVMRustWriteOutputFile(LLVMTargetMachineRef Target, LLVMPassManagerRef PMR,
+                        LLVMModuleRef M, const char *path,
                         LLVMRustFileType rust_FileType) {
   llvm::legacy::PassManager *PM = unwrap<llvm::legacy::PassManager>(PMR);
   auto FileType = from_rust(rust_FileType);
@@ -505,10 +469,8 @@ LLVMRustWriteOutputFile(LLVMTargetMachineRef Target,
   return LLVMRustResult::Success;
 }
 
-extern "C" void
-LLVMRustPrintModule(LLVMPassManagerRef PMR,
-                    LLVMModuleRef M,
-                    const char* path) {
+extern "C" void LLVMRustPrintModule(LLVMPassManagerRef PMR, LLVMModuleRef M,
+                                    const char *path) {
   llvm::legacy::PassManager *PM = unwrap<llvm::legacy::PassManager>(PMR);
   std::string ErrorInfo;
 
@@ -524,102 +486,96 @@ LLVMRustPrintModule(LLVMPassManagerRef PMR,
   PM->run(*unwrap(M));
 }
 
-extern "C" void
-LLVMRustPrintPasses() {
-    LLVMInitializePasses();
-    struct MyListener : PassRegistrationListener {
-        void passEnumerate(const PassInfo *info) {
+extern "C" void LLVMRustPrintPasses() {
+  LLVMInitializePasses();
+  struct MyListener : PassRegistrationListener {
+    void passEnumerate(const PassInfo *info) {
 #if LLVM_VERSION_GE(4, 0)
-            StringRef PassArg = info->getPassArgument();
-            StringRef PassName = info->getPassName();
-            if (!PassArg.empty()) {
-                // These unsigned->signed casts could theoretically overflow, but
-                // realistically never will (and even if, the result is implementation
-                // defined rather plain UB).
-                printf("%15.*s - %.*s\n", (int)PassArg.size(), PassArg.data(),
-                       (int)PassName.size(), PassName.data());
-            }
+      StringRef PassArg = info->getPassArgument();
+      StringRef PassName = info->getPassName();
+      if (!PassArg.empty()) {
+        // These unsigned->signed casts could theoretically overflow, but
+        // realistically never will (and even if, the result is implementation
+        // defined rather plain UB).
+        printf("%15.*s - %.*s\n", (int)PassArg.size(), PassArg.data(),
+               (int)PassName.size(), PassName.data());
+      }
 #else
-            if (info->getPassArgument() && *info->getPassArgument()) {
-                printf("%15s - %s\n", info->getPassArgument(),
-                       info->getPassName());
-            }
+      if (info->getPassArgument() && *info->getPassArgument()) {
+        printf("%15s - %s\n", info->getPassArgument(), info->getPassName());
+      }
 #endif
-        }
-    } listener;
+    }
+  } listener;
 
-    PassRegistry *PR = PassRegistry::getPassRegistry();
-    PR->enumerateWith(&listener);
+  PassRegistry *PR = PassRegistry::getPassRegistry();
+  PR->enumerateWith(&listener);
 }
 
-extern "C" void
-LLVMRustAddAlwaysInlinePass(LLVMPassManagerBuilderRef PMB, bool AddLifetimes) {
+extern "C" void LLVMRustAddAlwaysInlinePass(LLVMPassManagerBuilderRef PMB,
+                                            bool AddLifetimes) {
 #if LLVM_VERSION_GE(4, 0)
-    unwrap(PMB)->Inliner = llvm::createAlwaysInlinerLegacyPass(AddLifetimes);
+  unwrap(PMB)->Inliner = llvm::createAlwaysInlinerLegacyPass(AddLifetimes);
 #else
-    unwrap(PMB)->Inliner = createAlwaysInlinerPass(AddLifetimes);
+  unwrap(PMB)->Inliner = createAlwaysInlinerPass(AddLifetimes);
 #endif
 }
 
-extern "C" void
-LLVMRustRunRestrictionPass(LLVMModuleRef M, char **symbols, size_t len) {
-    llvm::legacy::PassManager passes;
+extern "C" void LLVMRustRunRestrictionPass(LLVMModuleRef M, char **symbols,
+                                           size_t len) {
+  llvm::legacy::PassManager passes;
 
 #if LLVM_VERSION_LE(3, 8)
-    ArrayRef<const char*> ref(symbols, len);
-    passes.add(llvm::createInternalizePass(ref));
+  ArrayRef<const char *> ref(symbols, len);
+  passes.add(llvm::createInternalizePass(ref));
 #else
-    auto PreserveFunctions = [=](const GlobalValue &GV) {
-        for (size_t i=0; i<len; i++) {
-            if (GV.getName() == symbols[i]) {
-                return true;
-            }
-        }
-        return false;
-    };
+  auto PreserveFunctions = [=](const GlobalValue &GV) {
+    for (size_t i = 0; i < len; i++) {
+      if (GV.getName() == symbols[i]) {
+        return true;
+      }
+    }
+    return false;
+  };
 
-    passes.add(llvm::createInternalizePass(PreserveFunctions));
+  passes.add(llvm::createInternalizePass(PreserveFunctions));
 #endif
 
-    passes.run(*unwrap(M));
+  passes.run(*unwrap(M));
 }
 
-extern "C" void
-LLVMRustMarkAllFunctionsNounwind(LLVMModuleRef M) {
-    for (Module::iterator GV = unwrap(M)->begin(),
-         E = unwrap(M)->end(); GV != E; ++GV) {
-        GV->setDoesNotThrow();
-        Function *F = dyn_cast<Function>(GV);
-        if (F == NULL)
-            continue;
-
-        for (Function::iterator B = F->begin(), BE = F->end(); B != BE; ++B) {
-            for (BasicBlock::iterator I = B->begin(), IE = B->end();
-                 I != IE; ++I) {
-                if (isa<InvokeInst>(I)) {
-                    InvokeInst *CI = cast<InvokeInst>(I);
-                    CI->setDoesNotThrow();
-                }
-            }
+extern "C" void LLVMRustMarkAllFunctionsNounwind(LLVMModuleRef M) {
+  for (Module::iterator GV = unwrap(M)->begin(), E = unwrap(M)->end(); GV != E;
+       ++GV) {
+    GV->setDoesNotThrow();
+    Function *F = dyn_cast<Function>(GV);
+    if (F == nullptr)
+      continue;
+
+    for (Function::iterator B = F->begin(), BE = F->end(); B != BE; ++B) {
+      for (BasicBlock::iterator I = B->begin(), IE = B->end(); I != IE; ++I) {
+        if (isa<InvokeInst>(I)) {
+          InvokeInst *CI = cast<InvokeInst>(I);
+          CI->setDoesNotThrow();
         }
+      }
     }
+  }
 }
 
 extern "C" void
 LLVMRustSetDataLayoutFromTargetMachine(LLVMModuleRef Module,
                                        LLVMTargetMachineRef TMR) {
-    TargetMachine *Target = unwrap(TMR);
-    unwrap(Module)->setDataLayout(Target->createDataLayout());
+  TargetMachine *Target = unwrap(TMR);
+  unwrap(Module)->setDataLayout(Target->createDataLayout());
 }
 
-extern "C" LLVMTargetDataRef
-LLVMRustGetModuleDataLayout(LLVMModuleRef M) {
-    return wrap(&unwrap(M)->getDataLayout());
+extern "C" LLVMTargetDataRef LLVMRustGetModuleDataLayout(LLVMModuleRef M) {
+  return wrap(&unwrap(M)->getDataLayout());
 }
 
-extern "C" void
-LLVMRustSetModulePIELevel(LLVMModuleRef M) {
+extern "C" void LLVMRustSetModulePIELevel(LLVMModuleRef M) {
 #if LLVM_VERSION_GE(3, 9)
-    unwrap(M)->setPIELevel(PIELevel::Level::Large);
+  unwrap(M)->setPIELevel(PIELevel::Level::Large);
 #endif
 }
index 5d5845213e2301a7add72251249e2967416f9309..8f635441167ba015795acd88f9a6447ea8d5e240 100644 (file)
@@ -9,11 +9,11 @@
 // except according to those terms.
 
 #include "rustllvm.h"
-#include "llvm/Object/Archive.h"
-#include "llvm/Object/ObjectFile.h"
 #include "llvm/IR/DiagnosticInfo.h"
 #include "llvm/IR/DiagnosticPrinter.h"
 #include "llvm/IR/Instructions.h"
+#include "llvm/Object/Archive.h"
+#include "llvm/Object/ObjectFile.h"
 
 #include "llvm/IR/CallSite.h"
 
@@ -32,76 +32,73 @@ using namespace llvm::object;
 // one.
 static AtomicOrdering from_rust(LLVMAtomicOrdering Ordering) {
   switch (Ordering) {
-    case LLVMAtomicOrderingNotAtomic:
-        return AtomicOrdering::NotAtomic;
-    case LLVMAtomicOrderingUnordered:
-        return AtomicOrdering::Unordered;
-    case LLVMAtomicOrderingMonotonic:
-        return AtomicOrdering::Monotonic;
-    case LLVMAtomicOrderingAcquire:
-        return AtomicOrdering::Acquire;
-    case LLVMAtomicOrderingRelease:
-        return AtomicOrdering::Release;
-    case LLVMAtomicOrderingAcquireRelease:
-        return AtomicOrdering::AcquireRelease;
-    case LLVMAtomicOrderingSequentiallyConsistent:
-        return AtomicOrdering::SequentiallyConsistent;
+  case LLVMAtomicOrderingNotAtomic:
+    return AtomicOrdering::NotAtomic;
+  case LLVMAtomicOrderingUnordered:
+    return AtomicOrdering::Unordered;
+  case LLVMAtomicOrderingMonotonic:
+    return AtomicOrdering::Monotonic;
+  case LLVMAtomicOrderingAcquire:
+    return AtomicOrdering::Acquire;
+  case LLVMAtomicOrderingRelease:
+    return AtomicOrdering::Release;
+  case LLVMAtomicOrderingAcquireRelease:
+    return AtomicOrdering::AcquireRelease;
+  case LLVMAtomicOrderingSequentiallyConsistent:
+    return AtomicOrdering::SequentiallyConsistent;
   }
 
   llvm_unreachable("Invalid LLVMAtomicOrdering value!");
 }
 
-
 static char *LastError;
 
 extern "C" LLVMMemoryBufferRef
 LLVMRustCreateMemoryBufferWithContentsOfFile(const char *Path) {
-  ErrorOr<std::unique_ptr<MemoryBuffer>> buf_or = MemoryBuffer::getFile(Path,
-                                                                        -1,
-                                                                        false);
+  ErrorOr<std::unique_ptr<MemoryBuffer>> buf_or =
+      MemoryBuffer::getFile(Path, -1, false);
   if (!buf_or) {
-      LLVMRustSetLastError(buf_or.getError().message().c_str());
-      return nullptr;
+    LLVMRustSetLastError(buf_or.getError().message().c_str());
+    return nullptr;
   }
   return wrap(buf_or.get().release());
 }
 
 extern "C" char *LLVMRustGetLastError(void) {
   char *ret = LastError;
-  LastError = NULL;
+  LastError = nullptr;
   return ret;
 }
 
 void LLVMRustSetLastError(const char *err) {
-  free((void*) LastError);
+  free((void *)LastError);
   LastError = strdup(err);
 }
 
-extern "C" void
-LLVMRustSetNormalizedTarget(LLVMModuleRef M, const char *triple) {
-    unwrap(M)->setTargetTriple(Triple::normalize(triple));
+extern "C" void LLVMRustSetNormalizedTarget(LLVMModuleRef M,
+                                            const char *triple) {
+  unwrap(M)->setTargetTriple(Triple::normalize(triple));
 }
 
 extern "C" void LLVMRustPrintPassTimings() {
-  raw_fd_ostream OS (2, false); // stderr.
+  raw_fd_ostream OS(2, false); // stderr.
   TimerGroup::printAll(OS);
 }
 
 extern "C" LLVMValueRef LLVMRustGetNamedValue(LLVMModuleRef M,
-                                             const char* Name) {
-    return wrap(unwrap(M)->getNamedValue(Name));
+                                              const char *Name) {
+  return wrap(unwrap(M)->getNamedValue(Name));
 }
 
 extern "C" LLVMValueRef LLVMRustGetOrInsertFunction(LLVMModuleRef M,
-                                                   const char* Name,
-                                                   LLVMTypeRef FunctionTy) {
-  return wrap(unwrap(M)->getOrInsertFunction(Name,
-                                             unwrap<FunctionType>(FunctionTy)));
+                                                    const char *Name,
+                                                    LLVMTypeRef FunctionTy) {
+  return wrap(
+      unwrap(M)->getOrInsertFunction(Name, unwrap<FunctionType>(FunctionTy)));
 }
 
-extern "C" LLVMValueRef LLVMRustGetOrInsertGlobal(LLVMModuleRef M,
-                                                 const char* Name,
-                                                 LLVMTypeRef Ty) {
+extern "C" LLVMValueRef
+LLVMRustGetOrInsertGlobal(LLVMModuleRef M, const char *Name, LLVMTypeRef Ty) {
   return wrap(unwrap(M)->getOrInsertGlobal(Name, unwrap(Ty)));
 }
 
@@ -109,91 +106,84 @@ extern "C" LLVMTypeRef LLVMRustMetadataTypeInContext(LLVMContextRef C) {
   return wrap(Type::getMetadataTy(*unwrap(C)));
 }
 
-static Attribute::AttrKind
-from_rust(LLVMRustAttribute kind) {
+static Attribute::AttrKind from_rust(LLVMRustAttribute kind) {
   switch (kind) {
-    case AlwaysInline:
-      return Attribute::AlwaysInline;
-    case ByVal:
-      return Attribute::ByVal;
-    case Cold:
-      return Attribute::Cold;
-    case InlineHint:
-      return Attribute::InlineHint;
-    case MinSize:
-      return Attribute::MinSize;
-    case Naked:
-      return Attribute::Naked;
-    case NoAlias:
-      return Attribute::NoAlias;
-    case NoCapture:
-      return Attribute::NoCapture;
-    case NoInline:
-      return Attribute::NoInline;
-    case NonNull:
-      return Attribute::NonNull;
-    case NoRedZone:
-      return Attribute::NoRedZone;
-    case NoReturn:
-      return Attribute::NoReturn;
-    case NoUnwind:
-      return Attribute::NoUnwind;
-    case OptimizeForSize:
-      return Attribute::OptimizeForSize;
-    case ReadOnly:
-      return Attribute::ReadOnly;
-    case SExt:
-      return Attribute::SExt;
-    case StructRet:
-      return Attribute::StructRet;
-    case UWTable:
-      return Attribute::UWTable;
-    case ZExt:
-      return Attribute::ZExt;
-    case InReg:
-      return Attribute::InReg;
-    default:
-      llvm_unreachable("bad AttributeKind");
+  case AlwaysInline:
+    return Attribute::AlwaysInline;
+  case ByVal:
+    return Attribute::ByVal;
+  case Cold:
+    return Attribute::Cold;
+  case InlineHint:
+    return Attribute::InlineHint;
+  case MinSize:
+    return Attribute::MinSize;
+  case Naked:
+    return Attribute::Naked;
+  case NoAlias:
+    return Attribute::NoAlias;
+  case NoCapture:
+    return Attribute::NoCapture;
+  case NoInline:
+    return Attribute::NoInline;
+  case NonNull:
+    return Attribute::NonNull;
+  case NoRedZone:
+    return Attribute::NoRedZone;
+  case NoReturn:
+    return Attribute::NoReturn;
+  case NoUnwind:
+    return Attribute::NoUnwind;
+  case OptimizeForSize:
+    return Attribute::OptimizeForSize;
+  case ReadOnly:
+    return Attribute::ReadOnly;
+  case SExt:
+    return Attribute::SExt;
+  case StructRet:
+    return Attribute::StructRet;
+  case UWTable:
+    return Attribute::UWTable;
+  case ZExt:
+    return Attribute::ZExt;
+  case InReg:
+    return Attribute::InReg;
+  default:
+    llvm_unreachable("bad AttributeKind");
   }
 }
 
-extern "C" void LLVMRustAddCallSiteAttribute(LLVMValueRef Instr, unsigned index, LLVMRustAttribute attr) {
+extern "C" void LLVMRustAddCallSiteAttribute(LLVMValueRef Instr, unsigned index,
+                                             LLVMRustAttribute attr) {
   CallSite Call = CallSite(unwrap<Instruction>(Instr));
   Attribute Attr = Attribute::get(Call->getContext(), from_rust(attr));
   AttrBuilder B(Attr);
-  Call.setAttributes(
-    Call.getAttributes().addAttributes(Call->getContext(), index,
-                                       AttributeSet::get(Call->getContext(),
-                                                         index, B)));
+  Call.setAttributes(Call.getAttributes().addAttributes(
+      Call->getContext(), index,
+      AttributeSet::get(Call->getContext(), index, B)));
 }
 
 extern "C" void LLVMRustAddDereferenceableCallSiteAttr(LLVMValueRef Instr,
-                                                      unsigned index,
-                                                      uint64_t bytes)
-{
+                                                       unsigned index,
+                                                       uint64_t bytes) {
   CallSite Call = CallSite(unwrap<Instruction>(Instr));
   AttrBuilder B;
   B.addDereferenceableAttr(bytes);
-  Call.setAttributes(
-    Call.getAttributes().addAttributes(Call->getContext(), index,
-                                       AttributeSet::get(Call->getContext(),
-                                                         index, B)));
+  Call.setAttributes(Call.getAttributes().addAttributes(
+      Call->getContext(), index,
+      AttributeSet::get(Call->getContext(), index, B)));
 }
 
-extern "C" void LLVMRustAddFunctionAttribute(LLVMValueRef Fn,
-                                            unsigned index,
-                                            LLVMRustAttribute attr)
-{
+extern "C" void LLVMRustAddFunctionAttribute(LLVMValueRef Fn, unsigned index,
+                                             LLVMRustAttribute attr) {
   Function *A = unwrap<Function>(Fn);
   Attribute Attr = Attribute::get(A->getContext(), from_rust(attr));
   AttrBuilder B(Attr);
   A->addAttributes(index, AttributeSet::get(A->getContext(), index, B));
 }
 
-extern "C" void LLVMRustAddDereferenceableAttr(LLVMValueRef Fn,
-                                              unsigned index,
-                                              uint64_t bytes)
-{
+extern "C" void LLVMRustAddDereferenceableAttr(LLVMValueRef Fn, unsigned index,
+                                               uint64_t bytes) {
   Function *A = unwrap<Function>(Fn);
   AttrBuilder B;
   B.addDereferenceableAttr(bytes);
@@ -201,9 +191,9 @@ extern "C" void LLVMRustAddDereferenceableAttr(LLVMValueRef Fn,
 }
 
 extern "C" void LLVMRustAddFunctionAttrStringValue(LLVMValueRef Fn,
-                                                  unsigned index,
-                                                  const char *Name,
-                                                  const char *Value) {
+                                                   unsigned index,
+                                                   const char *Name,
+                                                   const char *Value) {
   Function *F = unwrap<Function>(Fn);
   AttrBuilder B;
   B.addAttribute(Name, Value);
@@ -211,90 +201,77 @@ extern "C" void LLVMRustAddFunctionAttrStringValue(LLVMValueRef Fn,
 }
 
 extern "C" void LLVMRustRemoveFunctionAttributes(LLVMValueRef Fn,
-                                                unsigned index,
-                                                LLVMRustAttribute attr)
-{
+                                                 unsigned index,
+                                                 LLVMRustAttribute attr) {
   Function *F = unwrap<Function>(Fn);
   const AttributeSet PAL = F->getAttributes();
   Attribute Attr = Attribute::get(F->getContext(), from_rust(attr));
   AttrBuilder B(Attr);
-  const AttributeSet PALnew =
-    PAL.removeAttributes(F->getContext(), index,
-                         AttributeSet::get(F->getContext(), index, B));
+  const AttributeSet PALnew = PAL.removeAttributes(
+      F->getContext(), index, AttributeSet::get(F->getContext(), index, B));
   F->setAttributes(PALnew);
 }
 
 // enable fpmath flag UnsafeAlgebra
 extern "C" void LLVMRustSetHasUnsafeAlgebra(LLVMValueRef V) {
-    if (auto I = dyn_cast<Instruction>(unwrap<Value>(V))) {
-        I->setHasUnsafeAlgebra(true);
-    }
+  if (auto I = dyn_cast<Instruction>(unwrap<Value>(V))) {
+    I->setHasUnsafeAlgebra(true);
+  }
 }
 
-extern "C" LLVMValueRef LLVMRustBuildAtomicLoad(LLVMBuilderRef B,
-                                               LLVMValueRef source,
-                                               const char* Name,
-                                               LLVMAtomicOrdering order,
-                                               unsigned alignment) {
-    LoadInst* li = new LoadInst(unwrap(source),0);
-    li->setAtomic(from_rust(order));
-    li->setAlignment(alignment);
-    return wrap(unwrap(B)->Insert(li, Name));
+extern "C" LLVMValueRef
+LLVMRustBuildAtomicLoad(LLVMBuilderRef B, LLVMValueRef source, const char *Name,
+                        LLVMAtomicOrdering order, unsigned alignment) {
+  LoadInst *li = new LoadInst(unwrap(source), 0);
+  li->setAtomic(from_rust(order));
+  li->setAlignment(alignment);
+  return wrap(unwrap(B)->Insert(li, Name));
 }
 
 extern "C" LLVMValueRef LLVMRustBuildAtomicStore(LLVMBuilderRef B,
-                                                LLVMValueRef val,
-                                                LLVMValueRef target,
-                                                LLVMAtomicOrdering order,
-                                                unsigned alignment) {
-    StoreInst* si = new StoreInst(unwrap(val),unwrap(target));
-    si->setAtomic(from_rust(order));
-    si->setAlignment(alignment);
-    return wrap(unwrap(B)->Insert(si));
-}
-
-extern "C" LLVMValueRef LLVMRustBuildAtomicCmpXchg(LLVMBuilderRef B,
-                                               LLVMValueRef target,
-                                               LLVMValueRef old,
-                                               LLVMValueRef source,
-                                               LLVMAtomicOrdering order,
-                                               LLVMAtomicOrdering failure_order,
-                                               LLVMBool weak) {
-    AtomicCmpXchgInst* acxi = unwrap(B)->CreateAtomicCmpXchg(
-        unwrap(target),
-        unwrap(old),
-        unwrap(source),
-        from_rust(order),
-       from_rust(failure_order));
-    acxi->setWeak(weak);
-    return wrap(acxi);
+                                                 LLVMValueRef val,
+                                                 LLVMValueRef target,
+                                                 LLVMAtomicOrdering order,
+                                                 unsigned alignment) {
+  StoreInst *si = new StoreInst(unwrap(val), unwrap(target));
+  si->setAtomic(from_rust(order));
+  si->setAlignment(alignment);
+  return wrap(unwrap(B)->Insert(si));
+}
+
+extern "C" LLVMValueRef
+LLVMRustBuildAtomicCmpXchg(LLVMBuilderRef B, LLVMValueRef target,
+                           LLVMValueRef old, LLVMValueRef source,
+                           LLVMAtomicOrdering order,
+                           LLVMAtomicOrdering failure_order, LLVMBool weak) {
+  AtomicCmpXchgInst *acxi = unwrap(B)->CreateAtomicCmpXchg(
+      unwrap(target), unwrap(old), unwrap(source), from_rust(order),
+      from_rust(failure_order));
+  acxi->setWeak(weak);
+  return wrap(acxi);
 }
 
 enum class LLVMRustSynchronizationScope {
-    Other,
-    SingleThread,
-    CrossThread,
+  Other,
+  SingleThread,
+  CrossThread,
 };
 
-static SynchronizationScope
-from_rust(LLVMRustSynchronizationScope scope)
-{
-    switch (scope) {
-    case LLVMRustSynchronizationScope::SingleThread:
-        return SingleThread;
-    case LLVMRustSynchronizationScope::CrossThread:
-        return CrossThread;
-    default:
-        llvm_unreachable("bad SynchronizationScope.");
-    }
+static SynchronizationScope from_rust(LLVMRustSynchronizationScope scope) {
+  switch (scope) {
+  case LLVMRustSynchronizationScope::SingleThread:
+    return SingleThread;
+  case LLVMRustSynchronizationScope::CrossThread:
+    return CrossThread;
+  default:
+    llvm_unreachable("bad SynchronizationScope.");
+  }
 }
 
-extern "C" LLVMValueRef LLVMRustBuildAtomicFence(
-    LLVMBuilderRef B,
-    LLVMAtomicOrdering order,
-    LLVMRustSynchronizationScope scope)
-{
-    return wrap(unwrap(B)->CreateFence(from_rust(order), from_rust(scope)));
+extern "C" LLVMValueRef
+LLVMRustBuildAtomicFence(LLVMBuilderRef B, LLVMAtomicOrdering order,
+                         LLVMRustSynchronizationScope scope) {
+  return wrap(unwrap(B)->CreateFence(from_rust(order), from_rust(scope)));
 }
 
 extern "C" void LLVMRustSetDebug(int Enabled) {
@@ -304,36 +281,32 @@ extern "C" void LLVMRustSetDebug(int Enabled) {
 }
 
 enum class LLVMRustAsmDialect {
-    Other,
-    Att,
-    Intel,
+  Other,
+  Att,
+  Intel,
 };
 
-static InlineAsm::AsmDialect
-from_rust(LLVMRustAsmDialect dialect)
-{
-    switch (dialect) {
-    case LLVMRustAsmDialect::Att:
-        return InlineAsm::AD_ATT;
-    case LLVMRustAsmDialect::Intel:
-        return InlineAsm::AD_Intel;
-    default:
-        llvm_unreachable("bad AsmDialect.");
-    }
+static InlineAsm::AsmDialect from_rust(LLVMRustAsmDialect dialect) {
+  switch (dialect) {
+  case LLVMRustAsmDialect::Att:
+    return InlineAsm::AD_ATT;
+  case LLVMRustAsmDialect::Intel:
+    return InlineAsm::AD_Intel;
+  default:
+    llvm_unreachable("bad AsmDialect.");
+  }
 }
 
-extern "C" LLVMValueRef LLVMRustInlineAsm(LLVMTypeRef Ty,
-                                         char *AsmString,
-                                         char *Constraints,
-                                         LLVMBool HasSideEffects,
-                                         LLVMBool IsAlignStack,
-                                         LLVMRustAsmDialect Dialect) {
-    return wrap(InlineAsm::get(unwrap<FunctionType>(Ty), AsmString,
-                               Constraints, HasSideEffects,
-                               IsAlignStack, from_rust(Dialect)));
+extern "C" LLVMValueRef LLVMRustInlineAsm(LLVMTypeRef Ty, char *AsmString,
+                                          char *Constraints,
+                                          LLVMBool HasSideEffects,
+                                          LLVMBool IsAlignStack,
+                                          LLVMRustAsmDialect Dialect) {
+  return wrap(InlineAsm::get(unwrap<FunctionType>(Ty), AsmString, Constraints,
+                             HasSideEffects, IsAlignStack, from_rust(Dialect)));
 }
 
-typedef DIBuilderLLVMRustDIBuilderRef;
+typedef DIBuilder *LLVMRustDIBuilderRef;
 
 typedef struct LLVMOpaqueMetadata *LLVMRustMetadataRef;
 
@@ -341,13 +314,12 @@ namespace llvm {
 DEFINE_ISA_CONVERSION_FUNCTIONS(Metadata, LLVMRustMetadataRef)
 
 inline Metadata **unwrap(LLVMRustMetadataRef *Vals) {
-  return reinterpret_cast<Metadata**>(Vals);
+  return reinterpret_cast<Metadata **>(Vals);
 }
 }
 
-template<typename DIT>
-DIT* unwrapDIptr(LLVMRustMetadataRef ref) {
-    return (DIT*) (ref ? unwrap<MDNode>(ref) : NULL);
+template <typename DIT> DIT *unwrapDIptr(LLVMRustMetadataRef ref) {
+  return (DIT *)(ref ? unwrap<MDNode>(ref) : nullptr);
 }
 
 #define DIDescriptor DIScope
@@ -358,614 +330,482 @@ DIT* unwrapDIptr(LLVMRustMetadataRef ref) {
 // to match LLVM, but that isn't required as we do giant sets of
 // matching below. The value shouldn't be directly passed to LLVM.
 enum class LLVMRustDIFlags : uint32_t {
-    FlagZero                = 0,
-    FlagPrivate             = 1,
-    FlagProtected           = 2,
-    FlagPublic              = 3,
-    FlagFwdDecl             = (1 << 2),
-    FlagAppleBlock          = (1 << 3),
-    FlagBlockByrefStruct    = (1 << 4),
-    FlagVirtual             = (1 << 5),
-    FlagArtificial          = (1 << 6),
-    FlagExplicit            = (1 << 7),
-    FlagPrototyped          = (1 << 8),
-    FlagObjcClassComplete   = (1 << 9),
-    FlagObjectPointer       = (1 << 10),
-    FlagVector              = (1 << 11),
-    FlagStaticMember        = (1 << 12),
-    FlagLValueReference     = (1 << 13),
-    FlagRValueReference     = (1 << 14),
-    // Do not add values that are not supported by the minimum LLVM
-    // version we support!
+  FlagZero = 0,
+  FlagPrivate = 1,
+  FlagProtected = 2,
+  FlagPublic = 3,
+  FlagFwdDecl = (1 << 2),
+  FlagAppleBlock = (1 << 3),
+  FlagBlockByrefStruct = (1 << 4),
+  FlagVirtual = (1 << 5),
+  FlagArtificial = (1 << 6),
+  FlagExplicit = (1 << 7),
+  FlagPrototyped = (1 << 8),
+  FlagObjcClassComplete = (1 << 9),
+  FlagObjectPointer = (1 << 10),
+  FlagVector = (1 << 11),
+  FlagStaticMember = (1 << 12),
+  FlagLValueReference = (1 << 13),
+  FlagRValueReference = (1 << 14),
+  // Do not add values that are not supported by the minimum LLVM
+  // version we support!
 };
 
-inline LLVMRustDIFlags operator& (LLVMRustDIFlags a, LLVMRustDIFlags b) {
-    return static_cast<LLVMRustDIFlags>(static_cast<uint32_t>(a) & static_cast<uint32_t>(b));
+inline LLVMRustDIFlags operator&(LLVMRustDIFlags a, LLVMRustDIFlags b) {
+  return static_cast<LLVMRustDIFlags>(static_cast<uint32_t>(a) &
+                                      static_cast<uint32_t>(b));
 }
 
-inline LLVMRustDIFlags operator| (LLVMRustDIFlags a, LLVMRustDIFlags b) {
-    return static_cast<LLVMRustDIFlags>(static_cast<uint32_t>(a) | static_cast<uint32_t>(b));
+inline LLVMRustDIFlags operator|(LLVMRustDIFlags a, LLVMRustDIFlags b) {
+  return static_cast<LLVMRustDIFlags>(static_cast<uint32_t>(a) |
+                                      static_cast<uint32_t>(b));
 }
 
-inline LLVMRustDIFlags& operator|= (LLVMRustDIFlags& a, LLVMRustDIFlags b) {
-    return a = a | b;
+inline LLVMRustDIFlags &operator|=(LLVMRustDIFlags &a, LLVMRustDIFlags b) {
+  return a = a | b;
 }
 
-inline bool is_set(LLVMRustDIFlags f) {
-    return f != LLVMRustDIFlags::FlagZero;
-}
+inline bool is_set(LLVMRustDIFlags f) { return f != LLVMRustDIFlags::FlagZero; }
 
 inline LLVMRustDIFlags visibility(LLVMRustDIFlags f) {
-    return static_cast<LLVMRustDIFlags>(static_cast<uint32_t>(f) & 0x3);
+  return static_cast<LLVMRustDIFlags>(static_cast<uint32_t>(f) & 0x3);
 }
 
 #if LLVM_VERSION_GE(4, 0)
 static DINode::DIFlags from_rust(LLVMRustDIFlags flags) {
-    DINode::DIFlags result = DINode::DIFlags::FlagZero;
+  DINode::DIFlags result = DINode::DIFlags::FlagZero;
 #else
 static unsigned from_rust(LLVMRustDIFlags flags) {
-    unsigned result = 0;
+  unsigned result = 0;
 #endif
 
-    switch (visibility(flags)) {
-    case LLVMRustDIFlags::FlagPrivate:
-        result |= DINode::DIFlags::FlagPrivate;
-        break;
-    case LLVMRustDIFlags::FlagProtected:
-        result |= DINode::DIFlags::FlagProtected;
-        break;
-    case LLVMRustDIFlags::FlagPublic:
-        result |= DINode::DIFlags::FlagPublic;
-        break;
-    default:
-        // The rest are handled below
-        break;
-    }
-
-    if (is_set(flags & LLVMRustDIFlags::FlagFwdDecl))             { result |= DINode::DIFlags::FlagFwdDecl; }
-    if (is_set(flags & LLVMRustDIFlags::FlagAppleBlock))          { result |= DINode::DIFlags::FlagAppleBlock; }
-    if (is_set(flags & LLVMRustDIFlags::FlagBlockByrefStruct))    { result |= DINode::DIFlags::FlagBlockByrefStruct; }
-    if (is_set(flags & LLVMRustDIFlags::FlagVirtual))             { result |= DINode::DIFlags::FlagVirtual; }
-    if (is_set(flags & LLVMRustDIFlags::FlagArtificial))          { result |= DINode::DIFlags::FlagArtificial; }
-    if (is_set(flags & LLVMRustDIFlags::FlagExplicit))            { result |= DINode::DIFlags::FlagExplicit; }
-    if (is_set(flags & LLVMRustDIFlags::FlagPrototyped))          { result |= DINode::DIFlags::FlagPrototyped; }
-    if (is_set(flags & LLVMRustDIFlags::FlagObjcClassComplete))   { result |= DINode::DIFlags::FlagObjcClassComplete; }
-    if (is_set(flags & LLVMRustDIFlags::FlagObjectPointer))       { result |= DINode::DIFlags::FlagObjectPointer; }
-    if (is_set(flags & LLVMRustDIFlags::FlagVector))              { result |= DINode::DIFlags::FlagVector; }
-    if (is_set(flags & LLVMRustDIFlags::FlagStaticMember))        { result |= DINode::DIFlags::FlagStaticMember; }
-    if (is_set(flags & LLVMRustDIFlags::FlagLValueReference))     { result |= DINode::DIFlags::FlagLValueReference; }
-    if (is_set(flags & LLVMRustDIFlags::FlagRValueReference))     { result |= DINode::DIFlags::FlagRValueReference; }
-
-    return result;
+  switch (visibility(flags)) {
+  case LLVMRustDIFlags::FlagPrivate:
+    result |= DINode::DIFlags::FlagPrivate;
+    break;
+  case LLVMRustDIFlags::FlagProtected:
+    result |= DINode::DIFlags::FlagProtected;
+    break;
+  case LLVMRustDIFlags::FlagPublic:
+    result |= DINode::DIFlags::FlagPublic;
+    break;
+  default:
+    // The rest are handled below
+    break;
+  }
+
+  if (is_set(flags & LLVMRustDIFlags::FlagFwdDecl)) {
+    result |= DINode::DIFlags::FlagFwdDecl;
+  }
+  if (is_set(flags & LLVMRustDIFlags::FlagAppleBlock)) {
+    result |= DINode::DIFlags::FlagAppleBlock;
+  }
+  if (is_set(flags & LLVMRustDIFlags::FlagBlockByrefStruct)) {
+    result |= DINode::DIFlags::FlagBlockByrefStruct;
+  }
+  if (is_set(flags & LLVMRustDIFlags::FlagVirtual)) {
+    result |= DINode::DIFlags::FlagVirtual;
+  }
+  if (is_set(flags & LLVMRustDIFlags::FlagArtificial)) {
+    result |= DINode::DIFlags::FlagArtificial;
+  }
+  if (is_set(flags & LLVMRustDIFlags::FlagExplicit)) {
+    result |= DINode::DIFlags::FlagExplicit;
+  }
+  if (is_set(flags & LLVMRustDIFlags::FlagPrototyped)) {
+    result |= DINode::DIFlags::FlagPrototyped;
+  }
+  if (is_set(flags & LLVMRustDIFlags::FlagObjcClassComplete)) {
+    result |= DINode::DIFlags::FlagObjcClassComplete;
+  }
+  if (is_set(flags & LLVMRustDIFlags::FlagObjectPointer)) {
+    result |= DINode::DIFlags::FlagObjectPointer;
+  }
+  if (is_set(flags & LLVMRustDIFlags::FlagVector)) {
+    result |= DINode::DIFlags::FlagVector;
+  }
+  if (is_set(flags & LLVMRustDIFlags::FlagStaticMember)) {
+    result |= DINode::DIFlags::FlagStaticMember;
+  }
+  if (is_set(flags & LLVMRustDIFlags::FlagLValueReference)) {
+    result |= DINode::DIFlags::FlagLValueReference;
+  }
+  if (is_set(flags & LLVMRustDIFlags::FlagRValueReference)) {
+    result |= DINode::DIFlags::FlagRValueReference;
+  }
+
+  return result;
 }
 
 extern "C" uint32_t LLVMRustDebugMetadataVersion() {
-    return DEBUG_METADATA_VERSION;
+  return DEBUG_METADATA_VERSION;
 }
 
-extern "C" uint32_t LLVMRustVersionMinor() {
-  return LLVM_VERSION_MINOR;
-}
+extern "C" uint32_t LLVMRustVersionMinor() { return LLVM_VERSION_MINOR; }
 
-extern "C" uint32_t LLVMRustVersionMajor() {
-  return LLVM_VERSION_MAJOR;
-}
+extern "C" uint32_t LLVMRustVersionMajor() { return LLVM_VERSION_MAJOR; }
 
-extern "C" void LLVMRustAddModuleFlag(LLVMModuleRef M,
-                                      const char *name,
+extern "C" void LLVMRustAddModuleFlag(LLVMModuleRef M, const char *name,
                                       uint32_t value) {
-    unwrap(M)->addModuleFlag(Module::Warning, name, value);
+  unwrap(M)->addModuleFlag(Module::Warning, name, value);
 }
 
 extern "C" LLVMRustDIBuilderRef LLVMRustDIBuilderCreate(LLVMModuleRef M) {
-    return new DIBuilder(*unwrap(M));
+  return new DIBuilder(*unwrap(M));
 }
 
 extern "C" void LLVMRustDIBuilderDispose(LLVMRustDIBuilderRef Builder) {
-    delete Builder;
+  delete Builder;
 }
 
 extern "C" void LLVMRustDIBuilderFinalize(LLVMRustDIBuilderRef Builder) {
-    Builder->finalize();
+  Builder->finalize();
 }
 
 extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateCompileUnit(
-    LLVMRustDIBuilderRef Builder,
-    unsigned Lang,
-    const char* File,
-    const char* Dir,
-    const char* Producer,
-    bool isOptimized,
-    const char* Flags,
-    unsigned RuntimeVer,
-    const char* SplitName) {
-    return wrap(Builder->createCompileUnit(Lang,
-                                           File,
-                                           Dir,
-                                           Producer,
-                                           isOptimized,
-                                           Flags,
-                                           RuntimeVer,
-                                           SplitName));
-}
-
-extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateFile(
-    LLVMRustDIBuilderRef Builder,
-    const char* Filename,
-    const char* Directory) {
-    return wrap(Builder->createFile(Filename, Directory));
-}
-
-extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateSubroutineType(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef File,
-    LLVMRustMetadataRef ParameterTypes) {
-    return wrap(Builder->createSubroutineType(
+    LLVMRustDIBuilderRef Builder, unsigned Lang, const char *File,
+    const char *Dir, const char *Producer, bool isOptimized, const char *Flags,
+    unsigned RuntimeVer, const char *SplitName) {
+  return wrap(Builder->createCompileUnit(Lang, File, Dir, Producer, isOptimized,
+                                         Flags, RuntimeVer, SplitName));
+}
+
+extern "C" LLVMRustMetadataRef
+LLVMRustDIBuilderCreateFile(LLVMRustDIBuilderRef Builder, const char *Filename,
+                            const char *Directory) {
+  return wrap(Builder->createFile(Filename, Directory));
+}
+
+extern "C" LLVMRustMetadataRef
+LLVMRustDIBuilderCreateSubroutineType(LLVMRustDIBuilderRef Builder,
+                                      LLVMRustMetadataRef File,
+                                      LLVMRustMetadataRef ParameterTypes) {
+  return wrap(Builder->createSubroutineType(
 #if LLVM_VERSION_EQ(3, 7)
-        unwrapDI<DIFile>(File),
+      unwrapDI<DIFile>(File),
 #endif
-        DITypeRefArray(unwrap<MDTuple>(ParameterTypes))));
+      DITypeRefArray(unwrap<MDTuple>(ParameterTypes))));
 }
 
 extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateFunction(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef Scope,
-    const char* Name,
-    const char* LinkageName,
-    LLVMRustMetadataRef File,
-    unsigned LineNo,
-    LLVMRustMetadataRef Ty,
-    bool isLocalToUnit,
-    bool isDefinition,
-    unsigned ScopeLine,
-    LLVMRustDIFlags Flags,
-    bool isOptimized,
-    LLVMValueRef Fn,
-    LLVMRustMetadataRef TParam,
-    LLVMRustMetadataRef Decl) {
+    LLVMRustDIBuilderRef Builder, LLVMRustMetadataRef Scope, const char *Name,
+    const char *LinkageName, LLVMRustMetadataRef File, unsigned LineNo,
+    LLVMRustMetadataRef Ty, bool isLocalToUnit, bool isDefinition,
+    unsigned ScopeLine, LLVMRustDIFlags Flags, bool isOptimized,
+    LLVMValueRef Fn, LLVMRustMetadataRef TParam, LLVMRustMetadataRef Decl) {
 #if LLVM_VERSION_GE(3, 8)
-    DITemplateParameterArray TParams =
-        DITemplateParameterArray(unwrap<MDTuple>(TParam));
-    DISubprogram *Sub = Builder->createFunction(
-        unwrapDI<DIScope>(Scope), Name, LinkageName,
-        unwrapDI<DIFile>(File), LineNo,
-        unwrapDI<DISubroutineType>(Ty), isLocalToUnit, isDefinition, ScopeLine,
-        from_rust(Flags), isOptimized,
-        TParams,
-        unwrapDIptr<DISubprogram>(Decl));
-    unwrap<Function>(Fn)->setSubprogram(Sub);
-    return wrap(Sub);
+  DITemplateParameterArray TParams =
+      DITemplateParameterArray(unwrap<MDTuple>(TParam));
+  DISubprogram *Sub = Builder->createFunction(
+      unwrapDI<DIScope>(Scope), Name, LinkageName, unwrapDI<DIFile>(File),
+      LineNo, unwrapDI<DISubroutineType>(Ty), isLocalToUnit, isDefinition,
+      ScopeLine, from_rust(Flags), isOptimized, TParams,
+      unwrapDIptr<DISubprogram>(Decl));
+  unwrap<Function>(Fn)->setSubprogram(Sub);
+  return wrap(Sub);
 #else
-    return wrap(Builder->createFunction(
-        unwrapDI<DIScope>(Scope), Name, LinkageName,
-        unwrapDI<DIFile>(File), LineNo,
-        unwrapDI<DISubroutineType>(Ty), isLocalToUnit, isDefinition, ScopeLine,
-        from_rust(Flags), isOptimized,
-        unwrap<Function>(Fn),
-        unwrapDIptr<MDNode>(TParam),
-        unwrapDIptr<MDNode>(Decl)));
+  return wrap(Builder->createFunction(
+      unwrapDI<DIScope>(Scope), Name, LinkageName, unwrapDI<DIFile>(File),
+      LineNo, unwrapDI<DISubroutineType>(Ty), isLocalToUnit, isDefinition,
+      ScopeLine, from_rust(Flags), isOptimized, unwrap<Function>(Fn),
+      unwrapDIptr<MDNode>(TParam), unwrapDIptr<MDNode>(Decl)));
 #endif
 }
 
-extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateBasicType(
-    LLVMRustDIBuilderRef Builder,
-    const char* Name,
-    uint64_t SizeInBits,
-    uint64_t AlignInBits,
-    unsigned Encoding) {
-    return wrap(Builder->createBasicType(
-        Name,
-        SizeInBits,
+extern "C" LLVMRustMetadataRef
+LLVMRustDIBuilderCreateBasicType(LLVMRustDIBuilderRef Builder, const char *Name,
+                                 uint64_t SizeInBits, uint64_t AlignInBits,
+                                 unsigned Encoding) {
+  return wrap(Builder->createBasicType(Name, SizeInBits,
 #if LLVM_VERSION_LE(3, 9)
-        AlignInBits,
+                                       AlignInBits,
 #endif
-        Encoding
-    ));
+                                       Encoding));
 }
 
 extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreatePointerType(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef PointeeTy,
-    uint64_t SizeInBits,
-    uint64_t AlignInBits,
-    const char* Name) {
-    return wrap(Builder->createPointerType(
-        unwrapDI<DIType>(PointeeTy), SizeInBits, AlignInBits, Name));
+    LLVMRustDIBuilderRef Builder, LLVMRustMetadataRef PointeeTy,
+    uint64_t SizeInBits, uint64_t AlignInBits, const char *Name) {
+  return wrap(Builder->createPointerType(unwrapDI<DIType>(PointeeTy),
+                                         SizeInBits, AlignInBits, Name));
 }
 
 extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateStructType(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef Scope,
-    const char* Name,
-    LLVMRustMetadataRef File,
-    unsigned LineNumber,
-    uint64_t SizeInBits,
-    uint64_t AlignInBits,
-    LLVMRustDIFlags Flags,
-    LLVMRustMetadataRef DerivedFrom,
-    LLVMRustMetadataRef Elements,
-    unsigned RunTimeLang,
-    LLVMRustMetadataRef VTableHolder,
+    LLVMRustDIBuilderRef Builder, LLVMRustMetadataRef Scope, const char *Name,
+    LLVMRustMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
+    uint64_t AlignInBits, LLVMRustDIFlags Flags,
+    LLVMRustMetadataRef DerivedFrom, LLVMRustMetadataRef Elements,
+    unsigned RunTimeLang, LLVMRustMetadataRef VTableHolder,
     const char *UniqueId) {
-    return wrap(Builder->createStructType(
-        unwrapDI<DIDescriptor>(Scope),
-        Name,
-        unwrapDI<DIFile>(File),
-        LineNumber,
-        SizeInBits,
-        AlignInBits,
-        from_rust(Flags),
-        unwrapDI<DIType>(DerivedFrom),
-        DINodeArray(unwrapDI<MDTuple>(Elements)),
-        RunTimeLang,
-        unwrapDI<DIType>(VTableHolder),
-        UniqueId
-        ));
+  return wrap(Builder->createStructType(
+      unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
+      SizeInBits, AlignInBits, from_rust(Flags), unwrapDI<DIType>(DerivedFrom),
+      DINodeArray(unwrapDI<MDTuple>(Elements)), RunTimeLang,
+      unwrapDI<DIType>(VTableHolder), UniqueId));
 }
 
 extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateMemberType(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef Scope,
-    const char* Name,
-    LLVMRustMetadataRef File,
-    unsigned LineNo,
-    uint64_t SizeInBits,
-    uint64_t AlignInBits,
-    uint64_t OffsetInBits,
-    LLVMRustDIFlags Flags,
+    LLVMRustDIBuilderRef Builder, LLVMRustMetadataRef Scope, const char *Name,
+    LLVMRustMetadataRef File, unsigned LineNo, uint64_t SizeInBits,
+    uint64_t AlignInBits, uint64_t OffsetInBits, LLVMRustDIFlags Flags,
     LLVMRustMetadataRef Ty) {
-    return wrap(Builder->createMemberType(
-        unwrapDI<DIDescriptor>(Scope), Name,
-        unwrapDI<DIFile>(File), LineNo,
-        SizeInBits, AlignInBits, OffsetInBits, from_rust(Flags),
-        unwrapDI<DIType>(Ty)));
+  return wrap(Builder->createMemberType(
+      unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNo,
+      SizeInBits, AlignInBits, OffsetInBits, from_rust(Flags),
+      unwrapDI<DIType>(Ty)));
 }
 
 extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateLexicalBlock(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef Scope,
-    LLVMRustMetadataRef File,
-    unsigned Line,
-    unsigned Col) {
-    return wrap(Builder->createLexicalBlock(
-        unwrapDI<DIDescriptor>(Scope),
-        unwrapDI<DIFile>(File), Line, Col
-        ));
+    LLVMRustDIBuilderRef Builder, LLVMRustMetadataRef Scope,
+    LLVMRustMetadataRef File, unsigned Line, unsigned Col) {
+  return wrap(Builder->createLexicalBlock(unwrapDI<DIDescriptor>(Scope),
+                                          unwrapDI<DIFile>(File), Line, Col));
 }
 
-extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateLexicalBlockFile(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef Scope,
-    LLVMRustMetadataRef File) {
-    return wrap(Builder->createLexicalBlockFile(
-        unwrapDI<DIDescriptor>(Scope),
-        unwrapDI<DIFile>(File)));
+extern "C" LLVMRustMetadataRef
+LLVMRustDIBuilderCreateLexicalBlockFile(LLVMRustDIBuilderRef Builder,
+                                        LLVMRustMetadataRef Scope,
+                                        LLVMRustMetadataRef File) {
+  return wrap(Builder->createLexicalBlockFile(unwrapDI<DIDescriptor>(Scope),
+                                              unwrapDI<DIFile>(File)));
 }
 
 extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateStaticVariable(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef Context,
-    const char* Name,
-    const char* LinkageName,
-    LLVMRustMetadataRef File,
-    unsigned LineNo,
-    LLVMRustMetadataRef Ty,
-    bool isLocalToUnit,
-    LLVMValueRef Val,
-    LLVMRustMetadataRef Decl = NULL,
-    uint64_t AlignInBits = 0) {
-    Constant *InitVal = cast<Constant>(unwrap(Val));
+    LLVMRustDIBuilderRef Builder, LLVMRustMetadataRef Context, const char *Name,
+    const char *LinkageName, LLVMRustMetadataRef File, unsigned LineNo,
+    LLVMRustMetadataRef Ty, bool isLocalToUnit, LLVMValueRef Val,
+    LLVMRustMetadataRef Decl = nullptr, uint64_t AlignInBits = 0) {
+  Constant *InitVal = cast<Constant>(unwrap(Val));
 
 #if LLVM_VERSION_GE(4, 0)
-    llvm::DIExpression *InitExpr = nullptr;
-    if (llvm::ConstantInt *IntVal = llvm::dyn_cast<llvm::ConstantInt>(InitVal)) {
-      InitExpr = Builder->createConstantValueExpression(
-          IntVal->getValue().getSExtValue());
-    } else if (llvm::ConstantFP *FPVal = llvm::dyn_cast<llvm::ConstantFP>(InitVal)) {
-        InitExpr = Builder->createConstantValueExpression(
-                FPVal->getValueAPF().bitcastToAPInt().getZExtValue());
-    }
+  llvm::DIExpression *InitExpr = nullptr;
+  if (llvm::ConstantInt *IntVal = llvm::dyn_cast<llvm::ConstantInt>(InitVal)) {
+    InitExpr = Builder->createConstantValueExpression(
+        IntVal->getValue().getSExtValue());
+  } else if (llvm::ConstantFP *FPVal =
+                 llvm::dyn_cast<llvm::ConstantFP>(InitVal)) {
+    InitExpr = Builder->createConstantValueExpression(
+        FPVal->getValueAPF().bitcastToAPInt().getZExtValue());
+  }
 #endif
 
-    return wrap(Builder->createGlobalVariable(unwrapDI<DIDescriptor>(Context),
-        Name,
-        LinkageName,
-        unwrapDI<DIFile>(File),
-        LineNo,
-        unwrapDI<DIType>(Ty),
-        isLocalToUnit,
+  return wrap(Builder->createGlobalVariable(
+      unwrapDI<DIDescriptor>(Context), Name, LinkageName,
+      unwrapDI<DIFile>(File), LineNo, unwrapDI<DIType>(Ty), isLocalToUnit,
 #if LLVM_VERSION_GE(4, 0)
-        InitExpr,
+      InitExpr,
 #else
-        InitVal,
+      InitVal,
 #endif
-        unwrapDIptr<MDNode>(Decl)
+      unwrapDIptr<MDNode>(Decl)
 #if LLVM_VERSION_GE(4, 0)
-        , AlignInBits
+          ,
+      AlignInBits
 #endif
-    ));
+      ));
 }
 
 extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateVariable(
-    LLVMRustDIBuilderRef Builder,
-    unsigned Tag,
-    LLVMRustMetadataRef Scope,
-    const char* Name,
-    LLVMRustMetadataRef File,
-    unsigned LineNo,
-    LLVMRustMetadataRef Ty,
-    bool AlwaysPreserve,
-    LLVMRustDIFlags Flags,
-    unsigned ArgNo,
-    uint64_t AlignInBits)
-{
+    LLVMRustDIBuilderRef Builder, unsigned Tag, LLVMRustMetadataRef Scope,
+    const char *Name, LLVMRustMetadataRef File, unsigned LineNo,
+    LLVMRustMetadataRef Ty, bool AlwaysPreserve, LLVMRustDIFlags Flags,
+    unsigned ArgNo, uint64_t AlignInBits) {
 #if LLVM_VERSION_GE(3, 8)
-    if (Tag == 0x100) { // DW_TAG_auto_variable
-        return wrap(Builder->createAutoVariable(
-            unwrapDI<DIDescriptor>(Scope),
-            Name,
-            unwrapDI<DIFile>(File),
-            LineNo,
-            unwrapDI<DIType>(Ty),
-            AlwaysPreserve,
-            from_rust(Flags)
-#if LLVM_VERSION_GE(4,0)
-            , AlignInBits
+  if (Tag == 0x100) { // DW_TAG_auto_variable
+    return wrap(Builder->createAutoVariable(
+        unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNo,
+        unwrapDI<DIType>(Ty), AlwaysPreserve, from_rust(Flags)
+#if LLVM_VERSION_GE(4, 0)
+                                                  ,
+        AlignInBits
 #endif
         ));
-    } else {
-        return wrap(Builder->createParameterVariable(
-            unwrapDI<DIDescriptor>(Scope), Name, ArgNo,
-            unwrapDI<DIFile>(File),
-            LineNo,
-            unwrapDI<DIType>(Ty), AlwaysPreserve, from_rust(Flags)));
-    }
+  } else {
+    return wrap(Builder->createParameterVariable(
+        unwrapDI<DIDescriptor>(Scope), Name, ArgNo, unwrapDI<DIFile>(File),
+        LineNo, unwrapDI<DIType>(Ty), AlwaysPreserve, from_rust(Flags)));
+  }
 #else
-    return wrap(Builder->createLocalVariable(Tag,
-        unwrapDI<DIDescriptor>(Scope), Name,
-        unwrapDI<DIFile>(File),
-        LineNo,
-        unwrapDI<DIType>(Ty), AlwaysPreserve, from_rust(Flags), ArgNo));
+  return wrap(Builder->createLocalVariable(
+      Tag, unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNo,
+      unwrapDI<DIType>(Ty), AlwaysPreserve, from_rust(Flags), ArgNo));
 #endif
 }
 
-extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateArrayType(
-    LLVMRustDIBuilderRef Builder,
-    uint64_t Size,
-    uint64_t AlignInBits,
-    LLVMRustMetadataRef Ty,
-    LLVMRustMetadataRef Subscripts) {
-    return wrap(Builder->createArrayType(Size, AlignInBits,
-        unwrapDI<DIType>(Ty),
-        DINodeArray(unwrapDI<MDTuple>(Subscripts))
-    ));
+extern "C" LLVMRustMetadataRef
+LLVMRustDIBuilderCreateArrayType(LLVMRustDIBuilderRef Builder, uint64_t Size,
+                                 uint64_t AlignInBits, LLVMRustMetadataRef Ty,
+                                 LLVMRustMetadataRef Subscripts) {
+  return wrap(
+      Builder->createArrayType(Size, AlignInBits, unwrapDI<DIType>(Ty),
+                               DINodeArray(unwrapDI<MDTuple>(Subscripts))));
 }
 
-extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateVectorType(
-    LLVMRustDIBuilderRef Builder,
-    uint64_t Size,
-    uint64_t AlignInBits,
-    LLVMRustMetadataRef Ty,
-    LLVMRustMetadataRef Subscripts) {
-    return wrap(Builder->createVectorType(Size, AlignInBits,
-        unwrapDI<DIType>(Ty),
-        DINodeArray(unwrapDI<MDTuple>(Subscripts))
-    ));
+extern "C" LLVMRustMetadataRef
+LLVMRustDIBuilderCreateVectorType(LLVMRustDIBuilderRef Builder, uint64_t Size,
+                                  uint64_t AlignInBits, LLVMRustMetadataRef Ty,
+                                  LLVMRustMetadataRef Subscripts) {
+  return wrap(
+      Builder->createVectorType(Size, AlignInBits, unwrapDI<DIType>(Ty),
+                                DINodeArray(unwrapDI<MDTuple>(Subscripts))));
 }
 
-extern "C" LLVMRustMetadataRef LLVMRustDIBuilderGetOrCreateSubrange(
-    LLVMRustDIBuilderRef Builder,
-    int64_t Lo,
-    int64_t Count) {
-    return wrap(Builder->getOrCreateSubrange(Lo, Count));
+extern "C" LLVMRustMetadataRef
+LLVMRustDIBuilderGetOrCreateSubrange(LLVMRustDIBuilderRef Builder, int64_t Lo,
+                                     int64_t Count) {
+  return wrap(Builder->getOrCreateSubrange(Lo, Count));
 }
 
-extern "C" LLVMRustMetadataRef LLVMRustDIBuilderGetOrCreateArray(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef* Ptr,
-    unsigned Count) {
-    Metadata **DataValue = unwrap(Ptr);
-    return wrap(Builder->getOrCreateArray(
-        ArrayRef<Metadata*>(DataValue, Count)).get());
+extern "C" LLVMRustMetadataRef
+LLVMRustDIBuilderGetOrCreateArray(LLVMRustDIBuilderRef Builder,
+                                  LLVMRustMetadataRef *Ptr, unsigned Count) {
+  Metadata **DataValue = unwrap(Ptr);
+  return wrap(
+      Builder->getOrCreateArray(ArrayRef<Metadata *>(DataValue, Count)).get());
 }
 
 extern "C" LLVMValueRef LLVMRustDIBuilderInsertDeclareAtEnd(
-    LLVMRustDIBuilderRef Builder,
-    LLVMValueRef Val,
-    LLVMRustMetadataRef VarInfo,
-    int64_t* AddrOps,
-    unsigned AddrOpsCount,
-    LLVMValueRef DL,
+    LLVMRustDIBuilderRef Builder, LLVMValueRef Val, LLVMRustMetadataRef VarInfo,
+    int64_t *AddrOps, unsigned AddrOpsCount, LLVMValueRef DL,
     LLVMBasicBlockRef InsertAtEnd) {
-    return wrap(Builder->insertDeclare(
-        unwrap(Val),
-        unwrap<DILocalVariable>(VarInfo),
-        Builder->createExpression(
-          llvm::ArrayRef<int64_t>(AddrOps, AddrOpsCount)),
-        DebugLoc(cast<MDNode>(unwrap<MetadataAsValue>(DL)->getMetadata())),
-        unwrap(InsertAtEnd)));
+  return wrap(Builder->insertDeclare(
+      unwrap(Val), unwrap<DILocalVariable>(VarInfo),
+      Builder->createExpression(llvm::ArrayRef<int64_t>(AddrOps, AddrOpsCount)),
+      DebugLoc(cast<MDNode>(unwrap<MetadataAsValue>(DL)->getMetadata())),
+      unwrap(InsertAtEnd)));
 }
 
-extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateEnumerator(
-    LLVMRustDIBuilderRef Builder,
-    const char* Name,
-    uint64_t Val)
-{
-    return wrap(Builder->createEnumerator(Name, Val));
+extern "C" LLVMRustMetadataRef
+LLVMRustDIBuilderCreateEnumerator(LLVMRustDIBuilderRef Builder,
+                                  const char *Name, uint64_t Val) {
+  return wrap(Builder->createEnumerator(Name, Val));
 }
 
 extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateEnumerationType(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef Scope,
-    const char* Name,
-    LLVMRustMetadataRef File,
-    unsigned LineNumber,
-    uint64_t SizeInBits,
-    uint64_t AlignInBits,
-    LLVMRustMetadataRef Elements,
-    LLVMRustMetadataRef ClassType)
-{
-    return wrap(Builder->createEnumerationType(
-        unwrapDI<DIDescriptor>(Scope),
-        Name,
-        unwrapDI<DIFile>(File),
-        LineNumber,
-        SizeInBits,
-        AlignInBits,
-        DINodeArray(unwrapDI<MDTuple>(Elements)),
-        unwrapDI<DIType>(ClassType)));
+    LLVMRustDIBuilderRef Builder, LLVMRustMetadataRef Scope, const char *Name,
+    LLVMRustMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
+    uint64_t AlignInBits, LLVMRustMetadataRef Elements,
+    LLVMRustMetadataRef ClassType) {
+  return wrap(Builder->createEnumerationType(
+      unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
+      SizeInBits, AlignInBits, DINodeArray(unwrapDI<MDTuple>(Elements)),
+      unwrapDI<DIType>(ClassType)));
 }
 
 extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateUnionType(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef Scope,
-    const char* Name,
-    LLVMRustMetadataRef File,
-    unsigned LineNumber,
-    uint64_t SizeInBits,
-    uint64_t AlignInBits,
-    LLVMRustDIFlags Flags,
-    LLVMRustMetadataRef Elements,
-    unsigned RunTimeLang,
-    const char* UniqueId)
-{
-    return wrap(Builder->createUnionType(
-        unwrapDI<DIDescriptor>(Scope),
-        Name,
-        unwrapDI<DIFile>(File),
-        LineNumber,
-        SizeInBits,
-        AlignInBits,
-        from_rust(Flags),
-        DINodeArray(unwrapDI<MDTuple>(Elements)),
-        RunTimeLang,
-        UniqueId
-        ));
+    LLVMRustDIBuilderRef Builder, LLVMRustMetadataRef Scope, const char *Name,
+    LLVMRustMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
+    uint64_t AlignInBits, LLVMRustDIFlags Flags, LLVMRustMetadataRef Elements,
+    unsigned RunTimeLang, const char *UniqueId) {
+  return wrap(Builder->createUnionType(
+      unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
+      SizeInBits, AlignInBits, from_rust(Flags),
+      DINodeArray(unwrapDI<MDTuple>(Elements)), RunTimeLang, UniqueId));
 }
 
 extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateTemplateTypeParameter(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef Scope,
-    const char* Name,
-    LLVMRustMetadataRef Ty,
-    LLVMRustMetadataRef File,
-    unsigned LineNo,
-    unsigned ColumnNo)
-{
-    return wrap(Builder->createTemplateTypeParameter(
-      unwrapDI<DIDescriptor>(Scope),
-      Name,
-      unwrapDI<DIType>(Ty)
-      ));
-}
-
-extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateNameSpace(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef Scope,
-    const char* Name,
-    LLVMRustMetadataRef File,
-    unsigned LineNo)
-{
-    return wrap(Builder->createNameSpace(
-        unwrapDI<DIDescriptor>(Scope),
-        Name,
-        unwrapDI<DIFile>(File),
-        LineNo
+    LLVMRustDIBuilderRef Builder, LLVMRustMetadataRef Scope, const char *Name,
+    LLVMRustMetadataRef Ty, LLVMRustMetadataRef File, unsigned LineNo,
+    unsigned ColumnNo) {
+  return wrap(Builder->createTemplateTypeParameter(
+      unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIType>(Ty)));
+}
+
+extern "C" LLVMRustMetadataRef
+LLVMRustDIBuilderCreateNameSpace(LLVMRustDIBuilderRef Builder,
+                                 LLVMRustMetadataRef Scope, const char *Name,
+                                 LLVMRustMetadataRef File, unsigned LineNo) {
+  return wrap(Builder->createNameSpace(
+      unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNo
 #if LLVM_VERSION_GE(4, 0)
-        , false // ExportSymbols (only relevant for C++ anonymous namespaces)
+      ,
+      false // ExportSymbols (only relevant for C++ anonymous namespaces)
 #endif
-    ));
+      ));
 }
 
-extern "C" void LLVMRustDICompositeTypeSetTypeArray(
-    LLVMRustDIBuilderRef Builder,
-    LLVMRustMetadataRef CompositeType,
-    LLVMRustMetadataRef TypeArray)
-{
-    DICompositeType *tmp = unwrapDI<DICompositeType>(CompositeType);
-    Builder->replaceArrays(tmp, DINodeArray(unwrap<MDTuple>(TypeArray)));
+extern "C" void
+LLVMRustDICompositeTypeSetTypeArray(LLVMRustDIBuilderRef Builder,
+                                    LLVMRustMetadataRef CompositeType,
+                                    LLVMRustMetadataRef TypeArray) {
+  DICompositeType *tmp = unwrapDI<DICompositeType>(CompositeType);
+  Builder->replaceArrays(tmp, DINodeArray(unwrap<MDTuple>(TypeArray)));
 }
 
-extern "C" LLVMValueRef LLVMRustDIBuilderCreateDebugLocation(
-  LLVMContextRef Context,
-  unsigned Line,
-  unsigned Column,
-  LLVMRustMetadataRef Scope,
-  LLVMRustMetadataRef InlinedAt)
-{
-    LLVMContext& context = *unwrap(Context);
+extern "C" LLVMValueRef
+LLVMRustDIBuilderCreateDebugLocation(LLVMContextRef Context, unsigned Line,
+                                     unsigned Column, LLVMRustMetadataRef Scope,
+                                     LLVMRustMetadataRef InlinedAt) {
+  LLVMContext &context = *unwrap(Context);
 
-    DebugLoc debug_loc = DebugLoc::get(Line,
-                                       Column,
-                                       unwrapDIptr<MDNode>(Scope),
-                                       unwrapDIptr<MDNode>(InlinedAt));
+  DebugLoc debug_loc = DebugLoc::get(Line, Column, unwrapDIptr<MDNode>(Scope),
+                                     unwrapDIptr<MDNode>(InlinedAt));
 
-    return wrap(MetadataAsValue::get(context, debug_loc.getAsMDNode()));
+  return wrap(MetadataAsValue::get(context, debug_loc.getAsMDNode()));
 }
 
-extern "C" int64_t LLVMRustDIBuilderCreateOpDeref()
-{
-    return dwarf::DW_OP_deref;
+extern "C" int64_t LLVMRustDIBuilderCreateOpDeref() {
+  return dwarf::DW_OP_deref;
 }
 
-extern "C" int64_t LLVMRustDIBuilderCreateOpPlus()
-{
-    return dwarf::DW_OP_plus;
-}
+extern "C" int64_t LLVMRustDIBuilderCreateOpPlus() { return dwarf::DW_OP_plus; }
 
 extern "C" void LLVMRustWriteTypeToString(LLVMTypeRef Type, RustStringRef str) {
-    raw_rust_string_ostream os(str);
-    unwrap<llvm::Type>(Type)->print(os);
+  raw_rust_string_ostream os(str);
+  unwrap<llvm::Type>(Type)->print(os);
 }
 
-extern "C" void LLVMRustWriteValueToString(LLVMValueRef Value, RustStringRef str) {
-    raw_rust_string_ostream os(str);
-    os << "(";
-    unwrap<llvm::Value>(Value)->getType()->print(os);
-    os << ":";
-    unwrap<llvm::Value>(Value)->print(os);
-    os << ")";
+extern "C" void LLVMRustWriteValueToString(LLVMValueRef Value,
+                                           RustStringRef str) {
+  raw_rust_string_ostream os(str);
+  os << "(";
+  unwrap<llvm::Value>(Value)->getType()->print(os);
+  os << ":";
+  unwrap<llvm::Value>(Value)->print(os);
+  os << ")";
 }
 
-extern "C" bool
-LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc, size_t len) {
-    Module *Dst = unwrap(dst);
+extern "C" bool LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc,
+                                              size_t len) {
+  Module *Dst = unwrap(dst);
 
-    std::unique_ptr<MemoryBuffer> buf = MemoryBuffer::getMemBufferCopy(StringRef(bc, len));
+  std::unique_ptr<MemoryBuffer> buf =
+      MemoryBuffer::getMemBufferCopy(StringRef(bc, len));
 
 #if LLVM_VERSION_GE(4, 0)
-    Expected<std::unique_ptr<Module>> SrcOrError =
-        llvm::getLazyBitcodeModule(buf->getMemBufferRef(), Dst->getContext());
-    if (!SrcOrError) {
-        LLVMRustSetLastError(toString(SrcOrError.takeError()).c_str());
-        return false;
-    }
-
-    auto Src = std::move(*SrcOrError);
+  Expected<std::unique_ptr<Module>> SrcOrError =
+      llvm::getLazyBitcodeModule(buf->getMemBufferRef(), Dst->getContext());
+  if (!SrcOrError) {
+    LLVMRustSetLastError(toString(SrcOrError.takeError()).c_str());
+    return false;
+  }
+
+  auto Src = std::move(*SrcOrError);
 #else
-    ErrorOr<std::unique_ptr<Module>> Src =
-        llvm::getLazyBitcodeModule(std::move(buf), Dst->getContext());
-    if (!Src) {
-        LLVMRustSetLastError(Src.getError().message().c_str());
-        return false;
-    }
+  ErrorOr<std::unique_ptr<Module>> Src =
+      llvm::getLazyBitcodeModule(std::move(buf), Dst->getContext());
+  if (!Src) {
+    LLVMRustSetLastError(Src.getError().message().c_str());
+    return false;
+  }
 #endif
 
-    std::string Err;
+  std::string Err;
 
-    raw_string_ostream Stream(Err);
-    DiagnosticPrinterRawOStream DP(Stream);
+  raw_string_ostream Stream(Err);
+  DiagnosticPrinterRawOStream DP(Stream);
 #if LLVM_VERSION_GE(4, 0)
-    if (Linker::linkModules(*Dst, std::move(Src))) {
+  if (Linker::linkModules(*Dst, std::move(Src))) {
 #elif LLVM_VERSION_GE(3, 8)
-    if (Linker::linkModules(*Dst, std::move(Src.get()))) {
+  if (Linker::linkModules(*Dst, std::move(Src.get()))) {
 #else
-    if (Linker::LinkModules(Dst, Src->get(), [&](const DiagnosticInfo &DI) { DI.print(DP); })) {
+  if (Linker::LinkModules(Dst, Src->get(),
+                          [&](const DiagnosticInfo &DI) { DI.print(DP); })) {
 #endif
-        LLVMRustSetLastError(Err.c_str());
-        return false;
-    }
-    return true;
+    LLVMRustSetLastError(Err.c_str());
+    return false;
+  }
+  return true;
 }
 
 // Note that the two following functions look quite similar to the
@@ -980,127 +820,118 @@ LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc, size_t len) {
 // that's returned.
 
 inline section_iterator *unwrap(LLVMSectionIteratorRef SI) {
-    return reinterpret_cast<section_iterator*>(SI);
+  return reinterpret_cast<section_iterator *>(SI);
 }
 
-extern "C" size_t
-LLVMRustGetSectionName(LLVMSectionIteratorRef SI, const char **ptr) {
-    StringRef ret;
-    if (std::error_code ec = (*unwrap(SI))->getName(ret))
-      report_fatal_error(ec.message());
-    *ptr = ret.data();
-    return ret.size();
+extern "C" size_t LLVMRustGetSectionName(LLVMSectionIteratorRef SI,
+                                         const char **ptr) {
+  StringRef ret;
+  if (std::error_code ec = (*unwrap(SI))->getName(ret))
+    report_fatal_error(ec.message());
+  *ptr = ret.data();
+  return ret.size();
 }
 
 // LLVMArrayType function does not support 64-bit ElementCount
-extern "C" LLVMTypeRef
-LLVMRustArrayType(LLVMTypeRef ElementType, uint64_t ElementCount) {
-    return wrap(ArrayType::get(unwrap(ElementType), ElementCount));
+extern "C" LLVMTypeRef LLVMRustArrayType(LLVMTypeRef ElementType,
+                                         uint64_t ElementCount) {
+  return wrap(ArrayType::get(unwrap(ElementType), ElementCount));
 }
 
 DEFINE_SIMPLE_CONVERSION_FUNCTIONS(Twine, LLVMTwineRef)
 DEFINE_SIMPLE_CONVERSION_FUNCTIONS(DebugLoc, LLVMDebugLocRef)
 
-extern "C" void
-LLVMRustWriteTwineToString(LLVMTwineRef T, RustStringRef str) {
-    raw_rust_string_ostream os(str);
-    unwrap(T)->print(os);
+extern "C" void LLVMRustWriteTwineToString(LLVMTwineRef T, RustStringRef str) {
+  raw_rust_string_ostream os(str);
+  unwrap(T)->print(os);
 }
 
-extern "C" void
-LLVMRustUnpackOptimizationDiagnostic(
-    LLVMDiagnosticInfoRef di,
-    RustStringRef pass_name_out,
-    LLVMValueRef *function_out,
-    LLVMDebugLocRef *debugloc_out,
-    RustStringRef message_out)
-{
-    // Undefined to call this not on an optimization diagnostic!
-    llvm::DiagnosticInfoOptimizationBase *opt
-        = static_cast<llvm::DiagnosticInfoOptimizationBase*>(unwrap(di));
-
-    raw_rust_string_ostream pass_name_os(pass_name_out);
-    pass_name_os << opt->getPassName();
-    *function_out = wrap(&opt->getFunction());
-    *debugloc_out = wrap(&opt->getDebugLoc());
-    raw_rust_string_ostream message_os(message_out);
-    message_os << opt->getMsg();
+extern "C" void LLVMRustUnpackOptimizationDiagnostic(
+    LLVMDiagnosticInfoRef di, RustStringRef pass_name_out,
+    LLVMValueRef *function_out, LLVMDebugLocRef *debugloc_out,
+    RustStringRef message_out) {
+  // Undefined to call this not on an optimization diagnostic!
+  llvm::DiagnosticInfoOptimizationBase *opt =
+      static_cast<llvm::DiagnosticInfoOptimizationBase *>(unwrap(di));
+
+  raw_rust_string_ostream pass_name_os(pass_name_out);
+  pass_name_os << opt->getPassName();
+  *function_out = wrap(&opt->getFunction());
+  *debugloc_out = wrap(&opt->getDebugLoc());
+  raw_rust_string_ostream message_os(message_out);
+  message_os << opt->getMsg();
 }
 
-extern "C" void
-LLVMRustUnpackInlineAsmDiagnostic(
-    LLVMDiagnosticInfoRef di,
-    unsigned *cookie_out,
-    LLVMTwineRef *message_out,
-    LLVMValueRef *instruction_out)
-{
-    // Undefined to call this not on an inline assembly diagnostic!
-    llvm::DiagnosticInfoInlineAsm *ia
-        = static_cast<llvm::DiagnosticInfoInlineAsm*>(unwrap(di));
+extern "C" void LLVMRustUnpackInlineAsmDiagnostic(
+    LLVMDiagnosticInfoRef di, unsigned *cookie_out, LLVMTwineRef *message_out,
+    LLVMValueRef *instruction_out) {
+  // Undefined to call this not on an inline assembly diagnostic!
+  llvm::DiagnosticInfoInlineAsm *ia =
+      static_cast<llvm::DiagnosticInfoInlineAsm *>(unwrap(di));
 
-    *cookie_out = ia->getLocCookie();
-    *message_out = wrap(&ia->getMsgStr());
-    *instruction_out = wrap(ia->getInstruction());
+  *cookie_out = ia->getLocCookie();
+  *message_out = wrap(&ia->getMsgStr());
+  *instruction_out = wrap(ia->getInstruction());
 }
 
-extern "C" void LLVMRustWriteDiagnosticInfoToString(LLVMDiagnosticInfoRef di, RustStringRef str) {
-    raw_rust_string_ostream os(str);
-    DiagnosticPrinterRawOStream dp(os);
-    unwrap(di)->print(dp);
+extern "C" void LLVMRustWriteDiagnosticInfoToString(LLVMDiagnosticInfoRef di,
+                                                    RustStringRef str) {
+  raw_rust_string_ostream os(str);
+  DiagnosticPrinterRawOStream dp(os);
+  unwrap(di)->print(dp);
 }
 
 enum class LLVMRustDiagnosticKind {
-    Other,
-    InlineAsm,
-    StackSize,
-    DebugMetadataVersion,
-    SampleProfile,
-    OptimizationRemark,
-    OptimizationRemarkMissed,
-    OptimizationRemarkAnalysis,
-    OptimizationRemarkAnalysisFPCommute,
-    OptimizationRemarkAnalysisAliasing,
-    OptimizationRemarkOther,
-    OptimizationFailure,
+  Other,
+  InlineAsm,
+  StackSize,
+  DebugMetadataVersion,
+  SampleProfile,
+  OptimizationRemark,
+  OptimizationRemarkMissed,
+  OptimizationRemarkAnalysis,
+  OptimizationRemarkAnalysisFPCommute,
+  OptimizationRemarkAnalysisAliasing,
+  OptimizationRemarkOther,
+  OptimizationFailure,
 };
 
-static LLVMRustDiagnosticKind
-to_rust(DiagnosticKind kind)
-{
-    switch (kind) {
-    case DK_InlineAsm:
-        return LLVMRustDiagnosticKind::InlineAsm;
-    case DK_StackSize:
-        return LLVMRustDiagnosticKind::StackSize;
-    case DK_DebugMetadataVersion:
-        return LLVMRustDiagnosticKind::DebugMetadataVersion;
-    case DK_SampleProfile:
-        return LLVMRustDiagnosticKind::SampleProfile;
-    case DK_OptimizationRemark:
-        return LLVMRustDiagnosticKind::OptimizationRemark;
-    case DK_OptimizationRemarkMissed:
-        return LLVMRustDiagnosticKind::OptimizationRemarkMissed;
-    case DK_OptimizationRemarkAnalysis:
-        return LLVMRustDiagnosticKind::OptimizationRemarkAnalysis;
+static LLVMRustDiagnosticKind to_rust(DiagnosticKind kind) {
+  switch (kind) {
+  case DK_InlineAsm:
+    return LLVMRustDiagnosticKind::InlineAsm;
+  case DK_StackSize:
+    return LLVMRustDiagnosticKind::StackSize;
+  case DK_DebugMetadataVersion:
+    return LLVMRustDiagnosticKind::DebugMetadataVersion;
+  case DK_SampleProfile:
+    return LLVMRustDiagnosticKind::SampleProfile;
+  case DK_OptimizationRemark:
+    return LLVMRustDiagnosticKind::OptimizationRemark;
+  case DK_OptimizationRemarkMissed:
+    return LLVMRustDiagnosticKind::OptimizationRemarkMissed;
+  case DK_OptimizationRemarkAnalysis:
+    return LLVMRustDiagnosticKind::OptimizationRemarkAnalysis;
 #if LLVM_VERSION_GE(3, 8)
-    case DK_OptimizationRemarkAnalysisFPCommute:
-        return LLVMRustDiagnosticKind::OptimizationRemarkAnalysisFPCommute;
-    case DK_OptimizationRemarkAnalysisAliasing:
-        return LLVMRustDiagnosticKind::OptimizationRemarkAnalysisAliasing;
+  case DK_OptimizationRemarkAnalysisFPCommute:
+    return LLVMRustDiagnosticKind::OptimizationRemarkAnalysisFPCommute;
+  case DK_OptimizationRemarkAnalysisAliasing:
+    return LLVMRustDiagnosticKind::OptimizationRemarkAnalysisAliasing;
 #endif
-    default:
+  default:
 #if LLVM_VERSION_GE(3, 9)
-        return (kind >= DK_FirstRemark && kind <= DK_LastRemark) ?
-            LLVMRustDiagnosticKind::OptimizationRemarkOther :
-            LLVMRustDiagnosticKind::Other;
+    return (kind >= DK_FirstRemark && kind <= DK_LastRemark)
+               ? LLVMRustDiagnosticKind::OptimizationRemarkOther
+               : LLVMRustDiagnosticKind::Other;
 #else
-        return LLVMRustDiagnosticKind::Other;
+    return LLVMRustDiagnosticKind::Other;
 #endif
   }
 }
 
-extern "C" LLVMRustDiagnosticKind LLVMRustGetDiagInfoKind(LLVMDiagnosticInfoRef di) {
-    return to_rust((DiagnosticKind) unwrap(di)->getKind());
+extern "C" LLVMRustDiagnosticKind
+LLVMRustGetDiagInfoKind(LLVMDiagnosticInfoRef di) {
+  return to_rust((DiagnosticKind)unwrap(di)->getKind());
 }
 // This is kept distinct from LLVMGetTypeKind, because when
 // a new type kind is added, the Rust-side enum must be
@@ -1147,359 +978,317 @@ extern "C" LLVMTypeKind LLVMRustGetTypeKind(LLVMTypeRef Ty) {
   llvm_unreachable("Unhandled TypeID.");
 }
 
-extern "C" void LLVMRustWriteDebugLocToString(
-    LLVMContextRef C,
-    LLVMDebugLocRef dl,
-    RustStringRef str)
-{
-    raw_rust_string_ostream os(str);
-    unwrap(dl)->print(os);
+extern "C" void LLVMRustWriteDebugLocToString(LLVMContextRef C,
+                                              LLVMDebugLocRef dl,
+                                              RustStringRef str) {
+  raw_rust_string_ostream os(str);
+  unwrap(dl)->print(os);
 }
 
 DEFINE_SIMPLE_CONVERSION_FUNCTIONS(SMDiagnostic, LLVMSMDiagnosticRef)
 
 extern "C" void LLVMRustSetInlineAsmDiagnosticHandler(
-    LLVMContextRef C,
-    LLVMContext::InlineAsmDiagHandlerTy H,
-    void *CX)
-{
-    unwrap(C)->setInlineAsmDiagnosticHandler(H, CX);
+    LLVMContextRef C, LLVMContext::InlineAsmDiagHandlerTy H, void *CX) {
+  unwrap(C)->setInlineAsmDiagnosticHandler(H, CX);
 }
 
 extern "C" void LLVMRustWriteSMDiagnosticToString(LLVMSMDiagnosticRef d,
-                                                 RustStringRef str) {
-    raw_rust_string_ostream os(str);
-    unwrap(d)->print("", os);
+                                                  RustStringRef str) {
+  raw_rust_string_ostream os(str);
+  unwrap(d)->print("", os);
 }
 
 extern "C" LLVMValueRef
-LLVMRustBuildLandingPad(LLVMBuilderRef Builder,
-                        LLVMTypeRef Ty,
-                        LLVMValueRef PersFn,
-                        unsigned NumClauses,
-                        const char* Name,
-                        LLVMValueRef F) {
-    return LLVMBuildLandingPad(Builder, Ty, PersFn, NumClauses, Name);
+LLVMRustBuildLandingPad(LLVMBuilderRef Builder, LLVMTypeRef Ty,
+                        LLVMValueRef PersFn, unsigned NumClauses,
+                        const char *Name, LLVMValueRef F) {
+  return LLVMBuildLandingPad(Builder, Ty, PersFn, NumClauses, Name);
 }
 
-extern "C" LLVMValueRef
-LLVMRustBuildCleanupPad(LLVMBuilderRef Builder,
-                        LLVMValueRef ParentPad,
-                        unsigned ArgCnt,
-                        LLVMValueRef *LLArgs,
-                        const char *Name) {
+extern "C" LLVMValueRef LLVMRustBuildCleanupPad(LLVMBuilderRef Builder,
+                                                LLVMValueRef ParentPad,
+                                                unsigned ArgCnt,
+                                                LLVMValueRef *LLArgs,
+                                                const char *Name) {
 #if LLVM_VERSION_GE(3, 8)
-    Value **Args = unwrap(LLArgs);
-    if (ParentPad == NULL) {
-        Type *Ty = Type::getTokenTy(unwrap(Builder)->getContext());
-        ParentPad = wrap(Constant::getNullValue(Ty));
-    }
-    return wrap(unwrap(Builder)->CreateCleanupPad(unwrap(ParentPad),
-                                                  ArrayRef<Value*>(Args, ArgCnt),
-                                                  Name));
+  Value **Args = unwrap(LLArgs);
+  if (ParentPad == nullptr) {
+    Type *Ty = Type::getTokenTy(unwrap(Builder)->getContext());
+    ParentPad = wrap(Constant::getNullValue(Ty));
+  }
+  return wrap(unwrap(Builder)->CreateCleanupPad(
+      unwrap(ParentPad), ArrayRef<Value *>(Args, ArgCnt), Name));
 #else
-    return NULL;
+  return nullptr;
 #endif
 }
 
-extern "C" LLVMValueRef
-LLVMRustBuildCleanupRet(LLVMBuilderRef Builder,
-                        LLVMValueRef CleanupPad,
-                        LLVMBasicBlockRef UnwindBB) {
+extern "C" LLVMValueRef LLVMRustBuildCleanupRet(LLVMBuilderRef Builder,
+                                                LLVMValueRef CleanupPad,
+                                                LLVMBasicBlockRef UnwindBB) {
 #if LLVM_VERSION_GE(3, 8)
-    CleanupPadInst *Inst = cast<CleanupPadInst>(unwrap(CleanupPad));
-    return wrap(unwrap(Builder)->CreateCleanupRet(Inst, unwrap(UnwindBB)));
+  CleanupPadInst *Inst = cast<CleanupPadInst>(unwrap(CleanupPad));
+  return wrap(unwrap(Builder)->CreateCleanupRet(Inst, unwrap(UnwindBB)));
 #else
-    return NULL;
+  return nullptr;
 #endif
 }
 
 extern "C" LLVMValueRef
-LLVMRustBuildCatchPad(LLVMBuilderRef Builder,
-                      LLVMValueRef ParentPad,
-                      unsigned ArgCnt,
-                      LLVMValueRef *LLArgs,
-                      const char *Name) {
+LLVMRustBuildCatchPad(LLVMBuilderRef Builder, LLVMValueRef ParentPad,
+                      unsigned ArgCnt, LLVMValueRef *LLArgs, const char *Name) {
 #if LLVM_VERSION_GE(3, 8)
-    Value **Args = unwrap(LLArgs);
-    return wrap(unwrap(Builder)->CreateCatchPad(unwrap(ParentPad),
-                                                ArrayRef<Value*>(Args, ArgCnt),
-                                                Name));
+  Value **Args = unwrap(LLArgs);
+  return wrap(unwrap(Builder)->CreateCatchPad(
+      unwrap(ParentPad), ArrayRef<Value *>(Args, ArgCnt), Name));
 #else
-    return NULL;
+  return nullptr;
 #endif
 }
 
-extern "C" LLVMValueRef
-LLVMRustBuildCatchRet(LLVMBuilderRef Builder,
-                      LLVMValueRef Pad,
-                      LLVMBasicBlockRef BB) {
+extern "C" LLVMValueRef LLVMRustBuildCatchRet(LLVMBuilderRef Builder,
+                                              LLVMValueRef Pad,
+                                              LLVMBasicBlockRef BB) {
 #if LLVM_VERSION_GE(3, 8)
-    return wrap(unwrap(Builder)->CreateCatchRet(cast<CatchPadInst>(unwrap(Pad)),
-                                                unwrap(BB)));
+  return wrap(unwrap(Builder)->CreateCatchRet(cast<CatchPadInst>(unwrap(Pad)),
+                                              unwrap(BB)));
 #else
-    return NULL;
+  return nullptr;
 #endif
 }
 
-extern "C" LLVMValueRef
-LLVMRustBuildCatchSwitch(LLVMBuilderRef Builder,
-                         LLVMValueRef ParentPad,
-                         LLVMBasicBlockRef BB,
-                         unsigned NumHandlers,
-                         const char *Name) {
+extern "C" LLVMValueRef LLVMRustBuildCatchSwitch(LLVMBuilderRef Builder,
+                                                 LLVMValueRef ParentPad,
+                                                 LLVMBasicBlockRef BB,
+                                                 unsigned NumHandlers,
+                                                 const char *Name) {
 #if LLVM_VERSION_GE(3, 8)
-    if (ParentPad == NULL) {
-        Type *Ty = Type::getTokenTy(unwrap(Builder)->getContext());
-        ParentPad = wrap(Constant::getNullValue(Ty));
-    }
-    return wrap(unwrap(Builder)->CreateCatchSwitch(unwrap(ParentPad),
-                                                   unwrap(BB),
-                                                   NumHandlers,
-                                                   Name));
+  if (ParentPad == nullptr) {
+    Type *Ty = Type::getTokenTy(unwrap(Builder)->getContext());
+    ParentPad = wrap(Constant::getNullValue(Ty));
+  }
+  return wrap(unwrap(Builder)->CreateCatchSwitch(unwrap(ParentPad), unwrap(BB),
+                                                 NumHandlers, Name));
 #else
-    return NULL;
+  return nullptr;
 #endif
 }
 
-extern "C" void
-LLVMRustAddHandler(LLVMValueRef CatchSwitchRef,
-                   LLVMBasicBlockRef Handler) {
+extern "C" void LLVMRustAddHandler(LLVMValueRef CatchSwitchRef,
+                                   LLVMBasicBlockRef Handler) {
 #if LLVM_VERSION_GE(3, 8)
-    Value *CatchSwitch = unwrap(CatchSwitchRef);
-    cast<CatchSwitchInst>(CatchSwitch)->addHandler(unwrap(Handler));
+  Value *CatchSwitch = unwrap(CatchSwitchRef);
+  cast<CatchSwitchInst>(CatchSwitch)->addHandler(unwrap(Handler));
 #endif
 }
 
-extern "C" void
-LLVMRustSetPersonalityFn(LLVMBuilderRef B,
-                         LLVMValueRef Personality) {
+extern "C" void LLVMRustSetPersonalityFn(LLVMBuilderRef B,
+                                         LLVMValueRef Personality) {
 #if LLVM_VERSION_GE(3, 8)
-    unwrap(B)->GetInsertBlock()
-             ->getParent()
-             ->setPersonalityFn(cast<Function>(unwrap(Personality)));
+  unwrap(B)->GetInsertBlock()->getParent()->setPersonalityFn(
+      cast<Function>(unwrap(Personality)));
 #endif
 }
 
 #if LLVM_VERSION_GE(3, 8)
-extern "C" OperandBundleDef*
-LLVMRustBuildOperandBundleDef(const char *Name,
-                              LLVMValueRef *Inputs,
-                              unsigned NumInputs) {
+extern "C" OperandBundleDef *LLVMRustBuildOperandBundleDef(const char *Name,
+                                                           LLVMValueRef *Inputs,
+                                                           unsigned NumInputs) {
   return new OperandBundleDef(Name, makeArrayRef(unwrap(Inputs), NumInputs));
 }
 
-extern "C" void
-LLVMRustFreeOperandBundleDef(OperandBundleDef* Bundle) {
+extern "C" void LLVMRustFreeOperandBundleDef(OperandBundleDef *Bundle) {
   delete Bundle;
 }
 
-extern "C" LLVMValueRef
-LLVMRustBuildCall(LLVMBuilderRef B,
-                    LLVMValueRef Fn,
-                    LLVMValueRef *Args,
-                    unsigned NumArgs,
-                    OperandBundleDef *Bundle,
-                    const char *Name) {
-    unsigned len = Bundle ? 1 : 0;
-    ArrayRef<OperandBundleDef> Bundles = makeArrayRef(Bundle, len);
-    return wrap(unwrap(B)->CreateCall(unwrap(Fn),
-                                      makeArrayRef(unwrap(Args), NumArgs),
-                                      Bundles,
-                                      Name));
+extern "C" LLVMValueRef LLVMRustBuildCall(LLVMBuilderRef B, LLVMValueRef Fn,
+                                          LLVMValueRef *Args, unsigned NumArgs,
+                                          OperandBundleDef *Bundle,
+                                          const char *Name) {
+  unsigned len = Bundle ? 1 : 0;
+  ArrayRef<OperandBundleDef> Bundles = makeArrayRef(Bundle, len);
+  return wrap(unwrap(B)->CreateCall(
+      unwrap(Fn), makeArrayRef(unwrap(Args), NumArgs), Bundles, Name));
 }
 
 extern "C" LLVMValueRef
-LLVMRustBuildInvoke(LLVMBuilderRef B,
-                    LLVMValueRef Fn,
-                    LLVMValueRef *Args,
-                    unsigned NumArgs,
-                    LLVMBasicBlockRef Then,
-                    LLVMBasicBlockRef Catch,
-                    OperandBundleDef *Bundle,
+LLVMRustBuildInvoke(LLVMBuilderRef B, LLVMValueRef Fn, LLVMValueRef *Args,
+                    unsigned NumArgs, LLVMBasicBlockRef Then,
+                    LLVMBasicBlockRef Catch, OperandBundleDef *Bundle,
                     const char *Name) {
-    unsigned len = Bundle ? 1 : 0;
-    ArrayRef<OperandBundleDef> Bundles = makeArrayRef(Bundle, len);
-    return wrap(unwrap(B)->CreateInvoke(unwrap(Fn), unwrap(Then), unwrap(Catch),
-                                        makeArrayRef(unwrap(Args), NumArgs),
-                                        Bundles,
-                                        Name));
+  unsigned len = Bundle ? 1 : 0;
+  ArrayRef<OperandBundleDef> Bundles = makeArrayRef(Bundle, len);
+  return wrap(unwrap(B)->CreateInvoke(unwrap(Fn), unwrap(Then), unwrap(Catch),
+                                      makeArrayRef(unwrap(Args), NumArgs),
+                                      Bundles, Name));
 }
 #else
-extern "C" void*
-LLVMRustBuildOperandBundleDef(const char *Name,
-                              LLVMValueRef *Inputs,
-                              unsigned NumInputs) {
-  return NULL;
+extern "C" void *LLVMRustBuildOperandBundleDef(const char *Name,
+                                               LLVMValueRef *Inputs,
+                                               unsigned NumInputs) {
+  return nullptr;
 }
 
-extern "C" void
-LLVMRustFreeOperandBundleDef(void* Bundle) {
-}
+extern "C" void LLVMRustFreeOperandBundleDef(void *Bundle) {}
 
-extern "C" LLVMValueRef
-LLVMRustBuildCall(LLVMBuilderRef B,
-                    LLVMValueRef Fn,
-                    LLVMValueRef *Args,
-                    unsigned NumArgs,
-                    void *Bundle,
-                    const char *Name) {
-    return LLVMBuildCall(B, Fn, Args, NumArgs, Name);
+extern "C" LLVMValueRef LLVMRustBuildCall(LLVMBuilderRef B, LLVMValueRef Fn,
+                                          LLVMValueRef *Args, unsigned NumArgs,
+                                          void *Bundle, const char *Name) {
+  return LLVMBuildCall(B, Fn, Args, NumArgs, Name);
 }
 
 extern "C" LLVMValueRef
-LLVMRustBuildInvoke(LLVMBuilderRef B,
-                    LLVMValueRef Fn,
-                    LLVMValueRef *Args,
-                    unsigned NumArgs,
-                    LLVMBasicBlockRef Then,
-                    LLVMBasicBlockRef Catch,
-                    void *Bundle,
-                    const char *Name) {
-    return LLVMBuildInvoke(B, Fn, Args, NumArgs, Then, Catch, Name);
+LLVMRustBuildInvoke(LLVMBuilderRef B, LLVMValueRef Fn, LLVMValueRef *Args,
+                    unsigned NumArgs, LLVMBasicBlockRef Then,
+                    LLVMBasicBlockRef Catch, void *Bundle, const char *Name) {
+  return LLVMBuildInvoke(B, Fn, Args, NumArgs, Then, Catch, Name);
 }
 #endif
 
-extern "C" void LLVMRustPositionBuilderAtStart(LLVMBuilderRef B, LLVMBasicBlockRef BB) {
-    auto point = unwrap(BB)->getFirstInsertionPt();
-    unwrap(B)->SetInsertPoint(unwrap(BB), point);
+extern "C" void LLVMRustPositionBuilderAtStart(LLVMBuilderRef B,
+                                               LLVMBasicBlockRef BB) {
+  auto point = unwrap(BB)->getFirstInsertionPt();
+  unwrap(B)->SetInsertPoint(unwrap(BB), point);
 }
 
-extern "C" void LLVMRustSetComdat(LLVMModuleRef M, LLVMValueRef V, const char *Name) {
-    Triple TargetTriple(unwrap(M)->getTargetTriple());
-    GlobalObject *GV = unwrap<GlobalObject>(V);
-    if (!TargetTriple.isOSBinFormatMachO()) {
-        GV->setComdat(unwrap(M)->getOrInsertComdat(Name));
-    }
+extern "C" void LLVMRustSetComdat(LLVMModuleRef M, LLVMValueRef V,
+                                  const char *Name) {
+  Triple TargetTriple(unwrap(M)->getTargetTriple());
+  GlobalObject *GV = unwrap<GlobalObject>(V);
+  if (!TargetTriple.isOSBinFormatMachO()) {
+    GV->setComdat(unwrap(M)->getOrInsertComdat(Name));
+  }
 }
 
 extern "C" void LLVMRustUnsetComdat(LLVMValueRef V) {
-    GlobalObject *GV = unwrap<GlobalObject>(V);
-    GV->setComdat(nullptr);
+  GlobalObject *GV = unwrap<GlobalObject>(V);
+  GV->setComdat(nullptr);
 }
 
 enum class LLVMRustLinkage {
-    ExternalLinkage = 0,
-    AvailableExternallyLinkage = 1,
-    LinkOnceAnyLinkage = 2,
-    LinkOnceODRLinkage = 3,
-    WeakAnyLinkage = 4,
-    WeakODRLinkage = 5,
-    AppendingLinkage = 6,
-    InternalLinkage = 7,
-    PrivateLinkage = 8,
-    ExternalWeakLinkage = 9,
-    CommonLinkage = 10,
+  ExternalLinkage = 0,
+  AvailableExternallyLinkage = 1,
+  LinkOnceAnyLinkage = 2,
+  LinkOnceODRLinkage = 3,
+  WeakAnyLinkage = 4,
+  WeakODRLinkage = 5,
+  AppendingLinkage = 6,
+  InternalLinkage = 7,
+  PrivateLinkage = 8,
+  ExternalWeakLinkage = 9,
+  CommonLinkage = 10,
 };
 
 static LLVMRustLinkage to_rust(LLVMLinkage linkage) {
-    switch (linkage) {
-        case LLVMExternalLinkage:
-            return LLVMRustLinkage::ExternalLinkage;
-        case LLVMAvailableExternallyLinkage:
-            return LLVMRustLinkage::AvailableExternallyLinkage;
-        case LLVMLinkOnceAnyLinkage:
-            return LLVMRustLinkage::LinkOnceAnyLinkage;
-        case LLVMLinkOnceODRLinkage:
-            return LLVMRustLinkage::LinkOnceODRLinkage;
-        case LLVMWeakAnyLinkage:
-            return LLVMRustLinkage::WeakAnyLinkage;
-        case LLVMWeakODRLinkage:
-            return LLVMRustLinkage::WeakODRLinkage;
-        case LLVMAppendingLinkage:
-            return LLVMRustLinkage::AppendingLinkage;
-        case LLVMInternalLinkage:
-            return LLVMRustLinkage::InternalLinkage;
-        case LLVMPrivateLinkage:
-            return LLVMRustLinkage::PrivateLinkage;
-        case LLVMExternalWeakLinkage:
-            return LLVMRustLinkage::ExternalWeakLinkage;
-        case LLVMCommonLinkage:
-            return LLVMRustLinkage::CommonLinkage;
-        default:
-            llvm_unreachable("Invalid LLVMRustLinkage value!");
-    }
+  switch (linkage) {
+  case LLVMExternalLinkage:
+    return LLVMRustLinkage::ExternalLinkage;
+  case LLVMAvailableExternallyLinkage:
+    return LLVMRustLinkage::AvailableExternallyLinkage;
+  case LLVMLinkOnceAnyLinkage:
+    return LLVMRustLinkage::LinkOnceAnyLinkage;
+  case LLVMLinkOnceODRLinkage:
+    return LLVMRustLinkage::LinkOnceODRLinkage;
+  case LLVMWeakAnyLinkage:
+    return LLVMRustLinkage::WeakAnyLinkage;
+  case LLVMWeakODRLinkage:
+    return LLVMRustLinkage::WeakODRLinkage;
+  case LLVMAppendingLinkage:
+    return LLVMRustLinkage::AppendingLinkage;
+  case LLVMInternalLinkage:
+    return LLVMRustLinkage::InternalLinkage;
+  case LLVMPrivateLinkage:
+    return LLVMRustLinkage::PrivateLinkage;
+  case LLVMExternalWeakLinkage:
+    return LLVMRustLinkage::ExternalWeakLinkage;
+  case LLVMCommonLinkage:
+    return LLVMRustLinkage::CommonLinkage;
+  default:
+    llvm_unreachable("Invalid LLVMRustLinkage value!");
+  }
 }
 
 static LLVMLinkage from_rust(LLVMRustLinkage linkage) {
-    switch (linkage) {
-        case LLVMRustLinkage::ExternalLinkage:
-            return LLVMExternalLinkage;
-        case LLVMRustLinkage::AvailableExternallyLinkage:
-            return LLVMAvailableExternallyLinkage;
-        case LLVMRustLinkage::LinkOnceAnyLinkage:
-            return LLVMLinkOnceAnyLinkage;
-        case LLVMRustLinkage::LinkOnceODRLinkage:
-            return LLVMLinkOnceODRLinkage;
-        case LLVMRustLinkage::WeakAnyLinkage:
-            return LLVMWeakAnyLinkage;
-        case LLVMRustLinkage::WeakODRLinkage:
-            return LLVMWeakODRLinkage;
-        case LLVMRustLinkage::AppendingLinkage:
-            return LLVMAppendingLinkage;
-        case LLVMRustLinkage::InternalLinkage:
-            return LLVMInternalLinkage;
-        case LLVMRustLinkage::PrivateLinkage:
-            return LLVMPrivateLinkage;
-        case LLVMRustLinkage::ExternalWeakLinkage:
-            return LLVMExternalWeakLinkage;
-        case LLVMRustLinkage::CommonLinkage:
-            return LLVMCommonLinkage;
-        default:
-            llvm_unreachable("Invalid LLVMRustLinkage value!");
-    }
+  switch (linkage) {
+  case LLVMRustLinkage::ExternalLinkage:
+    return LLVMExternalLinkage;
+  case LLVMRustLinkage::AvailableExternallyLinkage:
+    return LLVMAvailableExternallyLinkage;
+  case LLVMRustLinkage::LinkOnceAnyLinkage:
+    return LLVMLinkOnceAnyLinkage;
+  case LLVMRustLinkage::LinkOnceODRLinkage:
+    return LLVMLinkOnceODRLinkage;
+  case LLVMRustLinkage::WeakAnyLinkage:
+    return LLVMWeakAnyLinkage;
+  case LLVMRustLinkage::WeakODRLinkage:
+    return LLVMWeakODRLinkage;
+  case LLVMRustLinkage::AppendingLinkage:
+    return LLVMAppendingLinkage;
+  case LLVMRustLinkage::InternalLinkage:
+    return LLVMInternalLinkage;
+  case LLVMRustLinkage::PrivateLinkage:
+    return LLVMPrivateLinkage;
+  case LLVMRustLinkage::ExternalWeakLinkage:
+    return LLVMExternalWeakLinkage;
+  case LLVMRustLinkage::CommonLinkage:
+    return LLVMCommonLinkage;
+  default:
+    llvm_unreachable("Invalid LLVMRustLinkage value!");
+  }
 }
 
 extern "C" LLVMRustLinkage LLVMRustGetLinkage(LLVMValueRef V) {
-    return to_rust(LLVMGetLinkage(V));
+  return to_rust(LLVMGetLinkage(V));
 }
 
-extern "C" void LLVMRustSetLinkage(LLVMValueRef V, LLVMRustLinkage RustLinkage) {
-    LLVMSetLinkage(V, from_rust(RustLinkage));
+extern "C" void LLVMRustSetLinkage(LLVMValueRef V,
+                                   LLVMRustLinkage RustLinkage) {
+  LLVMSetLinkage(V, from_rust(RustLinkage));
 }
 
 extern "C" LLVMContextRef LLVMRustGetValueContext(LLVMValueRef V) {
-    return wrap(&unwrap(V)->getContext());
+  return wrap(&unwrap(V)->getContext());
 }
 
 enum class LLVMRustVisibility {
-    Default = 0,
-    Hidden = 1,
-    Protected = 2,
+  Default = 0,
+  Hidden = 1,
+  Protected = 2,
 };
 
 static LLVMRustVisibility to_rust(LLVMVisibility vis) {
-    switch (vis) {
-        case LLVMDefaultVisibility:
-            return LLVMRustVisibility::Default;
-        case LLVMHiddenVisibility:
-            return LLVMRustVisibility::Hidden;
-        case LLVMProtectedVisibility:
-            return LLVMRustVisibility::Protected;
-
-        default:
-            llvm_unreachable("Invalid LLVMRustVisibility value!");
-    }
+  switch (vis) {
+  case LLVMDefaultVisibility:
+    return LLVMRustVisibility::Default;
+  case LLVMHiddenVisibility:
+    return LLVMRustVisibility::Hidden;
+  case LLVMProtectedVisibility:
+    return LLVMRustVisibility::Protected;
+
+  default:
+    llvm_unreachable("Invalid LLVMRustVisibility value!");
+  }
 }
 
 static LLVMVisibility from_rust(LLVMRustVisibility vis) {
-    switch (vis) {
-        case LLVMRustVisibility::Default:
-            return LLVMDefaultVisibility;
-        case LLVMRustVisibility::Hidden:
-            return LLVMHiddenVisibility;
-        case LLVMRustVisibility::Protected:
-            return LLVMProtectedVisibility;
-
-        default:
-            llvm_unreachable("Invalid LLVMRustVisibility value!");
-    }
+  switch (vis) {
+  case LLVMRustVisibility::Default:
+    return LLVMDefaultVisibility;
+  case LLVMRustVisibility::Hidden:
+    return LLVMHiddenVisibility;
+  case LLVMRustVisibility::Protected:
+    return LLVMProtectedVisibility;
+
+  default:
+    llvm_unreachable("Invalid LLVMRustVisibility value!");
+  }
 }
 
 extern "C" LLVMRustVisibility LLVMRustGetVisibility(LLVMValueRef V) {
-    return to_rust(LLVMGetVisibility(V));
+  return to_rust(LLVMGetVisibility(V));
 }
 
-extern "C" void LLVMRustSetVisibility(LLVMValueRef V, LLVMRustVisibility RustVisibility) {
-    LLVMSetVisibility(V, from_rust(RustVisibility));
+extern "C" void LLVMRustSetVisibility(LLVMValueRef V,
+                                      LLVMRustVisibility RustVisibility) {
+  LLVMSetVisibility(V, from_rust(RustVisibility));
 }
index 8f7e0e3d918758281100c7ee17bf33dc2299084e..d296266be0f0f1672a972d30f83bdc12d0b7c673 100644 (file)
@@ -8,50 +8,52 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#include "llvm-c/BitReader.h"
+#include "llvm-c/Core.h"
+#include "llvm-c/ExecutionEngine.h"
+#include "llvm-c/Object.h"
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/ADT/DenseSet.h"
+#include "llvm/ADT/Triple.h"
+#include "llvm/Analysis/Lint.h"
+#include "llvm/Analysis/Passes.h"
+#include "llvm/ExecutionEngine/ExecutionEngine.h"
+#include "llvm/ExecutionEngine/Interpreter.h"
+#include "llvm/ExecutionEngine/MCJIT.h"
 #include "llvm/IR/IRBuilder.h"
 #include "llvm/IR/InlineAsm.h"
-#include "llvm/IR/LLVMContext.h"
-#include "llvm/IR/Module.h"
 #include "llvm/IR/InlineAsm.h"
 #include "llvm/IR/LLVMContext.h"
-#include "llvm/Analysis/Passes.h"
-#include "llvm/Analysis/Lint.h"
-#include "llvm/ADT/ArrayRef.h"
-#include "llvm/ADT/Triple.h"
-#include "llvm/ADT/DenseSet.h"
+#include "llvm/IR/LLVMContext.h"
+#include "llvm/IR/Module.h"
 #include "llvm/Support/CommandLine.h"
-#include "llvm/Support/FormattedStream.h"
-#include "llvm/Support/Timer.h"
-#include "llvm/Support/raw_ostream.h"
-#include "llvm/Support/TargetSelect.h"
-#include "llvm/Support/TargetRegistry.h"
-#include "llvm/Support/SourceMgr.h"
-#include "llvm/Support/Host.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/DynamicLibrary.h"
+#include "llvm/Support/FormattedStream.h"
+#include "llvm/Support/Host.h"
 #include "llvm/Support/Memory.h"
-#include "llvm/ExecutionEngine/ExecutionEngine.h"
-#include "llvm/ExecutionEngine/MCJIT.h"
-#include "llvm/ExecutionEngine/Interpreter.h"
+#include "llvm/Support/SourceMgr.h"
+#include "llvm/Support/TargetRegistry.h"
+#include "llvm/Support/TargetSelect.h"
+#include "llvm/Support/Timer.h"
+#include "llvm/Support/raw_ostream.h"
 #include "llvm/Target/TargetMachine.h"
 #include "llvm/Target/TargetOptions.h"
-#include "llvm/Transforms/Scalar.h"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Transforms/Instrumentation.h"
+#include "llvm/Transforms/Scalar.h"
 #include "llvm/Transforms/Vectorize.h"
-#include "llvm-c/Core.h"
-#include "llvm-c/BitReader.h"
-#include "llvm-c/ExecutionEngine.h"
-#include "llvm-c/Object.h"
 
-#define LLVM_VERSION_GE(major, minor) \
-  (LLVM_VERSION_MAJOR > (major) || LLVM_VERSION_MAJOR == (major) && LLVM_VERSION_MINOR >= (minor))
+#define LLVM_VERSION_GE(major, minor)                                          \
+  (LLVM_VERSION_MAJOR > (major) ||                                             \
+   LLVM_VERSION_MAJOR == (major) && LLVM_VERSION_MINOR >= (minor))
 
-#define LLVM_VERSION_EQ(major, minor) \
+#define LLVM_VERSION_EQ(major, minor)                                          \
   (LLVM_VERSION_MAJOR == (major) && LLVM_VERSION_MINOR == (minor))
 
-#define LLVM_VERSION_LE(major, minor) \
-  (LLVM_VERSION_MAJOR < (major) || LLVM_VERSION_MAJOR == (major) && LLVM_VERSION_MINOR <= (minor))
+#define LLVM_VERSION_LE(major, minor)                                          \
+  (LLVM_VERSION_MAJOR < (major) ||                                             \
+   LLVM_VERSION_MAJOR == (major) && LLVM_VERSION_MINOR <= (minor))
 
 #if LLVM_VERSION_GE(3, 7)
 #include "llvm/IR/LegacyPassManager.h"
 #include "llvm/Bitcode/ReaderWriter.h"
 #endif
 
-#include "llvm/IR/IRPrintingPasses.h"
-#include "llvm/IR/DebugInfo.h"
 #include "llvm/IR/DIBuilder.h"
+#include "llvm/IR/DebugInfo.h"
+#include "llvm/IR/IRPrintingPasses.h"
 #include "llvm/Linker/Linker.h"
 
-void LLVMRustSetLastError(const char*);
+void LLVMRustSetLastError(const char *);
 
-enum class LLVMRustResult {
-    Success,
-    Failure
-};
+enum class LLVMRustResult { Success, Failure };
 
 enum LLVMRustAttribute {
-    AlwaysInline    = 0,
-    ByVal           = 1,
-    Cold            = 2,
-    InlineHint      = 3,
-    MinSize         = 4,
-    Naked           = 5,
-    NoAlias         = 6,
-    NoCapture       = 7,
-    NoInline        = 8,
-    NonNull         = 9,
-    NoRedZone       = 10,
-    NoReturn        = 11,
-    NoUnwind        = 12,
-    OptimizeForSize = 13,
-    ReadOnly        = 14,
-    SExt            = 15,
-    StructRet       = 16,
-    UWTable         = 17,
-    ZExt            = 18,
-    InReg           = 19,
+  AlwaysInline = 0,
+  ByVal = 1,
+  Cold = 2,
+  InlineHint = 3,
+  MinSize = 4,
+  Naked = 5,
+  NoAlias = 6,
+  NoCapture = 7,
+  NoInline = 8,
+  NonNull = 9,
+  NoRedZone = 10,
+  NoReturn = 11,
+  NoUnwind = 12,
+  OptimizeForSize = 13,
+  ReadOnly = 14,
+  SExt = 15,
+  StructRet = 16,
+  UWTable = 17,
+  ZExt = 18,
+  InReg = 19,
 };
 
 typedef struct OpaqueRustString *RustStringRef;
@@ -107,28 +106,25 @@ typedef struct LLVMOpaqueDebugLoc *LLVMDebugLocRef;
 typedef struct LLVMOpaqueSMDiagnostic *LLVMSMDiagnosticRef;
 typedef struct LLVMOpaqueRustJITMemoryManager *LLVMRustJITMemoryManagerRef;
 
-extern "C" void
-rust_llvm_string_write_impl(RustStringRef str, const char *ptr, size_t size);
+extern "C" void rust_llvm_string_write_impl(RustStringRef str, const char *ptr,
+                                            size_t size);
 
-class raw_rust_string_ostream : public llvm::raw_ostream  {
-    RustStringRef str;
-    uint64_t pos;
+class raw_rust_string_ostream : public llvm::raw_ostream {
+  RustStringRef str;
+  uint64_t pos;
 
-    void write_impl(const char *ptr, size_t size) override {
-        rust_llvm_string_write_impl(str, ptr, size);
-        pos += size;
-    }
+  void write_impl(const char *ptr, size_t size) override {
+    rust_llvm_string_write_impl(str, ptr, size);
+    pos += size;
+  }
 
-    uint64_t current_pos() const override {
-        return pos;
-    }
+  uint64_t current_pos() const override { return pos; }
 
 public:
-    explicit raw_rust_string_ostream(RustStringRef str)
-        : str(str), pos(0) { }
+  explicit raw_rust_string_ostream(RustStringRef str) : str(str), pos(0) {}
 
-    ~raw_rust_string_ostream() {
-        // LLVM requires this.
-        flush();
-    }
+  ~raw_rust_string_ostream() {
+    // LLVM requires this.
+    flush();
+  }
 };
index 227b695635dcec6c67ae13513a0114d09237759a..2982f29f931c326087a89540866dc2e084a4819e 100644 (file)
@@ -7,4 +7,4 @@ build = "build.rs"
 [dependencies]
 log = "0.3"
 env_logger = { version = "0.3.5", default-features = false }
-serialize = { path = "../../libserialize" }
+rustc-serialize = "0.3"
index dbfe1111846a819ed099ae6ff0070859f899f192..f6c8393ac215432cdd83c3437a19331288d3b37f 100644 (file)
 extern crate libc;
 extern crate test;
 extern crate getopts;
+
+#[cfg(cargobuild)]
+extern crate rustc_serialize;
+#[cfg(not(cargobuild))]
 extern crate serialize as rustc_serialize;
 
 #[macro_use]