<div dir="ltr">Hi<div><br></div><div>The crash is back for me using MSVC 2012 following the revert (r180574)<div style>I believe the fix was buried inside another feature commit.</div></div></div><div class="gmail_extra"><br>
<br><div class="gmail_quote">On Fri, Apr 19, 2013 at 7:22 AM, Timur Iskhodzhanov <span dir="ltr"><<a href="mailto:timurrrr@google.com" target="_blank">timurrrr@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Works for me now, thanks!<br>
<br>
2013/4/18 Bill Wendling <<a href="mailto:wendling@apple.com">wendling@apple.com</a>>:<br>
<div class="HOEnZb"><div class="h5">> Hi Reid,<br>
><br>
> I changed the code a bit. I'm hoping it'll work better for you now! :) Please let me know.<br>
><br>
> -bw<br>
><br>
> On Apr 17, 2013, at 12:03 PM, Reid Kleckner <<a href="mailto:rnk@google.com">rnk@google.com</a>> wrote:<br>
><br>
>> Yep:<br>
>><br>
>> $ clang.exe -cc1 -triple i386-pc-win32 -emit-llvm -o -<br>
>> C:/Users/rnk/Downloads/preprocessed.c<br>
>> Assertion failed: begin() + idx < end(), file<br>
>> ..\include\llvm/ADT/SmallVector.h, line 140<br>
>><br>
>><br>
>><br>
>> On Wed, Apr 17, 2013 at 2:49 PM, Timur Iskhodzhanov <<a href="mailto:timurrrr@google.com">timurrrr@google.com</a>> wrote:<br>
>>> $ bin\clang.exe -cc1 -triple i386-pc-win32 -emit-llvm -o -<br>
>>> ..\tools\clang\test\CodeGen\x86_32-arguments-win32.c<br>
>>> Assertion failed: begin() + idx < end(), file<br>
>>> ..\include\llvm/ADT/SmallVector.h, line 140<br>
>>><br>
>>> $ bin\clang.exe -cc1 -triple i386-pc-win32 -E<br>
>>> ..\tools\clang\test\CodeGen\x86_32-arguments-win32.c > preprocessed.c<br>
>>> [see the attached file]<br>
>>><br>
>>> Reid,<br>
>>> Does the problem reproduce for you too?<br>
>>> FTR, I'm using<br>
>>>  cmake -GNinja -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=Release<br>
>>> -DLLVM_TARGETS_TO_BUILD=X86 ..<br>
>>><br>
>>> 2013/4/17 Bill Wendling <<a href="mailto:isanbard@gmail.com">isanbard@gmail.com</a>>:<br>
>>>> Could you send me a test case? The preprocessed file and command line should be sufficient.<br>
>>>><br>
>>>> -bw<br>
>>>><br>
>>>> On Apr 17, 2013, at 3:53 AM, Timur Iskhodzhanov <<a href="mailto:timurrrr@google.com">timurrrr@google.com</a>> wrote:<br>
>>>><br>
>>>>> Hi Bill,<br>
>>>>><br>
>>>>> I see<br>
>>>>> "Assertion failed: begin() + idx < end(), file<br>
>>>>> D:\src\llvm-dev\include\llvm/ADT/SmallVector.h, line 140"<br>
>>>>> // idx=1, size=1<br>
>>>>> failures on my Windows build which has<br>
>>>>> `anonymous namespace'::AssemblyWriter::printFunction() + 0x11E<br>
>>>>> bytes(s), lib\ir\asmwriter.cpp, line 1618 + 0xE byte(s)<br>
>>>>> `anonymous namespace'::AssemblyWriter::printModule() + 0x41F<br>
>>>>> bytes(s), lib\ir\asmwriter.cpp, line 1378 + 0x14 byte(s)<br>
>>>>> in the middle of a stack.<br>
>>>>><br>
>>>>> Just in case, I've observed these assertions on<br>
>>>>> python bin\llvm-lit -v ..\tools\clang\test --filter="microsoft|win32"<br>
>>>>> on Windows.<br>
>>>>> I think only -cc1 -emit-llvm is affected, not -c.<br>
>>>>><br>
>>>>> Reverting your change locally has fixed my test runs.<br>
>>>>><br>
>>>>> Mind taking a look?<br>
>>>>><br>
>>>>> Thanks,<br>
>>>>> Timur<br>
>>>>><br>
>>>>> 2013/4/17 Bill Wendling <<a href="mailto:isanbard@gmail.com">isanbard@gmail.com</a>>:<br>
>>>>>> Author: void<br>
>>>>>> Date: Tue Apr 16 15:55:47 2013<br>
>>>>>> New Revision: 179622<br>
>>>>>><br>
>>>>>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=179622&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=179622&view=rev</a><br>
>>>>>> Log:<br>
>>>>>> Print out the target-independent attributes in a comment before the function definition.<br>
>>>>>><br>
>>>>>> Modified:<br>
>>>>>>   llvm/trunk/lib/IR/AsmWriter.cpp<br>
>>>>>><br>
>>>>>> Modified: llvm/trunk/lib/IR/AsmWriter.cpp<br>
>>>>>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/AsmWriter.cpp?rev=179622&r1=179621&r2=179622&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/AsmWriter.cpp?rev=179622&r1=179621&r2=179622&view=diff</a><br>

