r234597 - Use a std::unique_ptr to make it easier to see who owns the stream.

Timur Iskhodzhanov timurrrr at google.com
Fri Apr 10 11:04:40 PDT 2015


Thanks! [the bot went green after r234612]

пт, 10 апр. 2015 г. в 20:25, Rafael Espíndola <rafael.espindola at gmail.com>:

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


More information about the cfe-commits mailing list