[cfe-dev] Prevent folding of integer constant expressions in AST

Csaba Dabis via cfe-dev cfe-dev at lists.llvm.org
Mon Mar 30 04:29:27 PDT 2020


I have already sent the following on the list, may this helps.
Assume that you have the desired `VarDecl` `D` of `main_foo`:
```
const Expr *SizeExpr = nullptr;
if (const TypeSourceInfo *TSI = D->getTypeSourceInfo())
  if (const auto ATL = TSI->getTypeLoc().getAs<ArrayTypeLoc>())
    SizeExpr = ATL.getSizeExpr();
```

On Mon, Mar 30, 2020 at 1:24 PM Benedikt Lukas Huber via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> Hi,
>
> I wanted to bump this question. Maybe someone has an idea how to solve
> this.
>
> Thank you and best regards,
> Benedikt
>
> ________________________________________
> From: Benedikt Lukas Huber <benedikt.lukas.huber at catena.tech>
> Sent: Thursday, January 16, 2020 5:21 PM
> To: via cfe-dev
> Subject: Prevent folding of integer constant expressions in AST
>
> Hi,
>
> I am using ParseAST to traverse the AST provided by clang, using a
> ConstDeclVisitor, a ConstStmtVisitor and a TypeVisitor.
> My problem now is that for expressions such as
>
> char main_foo[sizeof(int) == sizeof(char) ? 5 : 8];
>
> I cannot access the expression for the array size, from
> VisitConstantArrayType(). I can only access the folded numerical value, in
> this case 8.
> Is there a way to access the unfolded expression? Or disable folding of
> integer constant expressions all together?
> I am using clang 6.0.
>
> Thank you and best regards,
> Benedikt
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20200330/690ab2c7/attachment-0001.html>


More information about the cfe-dev mailing list