HomePhabricator

[AST] CastExpr: BasePathSize is not large enough.

Authored by lebedev.ri on Jul 31 2018, 11:06 PM.

Description

[AST] CastExpr: BasePathSize is not large enough.

Summary:
rC337815 / D49508 had to cannibalize one bit of CastExprBitfields::BasePathSize in order to squeeze PartOfExplicitCast boolean.
That reduced the maximal value of PartOfExplicitCast from 9 bits (~512) down to 8 bits (~256).
Apparently, that mattered. Too bad there weren't any tests.
It caused PR38356.

So we need to increase PartOfExplicitCast back at least to 9 bits, or a bit more.
For obvious reasons, we can't do that in CastExprBitfields - that would blow up the size of every Expr.
So we need to either just add a variable into the CastExpr (as done here),
or use llvm::TrailingObjects. The latter does not seem to be straight-forward.
Perhaps, that needs to be done not for the CastExpr itself, but for all of it's final children.

Reviewers: rjmccall, rsmith, erichkeane

Reviewed By: rjmccall

Subscribers: bricci, hans, cfe-commits, waddlesplash

Differential Revision: https://reviews.llvm.org/D50050

llvm-svn: 338489

Details

Committed
lebedev.riJul 31 2018, 11:06 PM
Reviewer
rjmccall
Differential Revision
D50050: [AST] CastExpr: BasePathSize is not large enough.
Parents
rGb1dfad060193: Added initial unit test for LLDB's Stream class.
Branches
Unknown
Tags
Unknown