[llvm] r251418 - [ms-inline-asm] Leave alignment in bytes if the native assembler uses bytes
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 27 12:05:41 PDT 2015
On Tue, Oct 27, 2015 at 10:32 AM, Reid Kleckner via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: rnk
> Date: Tue Oct 27 12:32:48 2015
> New Revision: 251418
>
> URL: http://llvm.org/viewvc/llvm-project?rev=251418&view=rev
> Log:
> [ms-inline-asm] Leave alignment in bytes if the native assembler uses bytes
>
Test case?
>
> The existing behavior was correct on Darwin, which is probably the
> platform it was written for.
>
> Before this change, we would rewrite "align 8" to ".align 3" and then
> fail to make it through the integrated assembler because 3 is not a
> power of 2.
>
> Differential Revision: http://reviews.llvm.org/D14120
>
> Modified:
> llvm/trunk/lib/MC/MCParser/AsmParser.cpp
>
> Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=251418&r1=251417&r2=251418&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
> +++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Tue Oct 27 12:32:48 2015
> @@ -4792,10 +4792,16 @@ bool AsmParser::parseMSInlineAsm(
> OS << ".byte";
> break;
> case AOK_Align: {
> - unsigned Val = AR.Val;
> - OS << ".align " << Val;
> + // MS alignment directives are measured in bytes. If the native
> assembler
> + // measures alignment in bytes, we can pass it straight through.
> + OS << ".align";
> + if (getContext().getAsmInfo()->getAlignmentIsInBytes())
> + break;
>
> - // Skip the original immediate.
> + // Alignment is in log2 form, so print that instead and skip the
> original
> + // immediate.
> + unsigned Val = AR.Val;
> + OS << ' ' << Val;
> assert(Val < 10 && "Expected alignment less then 2^10.");
> AdditionalSkip = (Val < 4) ? 2 : Val < 7 ? 3 : 4;
> break;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151027/ce669e90/attachment.html>
More information about the llvm-commits
mailing list