aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/ms-inline-asm.c
AgeCommit message (Collapse)Author
2012-10-11[ms-inline asm] Remove a bunch of parsing code from the front-end, which will beChad Rosier
reimplemented in the AsmParser where it belongs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165752 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-11[ms-inline asm] Lookup the IdentifierInfo using the Idents table and remove theChad Rosier
now unused static helper function. The test case needs to be remove temporarily until I can better filter memory operands that aren't actual variable reference. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165751 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-04Test case for r165275.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165276 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-03Update test case for r165174.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165175 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-02[ms-inline asm] Fixup test case to be valid ms-style asm. Fix whitespace.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165045 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-27clang/test/CodeGen/ms-inline-asm.c: It requires x86 codegen. Reported by ↵NAKAMURA Takumi
Joey Gouly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164775 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-13[ms-inline asm] Handle the enumeration of input and output expressions in aChad Rosier
more robust way to address a few FIXMEs. The initial implementation, r163342, built the IR asm string and then tried to patch things on the fly without enough context. Specifically, it didn't skip mnemonics nor did it track with assembly instruction an expression was related to. The new implementation patches the operands and then builds the final IR string. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163756 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-12Whitespace.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163751 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-12Fix test case for Release builds.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163737 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-12[ms-inline asm] Add a test case.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163731 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-12[ms-inline asm] Test case for r163729.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163730 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-12[ms-inline asm] If we have a single asm operand that maps to multipleChad Rosier
MCOperands then iterate over all of then when computing clobbers, inputs and outputs. On x86 the 1-to-many mapping is a memory operand that includes a BaseReg(reg), MemScale(imm), MemIndexReg(reg), an Expr(MCExpr or imm) and a MemSegReg(reg). Invalid register (Op.getReg() == 0) are not considered when computing clobber. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163728 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-11[ms-inline asm] Add $$ before numeric constants in the IR.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163581 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-06[ms-inline asm] Output empty asm statements for the directives we don'tChad Rosier
handle. Otherwise, the AsmParser will explode if we try to generate an object files. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163345 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-06[ms-inline asm] The IR representation of inline assembly enumerates the inputChad Rosier
and output expressions much like that in GNU-style inline assembly. Output expressions are first. Do this for MS-style inline asms. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163342 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-05Update for r163231.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163232 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-05[ms-inline asm] Update test case for r163181.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163182 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-04[ms-inline asm] Remove the Inline Asm Non-Standard Dialect attribute. ThisChad Rosier
implementation does not co-exist well with how the sideeffect and alignstack attributes are handled. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163173 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-04[ms-inline asm] The MCInstrDesc only tracks register definitions. For now,Chad Rosier
assume that if the 1st operands is an expression and the instruction mayStore, then it is a memory definition. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163144 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-28Fix test case for Release builds.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162800 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-28[ms-inline asm] Have MSAsmStmts use the generic EmitAsmStmt codegen function.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162796 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-22[ms-inline asm] Start sending non-simple inline asms to the AsmParser.Chad Rosier
The parser still can't handle all cases, so fall back to emitting a simple MSAsmStmt if we get into trouble. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162382 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-21[ms-inline asm] Remove this test case and the associated special case code.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162288 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-16[ms-inline asm] Add a helper function, isMSAsmKeyword().Chad Rosier
These require special handling, which we don't currently handle. This is being put in place to ensure we don't do invalid symbol table lookups or try to parse invalid assembly. The test cases just makes sure the latter isn't happening. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162050 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-16Fixup test case for Release builds.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162038 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-16[ms-inline asm] Start tracking which tokens are registers and which areChad Rosier
variables, function or label references. The former is a potential clobber. The latter is either an input or an output. Unfortunately, it's difficult to test this patch at the moment, but the added test case will eventually do so. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162026 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-15[ms-inline asm] Use a set container to remove redundant clobbers.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161991 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-15[ms-inline asm] MSVC parses multiple __asm statements on a single line as oneChad Rosier
statement. For example, if (x) __asm out dx, ax __asm out dx, ax results in a single inline asm statement (i.e., both "out dx, ax" statements are predicated on if(x)). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161986 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-15[ms-inline asm] Add support for clobbers in CodeGen.Chad Rosier
This is a reapplication of r161914 now that the scoping issue has been resolved in r161966. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161967 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-15Revert this to try to bring the i386 bots back.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161931 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-15[ms-inline asm] Add support for clobbers in CodeGen.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161914 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-14[ms-inline asm] More test cases to make sure buildMSAsmString() doesn't regress.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161908 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-14[ms-inline asm] Add a helpful assert.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161890 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-13[ms-inline asm] Have patchMSAsmStrings() return a vector or AsmStrings.Chad Rosier
The AsmParser expects a single asm instruction, but valid ms-style inline asm statements may contain multiple instructions. This happens with asm blocks __asm { mov ebx, eax mov ecx, ebx } or when multiple asm statements are adjacent to one another __asm mov ebx, eax __asm mov ecx, ebx and __asm mov ebx, eax __asm mov ecx, ebx Currently, asm blocks are not properly handled. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161780 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-10[ms-inline asm] Use the new Inline Asm Non-Standard Dialect attribute.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161642 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-08[ms-inline asm] Add basic codegen support for simple asm stmts. Currently,Chad Rosier
only machine specific clobbers are modeled. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161524 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-08[ms-inline asm] Add a very simple test case. Basically, we're only testing forChad Rosier
crashers at the moment (and coincidentally this case was causing a crash). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161520 91177308-0d34-0410-b5e6-96231b3b80d8