<div dir="ltr">Thanks! [the bot went green after r234612]<br></div><br><div class="gmail_quote">пт, 10 апр. 2015 г. в 20:25, Rafael Espíndola <<a href="mailto:rafael.espindola@gmail.com">rafael.espindola@gmail.com</a>>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Should be fixed by 234599<br>
<br>
On 10 April 2015 at 11:09, Timur Iskhodzhanov <<a href="mailto:timurrrr@google.com" target="_blank">timurrrr@google.com</a>> wrote:<br>
> Looks like MSVC isn't happy with this change:<br>
> <a href="http://lab.llvm.org:8011/builders/sanitizer-windows/builds/2488/steps/run%20tests/logs/stdio" target="_blank">http://lab.llvm.org:8011/<u></u>builders/sanitizer-windows/<u></u>builds/2488/steps/run%20tests/<u></u>logs/stdio</a><br>
><br>
> [12/88] Building CXX object<br>
> tools\clang\lib\Frontend\<u></u>CMakeFiles\clangFrontend.dir\<u></u>CompilerInstance.cpp.obj<br>
> [13/88] Building CXX object<br>
> tools\clang\lib\Frontend\<u></u>CMakeFiles\clangFrontend.dir\<u></u>CreateInvocationFromCommandLin<u></u>e.cpp.obj<br>
> FAILED: C:\PROGRA~2\MICROS~1.0\VC\bin\<u></u>cl.exe   /nologo /TP /DWIN32<br>
> /D_WINDOWS /W3   -wd4146 -wd4180 -wd4244 -wd4258 -wd4267 -wd4291 -wd4345<br>
> -wd4351 -wd4355 -wd4456 -wd4457 -wd4458 -wd4459 -wd4503 -wd4624 -wd4722<br>
> -wd4800 -wd4100 -wd4127 -wd4512 -wd4505 -wd4610 -wd4510 -wd4702 -wd4245<br>
> -wd4706 -wd4310 -wd4701 -wd4703 -wd4389 -wd4611 -wd4805 -wd4204 -w14062<br>
> -we4238 /MD /O2 /Ob2 -Itools\clang\lib\Frontend<br>
> -IC:\b\slave\sanitizer-<u></u>windows\llvm\tools\clang\lib\<u></u>Frontend<br>
> -IC:\b\slave\sanitizer-<u></u>windows\llvm\tools\clang\<u></u>include<br>
> -Itools\clang\include -Iinclude -IC:\b\slave\sanitizer-<u></u>windows\llvm\include<br>
> -UNDEBUG /EHs-c- /GR- /showIncludes -DCLANG_ENABLE_ARCMT<br>
> -DCLANG_ENABLE_OBJC_REWRITER -DCLANG_ENABLE_STATIC_ANALYZER<br>
> -DGTEST_HAS_RTTI=0 -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS<br>
> -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_GNU_SOURCE<br>
> -D_HAS_EXCEPTIONS=0 -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS<br>
> -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS<br>
> /Fotools\clang\lib\Frontend\<u></u>CMakeFiles\clangFrontend.dir\<u></u>CompilerInstance.cpp.obj<br>
> /Fdtools\clang\lib\Frontend\<u></u>CMakeFiles\clangFrontend.dir\ /FS -c<br>
> C:\b\slave\sanitizer-windows\<u></u>llvm\tools\clang\lib\Frontend\<u></u>CompilerInstance.cpp<br>
> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\vector(254) :<br>
> error C2280:<br>
> 'std::unique_ptr<llvm::raw_<u></u>ostream,std::default_delete<_<u></u>Ty>>::unique_ptr(const<br>
> std::unique_ptr<_Ty,std::<u></u>default_delete<_Ty>> &)' : attempting to reference<br>
> a deleted function<br>
>         with<br>
>         [<br>
>             _Ty=llvm::raw_ostream<br>
>         ]<br>
>         C:\Program Files (x86)\Microsoft Visual Studio<br>
> 12.0\VC\INCLUDE\memory(1486) : see declaration of<br>
> 'std::unique_ptr<llvm::raw_<u></u>ostream,std::default_delete<_<u></u>Ty>>::unique_ptr'<br>
>         with<br>
>         [<br>
>             _Ty=llvm::raw_ostream<br>
>         ]<br>
>         This diagnostic occurred in the compiler generated function<br>
> 'clang::CompilerInstance::<u></u>OutputFile::OutputFile(const<br>
> clang::CompilerInstance::<u></u>OutputFile &)'<br>
> ninja: build stopped: subcommand failed.<br>
><br>
><br>
> пт, 10 апр. 2015 г. в 17:17, Rafael Espindola <<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>>:<br>
><br>
>> Author: rafael<br>
>> Date: Fri Apr 10 09:11:52 2015<br>
>> New Revision: 234597<br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=234597&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=234597&view=rev</a><br>
>> Log:<br>
>> Use a std::unique_ptr to make it easier to see who owns the stream.<br>
>><br>
>> Modified:<br>
>>     cfe/trunk/include/clang/<u></u>Frontend/CompilerInstance.h<br>
>>     cfe/trunk/lib/Frontend/<u></u>CompilerInstance.cpp<br>
>><br>
>> Modified: cfe/trunk/include/clang/<u></u>Frontend/CompilerInstance.h<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CompilerInstance.h?rev=234597&r1=234596&r2=234597&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/include/<u></u>clang/Frontend/<u></u>CompilerInstance.h?rev=234597&<u></u>r1=234596&r2=234597&view=diff</a><br>
>><br>
>> ==============================<u></u>==============================<u></u>==================<br>
>> --- cfe/trunk/include/clang/<u></u>Frontend/CompilerInstance.h (original)<br>
>> +++ cfe/trunk/include/clang/<u></u>Frontend/CompilerInstance.h Fri Apr 10<br>
>> 09:11:52 2015<br>
>> @@ -151,11 +151,11 @@ class CompilerInstance : public ModuleLo<br>
>>    struct OutputFile {<br>
>>      std::string Filename;<br>
>>      std::string TempFilename;<br>
>> -    raw_ostream *OS;<br>
>> +    std::unique_ptr<raw_ostream> OS;<br>
>><br>
>>      OutputFile(const std::string &filename, const std::string<br>
>> &tempFilename,<br>
>> -               raw_ostream *os)<br>
>> -      : Filename(filename), TempFilename(tempFilename), OS(os) { }<br>
>> +               std::unique_ptr<raw_ostream> OS)<br>
>> +        : Filename(filename), TempFilename(tempFilename),<br>
>> OS(std::move(OS)) {}<br>
>>    };<br>
>><br>
>>    /// The list of active output files.<br>
>> @@ -518,7 +518,7 @@ public:<br>
>>    /// addOutputFile - Add an output file onto the list of tracked output<br>
>> files.<br>
>>    ///<br>
>>    /// \param OutFile - The output file info.<br>
>> -  void addOutputFile(const OutputFile &OutFile);<br>
>> +  void addOutputFile(OutputFile &&OutFile);<br>
>><br>
>>    /// clearOutputFiles - Clear the output file list, destroying the<br>
>> contained<br>
>>    /// output streams.<br>
>><br>
>> Modified: cfe/trunk/lib/Frontend/<u></u>CompilerInstance.cpp<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInstance.cpp?rev=234597&r1=234596&r2=234597&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/lib/<u></u>Frontend/CompilerInstance.cpp?<u></u>rev=234597&r1=234596&r2=<u></u>234597&view=diff</a><br>
>><br>
>> ==============================<u></u>==============================<u></u>==================<br>
>> --- cfe/trunk/lib/Frontend/<u></u>CompilerInstance.cpp (original)<br>
>> +++ cfe/trunk/lib/Frontend/<u></u>CompilerInstance.cpp Fri Apr 10 09:11:52 2015<br>
>> @@ -518,15 +518,14 @@ void CompilerInstance::createSema(<u></u>Transl<br>
>><br>
>>  // Output Files<br>
>><br>
>> -void CompilerInstance::<u></u>addOutputFile(const OutputFile &OutFile) {<br>
>> +void CompilerInstance::<u></u>addOutputFile(OutputFile &&OutFile) {<br>
>>    assert(OutFile.OS && "Attempt to add empty stream to output list!");<br>
>> -  OutputFiles.push_back(OutFile)<u></u>;<br>
>> +  OutputFiles.push_back(std::<u></u>move(OutFile));<br>
>>  }<br>
>><br>
>>  void CompilerInstance::<u></u>clearOutputFiles(bool EraseFiles) {<br>
>>    for (std::list<OutputFile>::<u></u>iterator<br>
>>           it = OutputFiles.begin(), ie = OutputFiles.end(); it != ie;<br>
>> ++it) {<br>
>> -    delete it->OS;<br>
>>      if (!it->TempFilename.empty()) {<br>
>>        if (EraseFiles) {<br>
>>          llvm::sys::fs::remove(it-><u></u>TempFilename);<br>
>> @@ -561,9 +560,10 @@ CompilerInstance::<u></u>createDefaultOutputFil<br>
>>  }<br>
>><br>
>>  llvm::raw_null_ostream *CompilerInstance::<u></u>createNullOutputFile() {<br>
>> -  llvm::raw_null_ostream *OS = new llvm::raw_null_ostream();<br>
>> -  addOutputFile(OutputFile("", "", OS));<br>
>> -  return OS;<br>
>> +  auto OS = llvm::make_unique<llvm::raw_<u></u>null_ostream>();<br>
>> +  llvm::raw_null_ostream *Ret = OS.get();<br>
>> +  addOutputFile(OutputFile("", "", std::move(OS)));<br>
>> +  return Ret;<br>
>>  }<br>
>><br>
>>  llvm::raw_fd_ostream *<br>
>> @@ -575,21 +575,22 @@ CompilerInstance::<u></u>createOutputFile(Strin<br>
>>                                     bool CreateMissingDirectories) {<br>
>>    std::string OutputPathName, TempPathName;<br>
>>    std::error_code EC;<br>
>> -  llvm::raw_fd_ostream *OS = createOutputFile(<br>
>> +  std::unique_ptr<llvm::raw_fd_<u></u>ostream> OS(createOutputFile(<br>
>>        OutputPath, EC, Binary, RemoveFileOnSignal, InFile, Extension,<br>
>> -      UseTemporary, CreateMissingDirectories, &OutputPathName,<br>
>> &TempPathName);<br>
>> +      UseTemporary, CreateMissingDirectories, &OutputPathName,<br>
>> &TempPathName));<br>
>>    if (!OS) {<br>
>>      getDiagnostics().Report(diag::<u></u>err_fe_unable_to_open_output) <<<br>
>> OutputPath<br>
>>                                                                  <<<br>
>> EC.message();<br>
>>      return nullptr;<br>
>>    }<br>
>><br>
>> +  llvm::raw_fd_ostream *Ret = OS.get();<br>
>>    // Add the output file -- but don't try to remove "-", since this means<br>
>> we are<br>
>>    // using stdin.<br>
>>    addOutputFile(OutputFile((<u></u>OutputPathName != "-") ? OutputPathName : "",<br>
>> -                TempPathName, OS));<br>
>> +                           TempPathName, std::move(OS)));<br>
>><br>
>> -  return OS;<br>
>> +  return Ret;<br>
>>  }<br>
>><br>
>>  llvm::raw_fd_ostream *CompilerInstance::<u></u>createOutputFile(<br>
>><br>
>><br>
>> ______________________________<u></u>_________________<br>
>> cfe-commits mailing list<br>
>> <a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/cfe-commits</a><br>
</blockquote></div>