diff --git a/CCommon.pas b/CCommon.pas index b1eaab0..cad3a88 100644 --- a/CCommon.pas +++ b/CCommon.pas @@ -484,6 +484,8 @@ var partialFileGS: gsosOutString; {partial compile list} sourceFileGS: gsosOutString; {debug source file name} tempList: tempPtr; {list of temp work variables} + longlong0: longlong; {the value 0 as a longlong} + longlong1: longlong; {the value 1 as a longlong} {expression results} {------------------} @@ -851,6 +853,10 @@ spinner[0] := '|'; {set up the spinner characters} spinner[1] := '/'; spinner[2] := '-'; spinner[3] := '\'; +longlong0.hi := 0; +longlong0.lo := 0; +longlong1.hi := 0; +longlong1.lo := 1; end; {InitCCommon} diff --git a/Expression.pas b/Expression.pas index 83c7149..e807c8b 100644 --- a/Expression.pas +++ b/Expression.pas @@ -2364,6 +2364,14 @@ var Gen0(pc_sbl); end; + cgQuad,cgUQuad: begin + GenLdcQuad(longlong1); + if inc then + Gen0(pc_adq) + else + Gen0(pc_sbq); + end; + cgReal,cgDouble,cgComp,cgExtended: begin GenLdcReal(1.0); if inc then @@ -2406,7 +2414,7 @@ var if iType^.kind = scalarType then begin iSize := 1; baseType := iType^.baseType; - if (baseType in [cgReal,cgDouble,cgComp,cgExtended]) + if (baseType in [cgReal,cgDouble,cgComp,cgExtended,cgQuad,cgUQuad]) or (iType^.cType = ctBool) then begin {do real or bool inc or dec} @@ -2438,6 +2446,10 @@ var IncOrDec(pc_l = pc_lld); if iType^.cType = ctBool then expressionType := boolPtr + else if baseType = cgQuad then + expressionType := longLongPtr + else if baseType = cgUQuad then + expressionType := ulongLongPtr else expressionType := doublePtr; goto 1;