mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-10 22:43:53 +00:00
[ms-inline-asm] Leave alignment in bytes if the native assembler uses bytes
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 llvm-svn: 251418
This commit is contained in:
parent
6b448f7f95
commit
9057466943
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user