diff --git a/compiler/arm/aasmcpu.pas b/compiler/arm/aasmcpu.pas index 52f8302155..9ce03d5476 100644 --- a/compiler/arm/aasmcpu.pas +++ b/compiler/arm/aasmcpu.pas @@ -2699,6 +2699,7 @@ implementation else begin found:=false; + imm12:=0; for shift:=1 to 31 do begin tmp:=RolDWord(imm,shift); @@ -2726,12 +2727,14 @@ implementation var shift,typ: byte; begin + shift:=0; + typ:=0; case oper[op]^.shifterop^.shiftmode of SM_LSL: begin typ:=0; shift:=oper[op]^.shifterop^.shiftimm; end; SM_LSR: begin typ:=1; shift:=oper[op]^.shifterop^.shiftimm; if shift=32 then shift:=0; end; SM_ASR: begin typ:=2; shift:=oper[op]^.shifterop^.shiftimm; if shift=32 then shift:=0; end; SM_ROR: begin typ:=3; shift:=oper[op]^.shifterop^.shiftimm; if shift=0 then message(asmw_e_invalid_opcode_and_operands); end; - SM_RRX: begin typ:=3; shift:=oper[op]^.shifterop^.shiftimm; shift:=0; end; + SM_RRX: begin typ:=3; shift:=0; end; end; if is_sat then @@ -4518,13 +4521,13 @@ implementation begin bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8); + offset:=0; if oper[1]^.typ=top_const then begin offset:=oper[1]^.val; end else if oper[1]^.typ=top_ref then begin - offset:=0; currsym:=objdata.symbolref(oper[1]^.ref^.symbol); if assigned(currsym) then offset:=currsym.offset-insoffset-8;