X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FllvmGen%2FLlvm%2FAbsSyn.hs;h=e25f5be2b987a4b127270a30b8e06d49d158c90e;hb=6f66d02c9654fc037db0582857acdcc15e0fd1d3;hp=a58ea7701fb66c9a1ef9d2cc6e69a0bd23ef4532;hpb=770f05e6d160874d607e3f2bbc57912319f2a104;p=ghc-hetmet.git diff --git a/compiler/llvmGen/Llvm/AbsSyn.hs b/compiler/llvmGen/Llvm/AbsSyn.hs index a58ea77..e25f5be 100644 --- a/compiler/llvmGen/Llvm/AbsSyn.hs +++ b/compiler/llvmGen/Llvm/AbsSyn.hs @@ -176,11 +176,9 @@ data LlvmExpression Navigate in an structure, selecting elements * inbound: Is the pointer inbounds? (computed pointer doesn't overflow) * ptr: Location of the structure - * indexes: A list of indexes to select the correct value. For example - the first element of the third element of the structure ptr - is selected with [3,1] (zero indexed) + * indexes: A list of indexes to select the correct value. -} - | GetElemPtr Bool LlvmVar [Int] + | GetElemPtr Bool LlvmVar [LlvmVar] {- | Cast the variable from to the to type. This is an abstraction of three @@ -212,5 +210,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)