[LLVMdev] Section specialization & COFF.

r4start r4start at gmail.com
Tue Nov 6 22:49:53 PST 2012


On 03/11/12 01:37, Michael Spencer wrote:
> On Wed, Oct 31, 2012 at 9:41 AM, r4start <r4start at gmail.com> wrote:
>> On 24/10/12 17:03, r4start wrote:
>>> On 23/10/12 01:30, Michael Spencer wrote:
>>>> On Mon, Oct 22, 2012 at 7:53 AM, r4start <r4start at gmail.com> wrote:
>>>>> On 20/10/12 03:15, Michael Spencer wrote:
>>>>>> On Fri, Oct 19, 2012 at 2:55 AM, r4start <r4start at gmail.com> wrote:
>>>>>>> Hi all.
>>>>>>>
>>>>>>> While compiling next code
>>>>>>> @A = weak unnamed_addr constant { i32, i32, i32 } { i32 0, i32 0, i32
>>>>>>> 0
>>>>>>> },
>>>>>>> section ".data"
>>>>>>> was discovered that llc ignores weak linkage if we emit it in COFF
>>>>>>> object.
>>>>>>> Attached patch solves this problem, please review.
>>>>>>>
>>>>>>> I found some similar tests in test/Objects/Inputs. Should I do
>>>>>>> something
>>>>>>> like trivial.ll checking or there is a better way
>>>>>>> to check patch behaviour?
>>>>>>>
>>>>>>>     - Dmitry Sokolov.
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> LLVM Developers mailing list
>>>>>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>>>>>
>>>>>> test/Object is not the right place for the test. It should probably go
>>>>>> in test/MC/COFF as a .ll file, although technically it's codegen...
>>>>>>
>>>>>> Also, I'm pretty sure this is wrong for MinGW. What do msvc and
>>>>>> mingw-gcc produce for c code that generates this?
>>>>>>
>>>>>> - Michael Spencer
>>>>> For this c code(see attachments) cl, mingw and clang produce different
>>>>> coff's(was used dumpbin with option /ALL):
>>>>> 1) Cl generate separate COMDAT section with linkage selection "pick any"
>>>>> 2) Mingw place this value to regular section and place special auxilary
>>>>> record to symbol table
>>>>> 3) Clang without patch just ignore weakness of this value and place it
>>>>> to
>>>>> regular section.
>>>>>      But for weak values without explicit section specification it use
>>>>> cl-like
>>>>> way. i.e. generate
>>>>>      separate COMDAT section with a little difference in naming (unique
>>>>> suffix
>>>>> after $)
>>>>> 4) With this patch clang will generate correct COMDAT section for values
>>>>> with explicit section specification.
>>>>>
>>>>> The problem is in backend. When we have explicit section specification
>>>>> linkage type is ignored.
>>>> Looks fine with a test in CodeGen.
>>>>
>>>> - Michael Spencer
>>> Was added test.
>>> Please review.
>>> Patch was made by Dmitry Puzirev.
>> Ping?
> lgtm.
>
> - Michael Spencer
Can anybody commit patch.
I don`t have commit rights.



More information about the llvm-dev mailing list