Suppress REALCVT for whole real numbers.

This commit is contained in:
Wilson Snyder 2020-04-01 18:43:53 -04:00
parent ab058c85bf
commit 19abce5535
3 changed files with 11 additions and 1 deletions

View File

@ -11,6 +11,8 @@ The contributors that suggested a given feature are shown in []. Thanks!
*** Change --quiet-exit to also suppress 'Exiting due to N errors'.
**** Suppress REALCVT for whole real numbers.
**** Fix parameter type redeclaring a type, #2195. [hdzhangdoc]
**** Fix VCD open with empty filename, #2198. [Julius Baxter]

View File

@ -4338,9 +4338,16 @@ private:
// IEEE-2012 11.8.1: Signed: Type coercion creates signed
// 11.8.2: Argument to convert is self-determined
if (nodep && nodep->dtypep()->skipRefp()->isDouble()) {
UINFO(6," spliceCvtS: "<<nodep<<endl);
UINFO(6, " spliceCvtS: " << nodep << endl);
AstNRelinker linker;
nodep->unlinkFrBack(&linker);
if (AstConst* constp = VN_CAST(nodep, Const)) {
// Ignore obvious conversions of whole real numbers, e.g. 1.0 -> 1
if (constp->isDouble()
&& constp->num().toDouble() == floor(constp->num().toDouble())) {
warnOn = false;
}
}
if (warnOn) nodep->v3warn(REALCVT, "Implicit conversion of real to integer");
AstNode* newp = new AstRToIRoundS(nodep->fileline(), nodep);
linker.relink(newp);

View File

@ -8,5 +8,6 @@ module sub;
integer i;
initial begin
i = 23.2;
i = 23.0; // No warning - often happens with units of time
end
endmodule