Tokenizer: skip constant folding in normal token list for C code. In C++ code we should only fold constants in template arguments.
This commit is contained in:
parent
d25258359a
commit
42278dd133
|
@ -3584,22 +3584,23 @@ bool Tokenizer::simplifyTokenList1(const char FileName[])
|
||||||
|
|
||||||
// Remove redundant parentheses
|
// Remove redundant parentheses
|
||||||
simplifyRedundantParentheses();
|
simplifyRedundantParentheses();
|
||||||
for (Token *tok = list.front(); tok; tok = tok->next())
|
|
||||||
while (TemplateSimplifier::simplifyNumericCalculations(tok))
|
|
||||||
;
|
|
||||||
|
|
||||||
// Handle templates..
|
|
||||||
simplifyTemplates();
|
|
||||||
|
|
||||||
// The simplifyTemplates have inner loops
|
|
||||||
if (_settings->terminated())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// Simplify templates.. sometimes the "simplifyTemplates" fail and
|
|
||||||
// then unsimplified function calls etc remain. These have the
|
|
||||||
// "wrong" syntax. So this function will just fix so that the
|
|
||||||
// syntax is corrected.
|
|
||||||
if (!isC()) {
|
if (!isC()) {
|
||||||
|
// TODO: Only simplify template parameters
|
||||||
|
for (Token *tok = list.front(); tok; tok = tok->next())
|
||||||
|
while (TemplateSimplifier::simplifyNumericCalculations(tok))
|
||||||
|
;
|
||||||
|
|
||||||
|
// Handle templates..
|
||||||
|
simplifyTemplates();
|
||||||
|
|
||||||
|
// The simplifyTemplates have inner loops
|
||||||
|
if (_settings->terminated())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// sometimes the "simplifyTemplates" fail and then unsimplified
|
||||||
|
// function calls etc remain. These have the "wrong" syntax. So
|
||||||
|
// this function will just fix so that the syntax is corrected.
|
||||||
validate(); // #6847 - invalid code
|
validate(); // #6847 - invalid code
|
||||||
TemplateSimplifier::cleanupAfterSimplify(list.front());
|
TemplateSimplifier::cleanupAfterSimplify(list.front());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue