[llvm] r179622 - Print out the target-independent attributes in a comment before the function definition.
Timur Iskhodzhanov
timurrrr at google.com
Wed Apr 17 11:49:05 PDT 2013
$ 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
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: preprocessed.c
Type: text/x-csrc
Size: 753 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130417/96ccb4d3/attachment.c>
More information about the llvm-commits
mailing list