138 lines
5.9 KiB
Diff
138 lines
5.9 KiB
Diff
|
From eb58c41d497a229f4412d9afd212978943d12c0e Mon Sep 17 00:00:00 2001
|
||
|
From: Laszlo Ersek <lersek@redhat.com>
|
||
|
Date: Sun, 14 Feb 2016 08:17:16 +0100
|
||
|
Subject: [PATCH] BaseTools: LzmaCompress: eliminate _maxMode and bogus
|
||
|
indentation
|
||
|
|
||
|
The "_maxMode" variable doesn't exist in edk2's variant of LzmaCompress,
|
||
|
but the way one of the old uses of the variable is commented out (i.e.,
|
||
|
together with the enclosing "if" statement) triggers the
|
||
|
"misleading-indentation" warning that is new in gcc-6.0, for the block of
|
||
|
code that originally depended on the "if" statement. Gcc believes
|
||
|
(mistakenly) that the programmer believes (mistakenly) that the block
|
||
|
depends on (repIndex == 0) higher up.
|
||
|
|
||
|
Remove the commented out uses of "_maxMode", and unindent the block in
|
||
|
question.
|
||
|
|
||
|
This patch is best viewed with "git show -b".
|
||
|
|
||
|
Cc: Cole Robinson <crobinso@redhat.com>
|
||
|
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
|
||
|
Cc: Liming Gao <liming.gao@intel.com>
|
||
|
Reported-by: Cole Robinson <crobinso@redhat.com>
|
||
|
Contributed-under: TianoCore Contribution Agreement 1.0
|
||
|
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
|
||
|
---
|
||
|
BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c | 81 ++++++++++----------
|
||
|
1 file changed, 40 insertions(+), 41 deletions(-)
|
||
|
|
||
|
diff --git a/BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c b/BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c
|
||
|
index 9b2dd16ffa48..1eb9898b5291 100644
|
||
|
--- a/BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c
|
||
|
+++ b/BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c
|
||
|
@@ -1367,52 +1367,51 @@ static UInt32 GetOptimum(CLzmaEnc *p, UInt32 position, UInt32 *backRes)
|
||
|
if (repIndex == 0)
|
||
|
startLen = lenTest + 1;
|
||
|
|
||
|
- /* if (_maxMode) */
|
||
|
+ {
|
||
|
+ UInt32 lenTest2 = lenTest + 1;
|
||
|
+ UInt32 limit = lenTest2 + p->numFastBytes;
|
||
|
+ UInt32 nextRepMatchPrice;
|
||
|
+ if (limit > numAvailFull)
|
||
|
+ limit = numAvailFull;
|
||
|
+ for (; lenTest2 < limit && data[lenTest2] == data2[lenTest2]; lenTest2++);
|
||
|
+ lenTest2 -= lenTest + 1;
|
||
|
+ if (lenTest2 >= 2)
|
||
|
{
|
||
|
- UInt32 lenTest2 = lenTest + 1;
|
||
|
- UInt32 limit = lenTest2 + p->numFastBytes;
|
||
|
- UInt32 nextRepMatchPrice;
|
||
|
- if (limit > numAvailFull)
|
||
|
- limit = numAvailFull;
|
||
|
- for (; lenTest2 < limit && data[lenTest2] == data2[lenTest2]; lenTest2++);
|
||
|
- lenTest2 -= lenTest + 1;
|
||
|
- if (lenTest2 >= 2)
|
||
|
+ UInt32 state2 = kRepNextStates[state];
|
||
|
+ UInt32 posStateNext = (position + lenTest) & p->pbMask;
|
||
|
+ UInt32 curAndLenCharPrice =
|
||
|
+ price + p->repLenEnc.prices[posState][lenTest - 2] +
|
||
|
+ GET_PRICE_0(p->isMatch[state2][posStateNext]) +
|
||
|
+ LitEnc_GetPriceMatched(LIT_PROBS(position + lenTest, data[lenTest - 1]),
|
||
|
+ data[lenTest], data2[lenTest], p->ProbPrices);
|
||
|
+ state2 = kLiteralNextStates[state2];
|
||
|
+ posStateNext = (position + lenTest + 1) & p->pbMask;
|
||
|
+ nextRepMatchPrice = curAndLenCharPrice +
|
||
|
+ GET_PRICE_1(p->isMatch[state2][posStateNext]) +
|
||
|
+ GET_PRICE_1(p->isRep[state2]);
|
||
|
+
|
||
|
+ /* for (; lenTest2 >= 2; lenTest2--) */
|
||
|
{
|
||
|
- UInt32 state2 = kRepNextStates[state];
|
||
|
- UInt32 posStateNext = (position + lenTest) & p->pbMask;
|
||
|
- UInt32 curAndLenCharPrice =
|
||
|
- price + p->repLenEnc.prices[posState][lenTest - 2] +
|
||
|
- GET_PRICE_0(p->isMatch[state2][posStateNext]) +
|
||
|
- LitEnc_GetPriceMatched(LIT_PROBS(position + lenTest, data[lenTest - 1]),
|
||
|
- data[lenTest], data2[lenTest], p->ProbPrices);
|
||
|
- state2 = kLiteralNextStates[state2];
|
||
|
- posStateNext = (position + lenTest + 1) & p->pbMask;
|
||
|
- nextRepMatchPrice = curAndLenCharPrice +
|
||
|
- GET_PRICE_1(p->isMatch[state2][posStateNext]) +
|
||
|
- GET_PRICE_1(p->isRep[state2]);
|
||
|
-
|
||
|
- /* for (; lenTest2 >= 2; lenTest2--) */
|
||
|
+ UInt32 curAndLenPrice;
|
||
|
+ COptimal *opt;
|
||
|
+ UInt32 offset = cur + lenTest + 1 + lenTest2;
|
||
|
+ while (lenEnd < offset)
|
||
|
+ p->opt[++lenEnd].price = kInfinityPrice;
|
||
|
+ curAndLenPrice = nextRepMatchPrice + GetRepPrice(p, 0, lenTest2, state2, posStateNext);
|
||
|
+ opt = &p->opt[offset];
|
||
|
+ if (curAndLenPrice < opt->price)
|
||
|
{
|
||
|
- UInt32 curAndLenPrice;
|
||
|
- COptimal *opt;
|
||
|
- UInt32 offset = cur + lenTest + 1 + lenTest2;
|
||
|
- while (lenEnd < offset)
|
||
|
- p->opt[++lenEnd].price = kInfinityPrice;
|
||
|
- curAndLenPrice = nextRepMatchPrice + GetRepPrice(p, 0, lenTest2, state2, posStateNext);
|
||
|
- opt = &p->opt[offset];
|
||
|
- if (curAndLenPrice < opt->price)
|
||
|
- {
|
||
|
- opt->price = curAndLenPrice;
|
||
|
- opt->posPrev = cur + lenTest + 1;
|
||
|
- opt->backPrev = 0;
|
||
|
- opt->prev1IsChar = True;
|
||
|
- opt->prev2 = True;
|
||
|
- opt->posPrev2 = cur;
|
||
|
- opt->backPrev2 = repIndex;
|
||
|
- }
|
||
|
+ opt->price = curAndLenPrice;
|
||
|
+ opt->posPrev = cur + lenTest + 1;
|
||
|
+ opt->backPrev = 0;
|
||
|
+ opt->prev1IsChar = True;
|
||
|
+ opt->prev2 = True;
|
||
|
+ opt->posPrev2 = cur;
|
||
|
+ opt->backPrev2 = repIndex;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
+ }
|
||
|
}
|
||
|
}
|
||
|
/* for (UInt32 lenTest = 2; lenTest <= newLen; lenTest++) */
|
||
|
@@ -1456,7 +1455,7 @@ static UInt32 GetOptimum(CLzmaEnc *p, UInt32 position, UInt32 *backRes)
|
||
|
opt->prev1IsChar = False;
|
||
|
}
|
||
|
|
||
|
- if (/*_maxMode && */lenTest == matches[offs])
|
||
|
+ if (lenTest == matches[offs])
|
||
|
{
|
||
|
/* Try Match + Literal + Rep0 */
|
||
|
const Byte *data2 = data - (curBack + 1);
|
||
|
--
|
||
|
1.8.3.1
|
||
|
|