-
Notifications
You must be signed in to change notification settings - Fork 31
Open
Labels
bugSomething isn't workingSomething isn't working
Description
VAST version
master
LLVM version
18.1.8
Operating system
Linux (Solus)
Description
({
int x = 5;
typeof(x) y = x;
y;
})
generates
hl.typeof.expr "(x)" {
%3 = hl.expr : !hl.lvalue<!hl.int> {
%4 = unsup.stmt "DeclRefExpr" : !hl.int
hl.value.yield %4 : !hl.int
}
hl.type.yield %3 : !hl.lvalue<!hl.int>
} : !hl.int
%2 = hl.stmt.expr : !hl.typeof.expr<"(x)"> {
%3 = hl.var @x : !hl.lvalue<!hl.int> = {
%7 = hl.const #core.integer<0> : !hl.int
hl.value.yield %7 : !hl.int
}
%4 = hl.var @y : !hl.lvalue<!hl.typeof.expr<"(x)">> = {
%7 = hl.ref %3 : (!hl.lvalue<!hl.int>) -> !hl.lvalue<!hl.int>
%8 = hl.implicit_cast %7 LValueToRValue : !hl.lvalue<!hl.int> -> !hl.int
hl.value.yield %8 : !hl.int
}
%5 = hl.ref %4 : (!hl.lvalue<!hl.typeof.expr<"(x)">>) -> !hl.lvalue<!hl.typeof.expr<"(x)">>
%6 = hl.implicit_cast %5 LValueToRValue : !hl.lvalue<!hl.typeof.expr<"(x)">> -> !hl.typeof.expr<"(x)">
hl.value.yield %6 : !hl.typeof.expr<"(x)">
}
The issue is unsupported DeclRefExpr in the typeof.expr region, that refers to x that is in the scope of the stmt.expr.
This is caused by visiting the return type of the stmt.expr
Steps to Reproduce
Run vast-front to hl
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working