>>>>>> ==============================================================================<br>
>>>>>> --- llvm/trunk/lib/IR/AsmWriter.cpp (original)<br>
>>>>>> +++ llvm/trunk/lib/IR/AsmWriter.cpp Tue Apr 16 15:55:47 2013<br>
>>>>>> @@ -1605,6 +1605,29 @@ void AssemblyWriter::printFunction(const<br>
>>>>>>  if (F->isMaterializable())<br>
>>>>>>    Out << "; Materializable\n";<br>
>>>>>><br>
>>>>>> +  const AttributeSet &Attrs = F->getAttributes();<br>
>>>>>> +  if (Attrs.hasAttributes(AttributeSet::FunctionIndex)) {<br>
>>>>>> +    AttributeSet AS = Attrs.getFnAttributes();<br>
>>>>>> +    std::string AttrStr;<br>
>>>>>> +<br>
>>>>>> +    unsigned Idx = 0;<br>
>>>>>> +    for (unsigned E = AS.getNumSlots(); Idx != E; ++Idx)<br>
>>>>>> +      if (AS.getSlotIndex(Idx) == AttributeSet::FunctionIndex)<br>
>>>>>> +        break;<br>
>>>>>> +<br>
>>>>>> +    for (AttributeSet::iterator I = AS.begin(Idx), E = AS.end(Idx);<br>
>>>>>> +         I != E; ++I) {<br>
>>>>>> +      Attribute Attr = *I;<br>
>>>>>> +      if (!Attr.isStringAttribute()) {<br>
>>>>>> +        if (!AttrStr.empty()) AttrStr += ' ';<br>
>>>>>> +        AttrStr += Attr.getAsString();<br>
>>>>>> +      }<br>
>>>>>> +    }<br>
>>>>>> +<br>
>>>>>> +    if (!AttrStr.empty())<br>
>>>>>> +      Out << "; Function Attrs: " << AttrStr << '\n';<br>
>>>>>> +  }<br>
>>>>>> +<br>
>>>>>>  if (F->isDeclaration())<br>
>>>>>>    Out << "declare ";<br>
>>>>>>  else<br>
>>>>>> @@ -1620,7 +1643,6 @@ void AssemblyWriter::printFunction(const<br>
>>>>>>  }<br>
>>>>>><br>
>>>>>>  FunctionType *FT = F->getFunctionType();<br>
>>>>>> -  const AttributeSet &Attrs = F->getAttributes();<br>
>>>>>>  if (Attrs.hasAttributes(AttributeSet::ReturnIndex))<br>
>>>>>>    Out <<  Attrs.getAsString(AttributeSet::ReturnIndex) << ' ';<br>
>>>>>>  TypePrinter.print(F->getReturnType(), Out);<br>
>>>>>> @@ -1761,10 +1783,8 @@ void AssemblyWriter::printBasicBlock(con<br>
>>>>>> /// which slot it occupies.<br>
>>>>>> ///<br>
>>>>>> void AssemblyWriter::printInfoComment(const Value &V) {<br>
>>>>>> -  if (AnnotationWriter) {<br>
>>>>>> +  if (AnnotationWriter)<br>
>>>>>>    AnnotationWriter->printInfoComment(V, Out);<br>
>>>>>> -    return;<br>
>>>>>> -  }<br>
>>>>>> }<br>
>>>>>><br>
>>>>>> // This member is called for each Instruction in a function..<br>
>>>>>><br>
>>>>>><br>
>>>>>> _______________________________________________<br>
>>>>>> llvm-commits mailing list<br>
>>>>>> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>>>>>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
>>>><br>
>> _______________________________________________<br>
>> llvm-commits mailing list<br>
>> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
><br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div>