Apple’s assembler does use power-of-two for .align. I believe binutils does as well. I suspect the header file comment is in error and what’s actually happening is that the section in question has a minimum alignment on the system(s) in question, and so it just looks like it’s redundant. That is, I doubt we need to do anything here. -Jim On Oct 28, 2013, at 11:54 AM, Renato Golin <renato.golin at linaro.org> wrote:> Hi Sid, > > It seems Apple's assembler used to treat .align 0 differently: > > https://developer.apple.com/library/mac/documentation/developertools/Reference/Assembler/040-Assembler_Directives/asm_directives.html > > If this is still the case, than we should have an option for what to do in this case, maybe defaulting based on the triple? > > cheers, > --renato > > > On 28 October 2013 17:53, Sid Manning <sidneym at codeaurora.org> wrote: > > I have several assembly files in a testsuite that use, ".align 0". I found a reference to, ".align 0" in ARM's elf.h that says .align 0 is redundant and gas treats this as align 2. > > Should the llvm-mc follow this convention? > > -- > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131028/f4fb6efd/attachment.html>
".align 0" triggers the following error:
a.s:2:8: error: alignment must be a power of 2
.align 0
^
In this case would it be reasonable to query the target for a default
or minimum value? Only targets not implementing this would error out.
Thanks,
On 10/28/2013 03:00 PM, Jim Grosbach wrote:> Apple’s assembler does use power-of-two for .align. I believe binutils
> does as well. I suspect the header file comment is in error and what’s
> actually happening is that the section in question has a minimum
> alignment on the system(s) in question, and so it just looks like it’s
> redundant. That is, I doubt we need to do anything here.
>
> -Jim
>
> On Oct 28, 2013, at 11:54 AM, Renato Golin <renato.golin at linaro.org
> <mailto:renato.golin at linaro.org>> wrote:
>
>> Hi Sid,
>>
>> It seems Apple's assembler used to treat .align 0 differently:
>>
>>
https://developer.apple.com/library/mac/documentation/developertools/Reference/Assembler/040-Assembler_Directives/asm_directives.html
>>
>> If this is still the case, than we should have an option for what to
>> do in this case, maybe defaulting based on the triple?
>>
>> cheers,
>> --renato
>>
>>
>> On 28 October 2013 17:53, Sid Manning <sidneym at codeaurora.org
>> <mailto:sidneym at codeaurora.org>> wrote:
>>
>>
>> I have several assembly files in a testsuite that use, ".align
0".
>> I found a reference to, ".align 0" in ARM's elf.h
that says .align
>> 0 is redundant and gas treats this as align 2.
>>
>> Should the llvm-mc follow this convention?
>>
>> --
>> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
>> hosted by The Linux Foundation
>> _________________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>
>> http://llvm.cs.uiuc.edu <http://llvm.cs.uiuc.edu/>
>> http://lists.cs.uiuc.edu/__mailman/listinfo/llvmdev
>> <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>
http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
I do not see that behavior on Darwin with either the old assembler or the integrated assembler: enkidu: ~/tmp $ cat t.s .align 0 enkidu: ~/tmp $ as t.s enkidu: ~/tmp $ clang -c t.s Yeah, it looks like a combination of target and platform logic determines how the value is interpreted. It’s x86 ELF that’s the outlier here, expecting a value in number of bytes. There is no mention of the special case for zero in https://sourceware.org/binutils/docs/as/Align.html#Align. From that, I would argue that the diagnostic is correct and the test cases are in error. If gas actually does default to ‘2’ for a specified value of zero, that seems really terrible and an error not to be repeated. -Jim On Oct 29, 2013, at 6:05 AM, Sid Manning <sidneym at codeaurora.org> wrote:> > ".align 0" triggers the following error: > > a.s:2:8: error: alignment must be a power of 2 > .align 0 > ^ > In this case would it be reasonable to query the target for a default > or minimum value? Only targets not implementing this would error out. > > Thanks, > > On 10/28/2013 03:00 PM, Jim Grosbach wrote: >> Apple’s assembler does use power-of-two for .align. I believe binutils >> does as well. I suspect the header file comment is in error and what’s >> actually happening is that the section in question has a minimum >> alignment on the system(s) in question, and so it just looks like it’s >> redundant. That is, I doubt we need to do anything here. >> >> -Jim >> >> On Oct 28, 2013, at 11:54 AM, Renato Golin <renato.golin at linaro.org >> <mailto:renato.golin at linaro.org>> wrote: >> >>> Hi Sid, >>> >>> It seems Apple's assembler used to treat .align 0 differently: >>> >>> https://developer.apple.com/library/mac/documentation/developertools/Reference/Assembler/040-Assembler_Directives/asm_directives.html >>> >>> If this is still the case, than we should have an option for what to >>> do in this case, maybe defaulting based on the triple? >>> >>> cheers, >>> --renato >>> >>> >>> On 28 October 2013 17:53, Sid Manning <sidneym at codeaurora.org >>> <mailto:sidneym at codeaurora.org>> wrote: >>> >>> >>> I have several assembly files in a testsuite that use, ".align 0". >>> I found a reference to, ".align 0" in ARM's elf.h that says .align >>> 0 is redundant and gas treats this as align 2. >>> >>> Should the llvm-mc follow this convention? >>> >>> -- >>> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, >>> hosted by The Linux Foundation >>> _________________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> >>> http://llvm.cs.uiuc.edu <http://llvm.cs.uiuc.edu/> >>> http://lists.cs.uiuc.edu/__mailman/listinfo/llvmdev >>> <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev> >>> >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> > > > -- > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131029/43fa849a/attachment.html>