the attached patch adds support for "pusha" and "popa" in asm blocks.
It's strictly speaking an llvm patch, but I'm not on llvm-dev.
The binary produced by clang with for the two instructions matches gcc
in i386 mode. In x86_64 mode, gcc correctly points out that the
instruction is 32-bit only, while clang doesn't do this yet. nicholas
on irc says that that's probably because clang doesn't check for
32/64bit mismatches yet for inline assembly.