clean revision http://reviews.llvm.org/D14120
This align directive doesn't work on the -fasm-blocks.
ALIGN [[number]]
Aligns the next variable or instruction on a byte that is a multiple of number.
Microsoft support only power of 2 align like gcc and icc .
The problem with the code was in the AsmParser.cpp
Inside the AsmParser::parseDirectiveMSAlign function we trying to lowering number in to log of two. This is not correct and not consistent with Microsoft compilers.
align should work only with address of multiply of two.
int f(void)
{
__asm { align 2 } __asm { align 4 } __asm { align 8 } __asm { align 16 } __asm { align 32 } return 0;
}
int main()
{
return f();
}
We don't need to pass IntValue here.