[llvm] r179622 - Print out the target-independent attributes in a comment before the function definition.

Francois Pichet pichet2000 at gmail.com
Sat Apr 27 12:42:51 PDT 2013


Hi

The crash is back for me using MSVC 2012 following the revert (r180574)
I believe the fix was buried inside another feature commit.


On Fri, Apr 19, 2013 at 7:22 AM, Timur Iskhodzhanov <timurrrr at google.com>wrote:

> Works for me now, thanks!
>
> 2013/4/18 Bill Wendling <wendling at apple.com>:
> > Hi Reid,
> >
> > I changed the code a bit. I'm hoping it'll work better for you now! :)
> Please let me know.
> >
> > -bw
> >
> > On Apr 17, 2013, at 12:03 PM, Reid Kleckner <rnk at google.com> wrote:
> >
> >> Yep:
> >>
> >> $ clang.exe -cc1 -triple i386-pc-win32 -emit-llvm -o -
> >> C:/Users/rnk/Downloads/preprocessed.c
> >> Assertion failed: begin() + idx < end(), file
> >> ..\include\llvm/ADT/SmallVector.h, line 140
> >>
> >>
> >>
> >> On Wed, Apr 17, 2013 at 2:49 PM, Timur Iskhodzhanov <
> timurrrr at google.com> wrote:
> >>> $ bin\clang.exe -cc1 -triple i386-pc-win32 -emit-llvm -o -
> >>> ..\tools\clang\test\CodeGen\x86_32-arguments-win32.c
> >>> Assertion failed: begin() + idx < end(), file
> >>> ..\include\llvm/ADT/SmallVector.h, line 140
> >>>
> >>> $ bin\clang.exe -cc1 -triple i386-pc-win32 -E
> >>> ..\tools\clang\test\CodeGen\x86_32-arguments-win32.c > preprocessed.c
> >>> [see the attached file]
> >>>
> >>> Reid,
> >>> Does the problem reproduce for you too?
> >>> FTR, I'm using
> >>>  cmake -GNinja -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=Release
> >>> -DLLVM_TARGETS_TO_BUILD=X86 ..
> >>>
> >>> 2013/4/17 Bill Wendling <isanbard at gmail.com>:
> >>>> Could you send me a test case? The preprocessed file and command line
> should be sufficient.
> >>>>
> >>>> -bw
> >>>>
> >>>> On Apr 17, 2013, at 3:53 AM, Timur Iskhodzhanov <timurrrr at google.com>
> wrote:
> >>>>
> >>>>> Hi Bill,
> >>>>>
> >>>>> I see
> >>>>> "Assertion failed: begin() + idx < end(), file
> >>>>> D:\src\llvm-dev\include\llvm/ADT/SmallVector.h, line 140"
> >>>>> // idx=1, size=1
> >>>>> failures on my Windows build which has
> >>>>> `anonymous namespace'::AssemblyWriter::printFunction() + 0x11E
> >>>>> bytes(s), lib\ir\asmwriter.cpp, line 1618 + 0xE byte(s)
> >>>>> `anonymous namespace'::AssemblyWriter::printModule() + 0x41F
> >>>>> bytes(s), lib\ir\asmwriter.cpp, line 1378 + 0x14 byte(s)
> >>>>> in the middle of a stack.
> >>>>>
> >>>>> Just in case, I've observed these assertions on
> >>>>> python bin\llvm-lit -v ..\tools\clang\test --filter="microsoft|win32"
> >>>>> on Windows.
> >>>>> I think only -cc1 -emit-llvm is affected, not -c.
> >>>>>
> >>>>> Reverting your change locally has fixed my test runs.
> >>>>>
> >>>>> Mind taking a look?
> >>>>>
> >>>>> Thanks,
> >>>>> Timur
> >>>>>
> >>>>> 2013/4/17 Bill Wendling <isanbard at gmail.com>:
> >>>>>> Author: void
> >>>>>> Date: Tue Apr 16 15:55:47 2013
> >>>>>> New Revision: 179622
> >>>>>>
> >>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=179622&view=rev
> >>>>>> Log:
> >>>>>> Print out the target-independent attributes in a comment before the
> function definition.
> >>>>>>
> >>>>>> Modified:
> >>>>>>   llvm/trunk/lib/IR/AsmWriter.cpp
> >>>>>>
> >>>>>> Modified: llvm/trunk/lib/IR/AsmWriter.cpp
> >>>>>> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/AsmWriter.cpp?rev=179622&r1=179621&r2=179622&view=diff
> >>>>>>
> ==============================================================================
> >>>>>> --- llvm/trunk/lib/IR/AsmWriter.cpp (original)
> >>>>>> +++ llvm/trunk/lib/IR/AsmWriter.cpp Tue Apr 16 15:55:47 2013
> >>>>>> @@ -1605,6 +1605,29 @@ void AssemblyWriter::printFunction(const
> >>>>>>  if (F->isMaterializable())
> >>>>>>    Out << "; Materializable\n";
> >>>>>>
> >>>>>> +  const AttributeSet &Attrs = F->getAttributes();
> >>>>>> +  if (Attrs.hasAttributes(AttributeSet::FunctionIndex)) {
> >>>>>> +    AttributeSet AS = Attrs.getFnAttributes();
> >>>>>> +    std::string AttrStr;
> >>>>>> +
> >>>>>> +    unsigned Idx = 0;
> >>>>>> +    for (unsigned E = AS.getNumSlots(); Idx != E; ++Idx)
> >>>>>> +      if (AS.getSlotIndex(Idx) == AttributeSet::FunctionIndex)
> >>>>>> +        break;
> >>>>>> +
> >>>>>> +    for (AttributeSet::iterator I = AS.begin(Idx), E = AS.end(Idx);
> >>>>>> +         I != E; ++I) {
> >>>>>> +      Attribute Attr = *I;
> >>>>>> +      if (!Attr.isStringAttribute()) {
> >>>>>> +        if (!AttrStr.empty()) AttrStr += ' ';
> >>>>>> +        AttrStr += Attr.getAsString();
> >>>>>> +      }
> >>>>>> +    }
> >>>>>> +
> >>>>>> +    if (!AttrStr.empty())
> >>>>>> +      Out << "; Function Attrs: " << AttrStr << '\n';
> >>>>>> +  }
> >>>>>> +
> >>>>>>  if (F->isDeclaration())
> >>>>>>    Out << "declare ";
> >>>>>>  else
> >>>>>> @@ -1620,7 +1643,6 @@ void AssemblyWriter::printFunction(const
> >>>>>>  }
> >>>>>>
> >>>>>>  FunctionType *FT = F->getFunctionType();
> >>>>>> -  const AttributeSet &Attrs = F->getAttributes();
> >>>>>>  if (Attrs.hasAttributes(AttributeSet::ReturnIndex))
> >>>>>>    Out <<  Attrs.getAsString(AttributeSet::ReturnIndex) << ' ';
> >>>>>>  TypePrinter.print(F->getReturnType(), Out);
> >>>>>> @@ -1761,10 +1783,8 @@ void AssemblyWriter::printBasicBlock(con
> >>>>>> /// which slot it occupies.
> >>>>>> ///
> >>>>>> void AssemblyWriter::printInfoComment(const Value &V) {
> >>>>>> -  if (AnnotationWriter) {
> >>>>>> +  if (AnnotationWriter)
> >>>>>>    AnnotationWriter->printInfoComment(V, Out);
> >>>>>> -    return;
> >>>>>> -  }
> >>>>>> }
> >>>>>>
> >>>>>> // This member is called for each Instruction in a function..
> >>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> llvm-commits mailing list
> >>>>>> llvm-commits at cs.uiuc.edu
> >>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> >>>>
> >> _______________________________________________
> >> llvm-commits mailing list
> >> llvm-commits at cs.uiuc.edu
> >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> >
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130427/607dcd93/attachment.html>


More information about the llvm-commits mailing list