[llvm] r276197 - Reapply r276185

Xinliang David Li via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 21 09:21:46 PDT 2016


Actually someone fixed it for me.

David

On Thu, Jul 21, 2016 at 9:20 AM, Xinliang David Li <davidxl at google.com>
wrote:

> Done.
>
> David
>
> On Thu, Jul 21, 2016 at 7:06 AM, Bernard Ogden <Bernard.Ogden at arm.com>
> wrote:
>
>> Hello David,
>>
>> I'm seeing this patch fail Windows builds like this:
>> llvm\tools\llvm-profdata\llvm-profdata.cpp(117): error C2797:
>> 'WeightedFile::Filename': list initialization inside member initializer
>> list or non-static data member initializer is not implemented
>>
>> I'm using Visual Studio 2013, which I think is the minimum supported
>> compiler. IIUC this feature is not supported even in VS 2015:
>> https://msdn.microsoft.com/en-gb/library/Dn793970.aspx
>>
>> Could you apply one of the workarounds on the MSDN page?
>>
>> Thanks,
>>
>> Bernie
>>
>>
>> On 20 Jul 2016, at 23:24, Xinliang David Li via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>> > Author: davidxl
>> > Date: Wed Jul 20 17:24:52 2016
>> > New Revision: 276197
>> >
>> > URL: http://llvm.org/viewvc/llvm-project?rev=276197&view=rev
>> > Log:
>> > Reapply r276185
>> >
>> > Fix the test case that should not depend on dir iteration order.
>> >
>> >
>> >
>> > Added:
>> >    llvm/trunk/test/tools/llvm-profdata/input-dir.test
>> > Modified:
>> >    llvm/trunk/test/tools/llvm-profdata/input-filenames.test
>> >    llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp
>> >
>> > Added: llvm/trunk/test/tools/llvm-profdata/input-dir.test
>> > URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-profdata/input-dir.test?rev=276197&view=auto
>> >
>> ==============================================================================
>> > --- llvm/trunk/test/tools/llvm-profdata/input-dir.test (added)
>> > +++ llvm/trunk/test/tools/llvm-profdata/input-dir.test Wed Jul 20
>> 17:24:52 2016
>> > @@ -0,0 +1,22 @@
>> > +# Create an input file.
>> > +RUN: echo "#" > %t.input
>> > +RUN: echo "%t.dir1" >> %t.input
>> > +RUN: echo "2,%t.dir2" >> %t.input
>> > +
>> > +RUN: mkdir -p %t.dir1
>> > +RUN: mkdir -p %t.dir2/subdir
>> > +
>> > +RUN: echo ' ' > %t.dir1/bar
>> > +RUN: echo ' ' > %t.dir1/foo
>> > +RUN: echo ' ' > %t.dir2/bar
>> > +RUN: echo ' ' > %t.dir2/foo
>> > +RUN: echo ' ' > %t.dir2/subdir/baz
>> > +
>> > +RUN: llvm-profdata merge -f %t.input -dump-input-file-list -o
>> /dev/null | FileCheck %s
>> > +RUN: llvm-profdata merge -weighted-input=2,%t.dir2
>> -dump-input-file-list -o /dev/null %t.dir1 | FileCheck %s
>> > +
>> > +CHECK-DAG: 1,{{.*}}.dir1/bar
>> > +CHECK-DAG: 1,{{.*}}.dir1/foo
>> > +CHECK-DAG: 2,{{.*}}.dir2/bar
>> > +CHECK-DAG: 2,{{.*}}.dir2/foo
>> > +CHECK-DAG: 2,{{.*}}.dir2/subdir/baz
>> >
>> > Modified: llvm/trunk/test/tools/llvm-profdata/input-filenames.test
>> > URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-profdata/input-filenames.test?rev=276197&r1=276196&r2=276197&view=diff
>> >
>> ==============================================================================
>> > --- llvm/trunk/test/tools/llvm-profdata/input-filenames.test (original)
>> > +++ llvm/trunk/test/tools/llvm-profdata/input-filenames.test Wed Jul 20
>> 17:24:52 2016
>> > @@ -1,17 +1,19 @@
>> > # Create an input file.
>> > RUN: echo '# comment 1' > %t.input
>> > RUN: echo ' # comment 2' >> %t.input
>> > -RUN: echo 'bar' >> %t.input
>> > -RUN: echo ' baz' >> %t.input
>> > +RUN: echo " %t.bar" >> %t.input
>> > +RUN: echo " %t.baz" >> %t.input
>> > RUN: echo "2,%t.weighted" >> %t.input
>> >
>> > -# Create the weighted file, since these actually need to exist.
>> > RUN: echo ' ' > %t.weighted
>> > +RUN: echo ' ' > %t.foo
>> > +RUN: echo ' ' > %t.bar
>> > +RUN: echo ' ' > %t.baz
>> >
>> > -RUN: llvm-profdata merge -f %t.input -dump-input-file-list -o
>> /dev/null foo | FileCheck %s
>> > -RUN: llvm-profdata merge -input-files %t.input -dump-input-file-list
>> -o /dev/null foo | FileCheck %s
>> > +RUN: llvm-profdata merge -f %t.input -dump-input-file-list -o
>> /dev/null %t.foo | FileCheck %s
>> > +RUN: llvm-profdata merge -input-files %t.input -dump-input-file-list
>> -o /dev/null %t.foo | FileCheck %s
>> >
>> > -CHECK: 1,foo
>> > -CHECK-NEXT: 1,bar
>> > -CHECK-NEXT: 1,baz
>> > +CHECK: 1,{{.*}}.foo
>> > +CHECK-NEXT: 1,{{.*}}.bar
>> > +CHECK-NEXT: 1,{{.*}}.baz
>> > CHECK-NEXT: 2,{{.*}}.weighted
>> >
>> > Modified: llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp
>> > URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp?rev=276197&r1=276196&r2=276197&view=diff
>> >
>> ==============================================================================
>> > --- llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp (original)
>> > +++ llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp Wed Jul 20
>> 17:24:52 2016
>> > @@ -109,12 +109,12 @@ static void handleMergeWriterError(Error
>> > }
>> >
>> > struct WeightedFile {
>> > -  StringRef Filename;
>> > +  std::string Filename;
>> >   uint64_t Weight;
>> >
>> >   WeightedFile() {}
>> >
>> > -  WeightedFile(StringRef F, uint64_t W) : Filename{F}, Weight{W} {}
>> > +  WeightedFile(const std::string &F, uint64_t W) : Filename{F},
>> Weight{W} {}
>> > };
>> > typedef SmallVector<WeightedFile, 5> WeightedFileVector;
>> >
>> > @@ -305,10 +305,6 @@ static WeightedFile parseWeightedFile(co
>> >   if (WeightStr.getAsInteger(10, Weight) || Weight < 1)
>> >     exitWithError("Input weight must be a positive integer.");
>> >
>> > -  if (!sys::fs::exists(FileName))
>> > -    exitWithErrorCode(make_error_code(errc::no_such_file_or_directory),
>> > -                      FileName);
>> > -
>> >   return WeightedFile(FileName, Weight);
>> > }
>> >
>> > @@ -324,6 +320,33 @@ getInputFilenamesFileBuf(const StringRef
>> >   return std::move(*BufOrError);
>> > }
>> >
>> > +static void addWeightedInput(WeightedFileVector &WNI, const
>> WeightedFile &WF) {
>> > +  StringRef Filename = WF.Filename;
>> > +  uint64_t Weight = WF.Weight;
>> > +  llvm::sys::fs::file_status Status;
>> > +  llvm::sys::fs::status(Filename, Status);
>> > +  if (!llvm::sys::fs::exists(Status))
>> > +    exitWithErrorCode(make_error_code(errc::no_such_file_or_directory),
>> > +                      Filename);
>> > +  // If it's a source file, collect it.
>> > +  if (llvm::sys::fs::is_regular_file(Status)) {
>> > +    WNI.emplace_back(Filename, Weight);
>> > +    return;
>> > +  }
>> > +
>> > +  if (llvm::sys::fs::is_directory(Status)) {
>> > +    std::error_code EC;
>> > +    for (llvm::sys::fs::recursive_directory_iterator F(Filename, EC),
>> E;
>> > +         F != E && !EC; F.increment(EC)) {
>> > +      if (llvm::sys::fs::is_regular_file(F->path())) {
>> > +        addWeightedInput(WNI, {F->path(), Weight});
>> > +      }
>> > +    }
>> > +    if (EC)
>> > +      exitWithErrorCode(EC, Filename);
>> > +  }
>> > +}
>> > +
>> > static void parseInputFilenamesFile(MemoryBuffer *Buffer,
>> >                                     WeightedFileVector &WFV) {
>> >   if (!Buffer)
>> > @@ -339,9 +362,9 @@ static void parseInputFilenamesFile(Memo
>> >       continue;
>> >     // If there's no comma, it's an unweighted profile.
>> >     else if (SanitizedEntry.find(',') == StringRef::npos)
>> > -      WFV.emplace_back(SanitizedEntry, 1);
>> > +      addWeightedInput(WFV, {SanitizedEntry, 1});
>> >     else
>> > -      WFV.emplace_back(parseWeightedFile(SanitizedEntry));
>> > +      addWeightedInput(WFV, parseWeightedFile(SanitizedEntry));
>> >   }
>> > }
>> >
>> > @@ -387,9 +410,9 @@ static int merge_main(int argc, const ch
>> >
>> >   WeightedFileVector WeightedInputs;
>> >   for (StringRef Filename : InputFilenames)
>> > -    WeightedInputs.emplace_back(Filename, 1);
>> > +    addWeightedInput(WeightedInputs, {Filename, 1});
>> >   for (StringRef WeightedFilename : WeightedInputFilenames)
>> > -    WeightedInputs.emplace_back(parseWeightedFile(WeightedFilename));
>> > +    addWeightedInput(WeightedInputs,
>> parseWeightedFile(WeightedFilename));
>> >
>> >   // Make sure that the file buffer stays alive for the duration of the
>> >   // weighted input vector's lifetime.
>> >
>> >
>> > _______________________________________________
>> > llvm-commits mailing list
>> > llvm-commits at lists.llvm.org
>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>> IMPORTANT NOTICE: The contents of this email and any attachments are
>> confidential and may also be privileged. If you are not the intended
>> recipient, please notify the sender immediately and do not disclose the
>> contents to any other person, use it for any purpose, or store or copy the
>> information in any medium. Thank you.
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160721/8a39c7f9/attachment.html>


More information about the llvm-commits mailing list