[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