Fix change detection error on unions, bug758.
This commit is contained in:
parent
b631b5927b
commit
d532a36739
2
Changes
2
Changes
|
|
@ -39,6 +39,8 @@ indicates the contributor was also the author of the fix; Thanks!
|
||||||
|
|
||||||
**** Fix reporting struct members as reserved words, bug741. [Chris Randall]
|
**** Fix reporting struct members as reserved words, bug741. [Chris Randall]
|
||||||
|
|
||||||
|
**** Fix change detection error on unions, bug758. [Jie Xu]
|
||||||
|
|
||||||
**** Fix Mac OS-X test issues. [Holger Waechtler]
|
**** Fix Mac OS-X test issues. [Holger Waechtler]
|
||||||
|
|
||||||
**** Fix C++-2011 warnings.
|
**** Fix C++-2011 warnings.
|
||||||
|
|
|
||||||
|
|
@ -84,16 +84,16 @@ private:
|
||||||
AstVar* varp = vscp->varp();
|
AstVar* varp = vscp->varp();
|
||||||
vscp->v3warn(IMPERFECTSCH,"Imperfect scheduling of variable: "<<vscp);
|
vscp->v3warn(IMPERFECTSCH,"Imperfect scheduling of variable: "<<vscp);
|
||||||
AstUnpackArrayDType* arrayp = varp->dtypeSkipRefp()->castUnpackArrayDType();
|
AstUnpackArrayDType* arrayp = varp->dtypeSkipRefp()->castUnpackArrayDType();
|
||||||
AstStructDType *structp = varp->dtypeSkipRefp()->castStructDType();
|
AstNodeClassDType *classp = varp->dtypeSkipRefp()->castNodeClassDType();
|
||||||
bool isArray = arrayp;
|
bool isArray = arrayp;
|
||||||
bool isStruct = structp && structp->packedUnsup();
|
bool isClass = classp && classp->packedUnsup();
|
||||||
int elements = isArray ? arrayp->elementsConst() : 1;
|
int elements = isArray ? arrayp->elementsConst() : 1;
|
||||||
if (isArray && (elements > DETECTARRAY_MAX_INDEXES)) {
|
if (isArray && (elements > DETECTARRAY_MAX_INDEXES)) {
|
||||||
vscp->v3warn(E_DETECTARRAY, "Unsupported: Can't detect more than "<<cvtToStr(DETECTARRAY_MAX_INDEXES)
|
vscp->v3warn(E_DETECTARRAY, "Unsupported: Can't detect more than "<<cvtToStr(DETECTARRAY_MAX_INDEXES)
|
||||||
<<" array indexes (probably with UNOPTFLAT warning suppressed): "<<varp->prettyName()<<endl
|
<<" array indexes (probably with UNOPTFLAT warning suppressed): "<<varp->prettyName()<<endl
|
||||||
<<vscp->warnMore()
|
<<vscp->warnMore()
|
||||||
<<"... Could recompile with DETECTARRAY_MAX_INDEXES increased to at least "<<cvtToStr(elements));
|
<<"... Could recompile with DETECTARRAY_MAX_INDEXES increased to at least "<<cvtToStr(elements));
|
||||||
} else if (!isArray && !isStruct
|
} else if (!isArray && !isClass
|
||||||
&& !varp->dtypeSkipRefp()->castBasicDType()) {
|
&& !varp->dtypeSkipRefp()->castBasicDType()) {
|
||||||
if (debug()) varp->dumpTree(cout,"-DETECTARRAY-");
|
if (debug()) varp->dumpTree(cout,"-DETECTARRAY-");
|
||||||
vscp->v3warn(E_DETECTARRAY, "Unsupported: Can't detect changes on complex variable (probably with UNOPTFLAT warning suppressed): "<<varp->prettyName());
|
vscp->v3warn(E_DETECTARRAY, "Unsupported: Can't detect changes on complex variable (probably with UNOPTFLAT warning suppressed): "<<varp->prettyName());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue