зеркало из https://github.com/microsoft/clang-1.git
Fix PR 5422: handle lvalue results when evaluating 'based' ptrtoints as part of
the -Wconversion check. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86891 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
f42d74f410
Коммит
8406aedf47
|
@ -424,9 +424,15 @@ static bool IsSameIntAfterCast(const APValue &value, unsigned TargetWidth) {
|
|||
return true;
|
||||
}
|
||||
|
||||
assert(value.isComplexInt());
|
||||
return IsSameIntAfterCast(value.getComplexIntReal(), TargetWidth) &&
|
||||
IsSameIntAfterCast(value.getComplexIntImag(), TargetWidth);
|
||||
if (value.isComplexInt()) {
|
||||
return IsSameIntAfterCast(value.getComplexIntReal(), TargetWidth) &&
|
||||
IsSameIntAfterCast(value.getComplexIntImag(), TargetWidth);
|
||||
}
|
||||
|
||||
// This can happen with lossless casts to intptr_t of "based" lvalues.
|
||||
// Assume it might use arbitrary bits.
|
||||
assert(value.isLValue());
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -229,3 +229,9 @@ void test15(char c) {
|
|||
c = c + 1 + c * 2;
|
||||
c = (short) c + 1 + c * 2; // expected-warning {{implicit cast loses integer precision}}
|
||||
}
|
||||
|
||||
// PR 5422
|
||||
extern void *test16_external;
|
||||
void test16(void) {
|
||||
int a = (unsigned long) &test16_external; // expected-warning {{implicit cast loses integer precision}}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче