Changes between Version 8 and Version 9 of Commentary/Compiler/CmmType


Ignore:
Timestamp:
Dec 7, 2006 9:10:26 AM (9 years ago)
Author:
simonmar
Comment:

small clarification

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Compiler/CmmType

    v8 v9  
    318318Although the C-- specification does not allow the C-- type system to statically distinguish between floats, signed ints, unsigned ints or pointers, Cmm does. Cmm `MachRep`s carry the float or int kind of a variable, either within a local block or in a global register.  `GlobalReg` includes separate constructors for `Vanilla`, `Float`, `Double` and `Long`.  Cmm still does not distinguish between signed ints, unsigned ints and pointers (addresses) at the register level, as these are given ''hint'' pseudo-types or their real type is determined as they run through primitive operations.  `MachHint`s still follow the C-- specification and carry kind information as an aide to the backend optimisers.   
    319319 
    320 Global Registers in Cmm currently have a problem with inlining: because neither [[GhcFile(compiler/cmm/PprC.hs)]] nor the NCG are able to keep Global Registers from clashing with C argument passing registers, Cmm expressions that contain Global Registers cannot be inlined.  For more thorough notes on inlining, see the comments in [[GhcFile(compiler/cmm/CmmOpt.hs)]]. 
     320Global Registers in Cmm currently have a problem with inlining: because neither [[GhcFile(compiler/cmm/PprC.hs)]] nor the NCG are able to keep Global Registers from clashing with C argument passing registers, Cmm expressions that contain Global Registers cannot be inlined into an argument position of a foreign call.  For more thorough notes on inlining, see the comments in [[GhcFile(compiler/cmm/CmmOpt.hs)]]. 
    321321 
    322322==== Declaration and Initialisation ====