dev-arm: Correct cast of template parameter
Clang with -Wconstant-conversion is _very_ restrictive on casting. The shift operator results in an incorrect promotion. This patch add a compile-time static cast that remove the error when clang is used. Change-Id: I3aa1e77da2565799feadc32317d5faa111b2de86 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17308 Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
@@ -4278,7 +4278,9 @@ let {{
|
||||
bool negSrc1 = (srcElem1 < 0);
|
||||
bool negSrc2 = (srcElem2 < 0);
|
||||
if ((negDest != negSrc1) && (negSrc1 == negSrc2)) {
|
||||
destElem = (Element)1 << (sizeof(Element) * 8 - 1);
|
||||
destElem = static_cast<Element>(
|
||||
(Element)1 << (sizeof(Element) * 8 - 1)
|
||||
);
|
||||
if (negDest)
|
||||
destElem -= 1;
|
||||
}
|
||||
@@ -4293,7 +4295,9 @@ let {{
|
||||
bool negSrc = (srcElem1 < 0);
|
||||
bool posCount = ((count * imm) >= 0);
|
||||
if ((negDest != negSrc) && (negSrc == posCount)) {
|
||||
destElem = (%(dstType)s)1 << (sizeof(%(dstType)s) * 8 - 1);
|
||||
destElem = static_cast<%(dstType)s>(
|
||||
(%(dstType)s)1 << (sizeof(%(dstType)s) * 8 - 1)
|
||||
);
|
||||
if (negDest)
|
||||
destElem -= 1;
|
||||
}
|
||||
@@ -4350,7 +4354,9 @@ let {{
|
||||
bool negSrc = (srcElem1 < 0);
|
||||
bool negCount = ((count * imm) < 0);
|
||||
if ((negDest != negSrc) && (negSrc == negCount)) {
|
||||
destElem = (%(dstType)s)1 << (sizeof(%(dstType)s) * 8 - 1);
|
||||
destElem = static_cast<%(dstType)s>(
|
||||
(%(dstType)s)1 << (sizeof(%(dstType)s) * 8 - 1)
|
||||
);
|
||||
if (negDest)
|
||||
destElem -= 1;
|
||||
}
|
||||
@@ -4407,7 +4413,9 @@ let {{
|
||||
bool negSrc1 = (srcElem1 < 0);
|
||||
bool posSrc2 = (srcElem2 >= 0);
|
||||
if ((negDest != negSrc1) && (negSrc1 == posSrc2)) {
|
||||
destElem = (Element)1 << (sizeof(Element) * 8 - 1);
|
||||
destElem = static_cast<Element>(
|
||||
(Element)1 << (sizeof(Element) * 8 - 1)
|
||||
);
|
||||
if (negDest)
|
||||
destElem -= 1;
|
||||
}
|
||||
|
||||
@@ -182,7 +182,7 @@ reverseBits(T val, std::size_t size = sizeof(T))
|
||||
assert(size <= sizeof(T));
|
||||
|
||||
T output = 0;
|
||||
for (auto byte = 0; byte < size; byte++, val >>= 8) {
|
||||
for (auto byte = 0; byte < size; byte++, val = static_cast<T>(val >> 8)) {
|
||||
output = (output << 8) | reverseLookUpTable[val & 0xFF];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user