X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FllvmGen%2FLlvm%2FAbsSyn.hs;h=93bc62c91f2968eca9e6261fc296d6087fcbdc9a;hb=d9a655dad8e013e41c74dca98fb86c4ed6f29879;hp=08d27d75f85374968da69544ff1e40ac9d3e7f66;hpb=e94570ba7c84444f034b8d552c05f8594532b329;p=ghc-hetmet.git diff --git a/compiler/llvmGen/Llvm/AbsSyn.hs b/compiler/llvmGen/Llvm/AbsSyn.hs index 08d27d7..93bc62c 100644 --- a/compiler/llvmGen/Llvm/AbsSyn.hs +++ b/compiler/llvmGen/Llvm/AbsSyn.hs @@ -132,6 +132,12 @@ data LlvmStatement -} | Expr LlvmExpression + {- | + A nop LLVM statement. Useful as its often more efficient to use this + then to wrap LLvmStatement in a Just or []. + -} + | Nop + deriving (Show, Eq) @@ -210,5 +216,18 @@ data LlvmExpression -} | Phi LlvmType [(LlvmVar,LlvmVar)] + {- | + Inline assembly expression. Syntax is very similar to the style used by GCC. + * assembly: Actual inline assembly code. + * contraints: Operand constraints. + * return ty: Return type of function. + * vars: Any variables involved in the assembly code. + * sideeffect: Does the expression have side effects not visible from the + constraints list. + * alignstack: Should the stack be conservatively aligned before this + expression is executed. + -} + | Asm LMString LMString LlvmType [LlvmVar] Bool Bool + deriving (Show, Eq)