Front-End: precise: capture noContraction on output parameter declarations.
This commit is contained in:
parent
076879d61c
commit
5cc344d8ce
@ -83,10 +83,10 @@ ERROR: node is still EOpNull!
|
|||||||
0:153 Function Parameters:
|
0:153 Function Parameters:
|
||||||
0:153 'i' (in float)
|
0:153 'i' (in float)
|
||||||
0:153 'j' (in float)
|
0:153 'j' (in float)
|
||||||
0:153 'k' (out float)
|
0:153 'k' (noContraction out float)
|
||||||
0:155 Sequence
|
0:155 Sequence
|
||||||
0:155 move second child to first child (temp float)
|
0:155 move second child to first child (temp float)
|
||||||
0:155 'k' (out float)
|
0:155 'k' (noContraction out float)
|
||||||
0:155 add (temp float)
|
0:155 add (temp float)
|
||||||
0:155 component-wise multiply (temp float)
|
0:155 component-wise multiply (temp float)
|
||||||
0:155 'i' (in float)
|
0:155 'i' (in float)
|
||||||
@ -367,10 +367,10 @@ ERROR: node is still EOpNull!
|
|||||||
0:153 Function Parameters:
|
0:153 Function Parameters:
|
||||||
0:153 'i' (in float)
|
0:153 'i' (in float)
|
||||||
0:153 'j' (in float)
|
0:153 'j' (in float)
|
||||||
0:153 'k' (out float)
|
0:153 'k' (noContraction out float)
|
||||||
0:155 Sequence
|
0:155 Sequence
|
||||||
0:155 move second child to first child (temp float)
|
0:155 move second child to first child (temp float)
|
||||||
0:155 'k' (out float)
|
0:155 'k' (noContraction out float)
|
||||||
0:155 add (temp float)
|
0:155 add (temp float)
|
||||||
0:155 component-wise multiply (temp float)
|
0:155 component-wise multiply (temp float)
|
||||||
0:155 'i' (in float)
|
0:155 'i' (in float)
|
||||||
|
@ -3538,6 +3538,7 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali
|
|||||||
type.getQualifier().writeonly = qualifier.writeonly;
|
type.getQualifier().writeonly = qualifier.writeonly;
|
||||||
type.getQualifier().restrict = qualifier.restrict;
|
type.getQualifier().restrict = qualifier.restrict;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qualifier.isAuxiliary() ||
|
if (qualifier.isAuxiliary() ||
|
||||||
qualifier.isInterpolation())
|
qualifier.isInterpolation())
|
||||||
error(loc, "cannot use auxiliary or interpolation qualifiers on a function parameter", "", "");
|
error(loc, "cannot use auxiliary or interpolation qualifiers on a function parameter", "", "");
|
||||||
@ -3545,8 +3546,12 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali
|
|||||||
error(loc, "cannot use layout qualifiers on a function parameter", "", "");
|
error(loc, "cannot use layout qualifiers on a function parameter", "", "");
|
||||||
if (qualifier.invariant)
|
if (qualifier.invariant)
|
||||||
error(loc, "cannot use invariant qualifier on a function parameter", "", "");
|
error(loc, "cannot use invariant qualifier on a function parameter", "", "");
|
||||||
if (qualifier.noContraction && qualifier.storage != EvqOut && qualifier.storage != EvqInOut)
|
if (qualifier.noContraction) {
|
||||||
|
if (qualifier.storage == EvqOut || qualifier.storage == EvqInOut)
|
||||||
|
type.getQualifier().noContraction = true;
|
||||||
|
else
|
||||||
warn(loc, "qualifier has no effect on non-output parameters", "precise", "");
|
warn(loc, "qualifier has no effect on non-output parameters", "precise", "");
|
||||||
|
}
|
||||||
|
|
||||||
paramCheckFix(loc, qualifier.storage, type);
|
paramCheckFix(loc, qualifier.storage, type);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user