Browse Source
We always evaluate integer values in cell arrays as 64-bit quantities, then truncate to the size of the array cells (32-bit by default). However to detect accidental truncation of meaningful values, we give an error if the truncated portion isn't either all 0 or all 1 bits. However, this can still give counterintuitive errors. For if the user is thinking in 2's complement 32-bit arithmetic (which would be quite natural), then they'd expect the expression (-0xffffffff-2) to evaluate to -1 (0xffffffff). However in 64-bit it evaluates to 0xfffffffeffffffff which does truncate to the expected value but trips this error message. Because of this reduce the error to only a warnings, with a somewhat more helpful message. Fixes: https://github.com/dgibson/dtc/issues/74 Signed-off-by: David Gibson <david@gibson.dropbear.id.au>main
David Gibson
2 years ago
4 changed files with 27 additions and 3 deletions
@ -0,0 +1,7 @@ |
|||||||
|
/dts-v1/; |
||||||
|
|
||||||
|
/ { |
||||||
|
prop1 = < 0 >; |
||||||
|
prop2 = < 0xffffffff >; |
||||||
|
prop3 = < 0 >; |
||||||
|
}; |
@ -0,0 +1,7 @@ |
|||||||
|
/dts-v1/; |
||||||
|
|
||||||
|
/ { |
||||||
|
prop1 = < (-0xffffffff - 1) >; |
||||||
|
prop2 = < (-0xffffffff - 2) >; |
||||||
|
prop3 = < ((-0xffffffff - 1) * 2) >; |
||||||
|
}; |
Loading…
Reference in new issue