diff options
| author | bors <bors@rust-lang.org> | 2016-11-25 09:01:33 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-11-25 09:01:33 -0600 |
| commit | ebc037390964ba19e2094caf2b448f475888c43f (patch) | |
| tree | 2a54fa232d3772dfd1ebe9e79f4c37a6517efa0a /src/rustllvm/RustWrapper.cpp | |
| parent | c78cc52afd99ec0b3dd7f83cd257f0be767a508a (diff) | |
| parent | 730400167ad2ce88bb48af3f36f3443ea4493d50 (diff) | |
| download | rust-ebc037390964ba19e2094caf2b448f475888c43f.tar.gz rust-ebc037390964ba19e2094caf2b448f475888c43f.zip | |
Auto merge of #37982 - rkruppe:llvm-diagnostic-fwdcompat, r=alexcrichton
[LLVM 4.0] OptimizationDiagnostic FFI forward compatibility - getMsg() changed to return std::string by-value. Fix: copy the data to a rust String during unpacking. - getPassName() changed to return StringRef cc #37609
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
| -rw-r--r-- | src/rustllvm/RustWrapper.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index b035e134e37..7cde282444d 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -871,16 +871,21 @@ LLVMRustUnpackOptimizationDiagnostic( const char **pass_name_out, LLVMValueRef *function_out, LLVMDebugLocRef *debugloc_out, - LLVMTwineRef *message_out) + RustStringRef message_out) { // Undefined to call this not on an optimization diagnostic! llvm::DiagnosticInfoOptimizationBase *opt = static_cast<llvm::DiagnosticInfoOptimizationBase*>(unwrap(di)); +#if LLVM_VERSION_GE(4, 0) + *pass_name_out = opt->getPassName().data(); +#else *pass_name_out = opt->getPassName(); +#endif *function_out = wrap(&opt->getFunction()); *debugloc_out = wrap(&opt->getDebugLoc()); - *message_out = wrap(&opt->getMsg()); + raw_rust_string_ostream os(message_out); + os << opt->getMsg(); } extern "C" void |
