<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Background: Hexagon clang doesn’t have JIT support, so lldb for Hexagon only uses the IR Interpreter (Codeplay wrote it for us).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sean, r260768 broke the expression parser with functions.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Without connecting to a target, I can’t get the info for main:<o:p></o:p></p><p class=MsoNormal>(lldb) e main<o:p></o:p></p><p class=MsoNormal>error: Can't run the expression locally: Interpreter doesn't handle one of the expression's operands<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Connected to a target, I can’t run a function:<o:p></o:p></p><p class=MsoNormal>(lldb) e factorial(5)<o:p></o:p></p><p class=MsoNormal>error: Can't run the expression locally: Interpreter doesn't handle one of the expression's operands<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’ve traced the failure to the call to CanResolveConstant() in IRInterpreter::CanIntepret(). The failure happens on the 2<sup>nd</sup> operand. In the working case, the Value ID is 0xa – Value::ConstantExprVal. In the failing case, it is 0x5. Since it’s defined in a .def file, I can’t be sure, but my guess is its Value::FunctionVal.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Where is the Value ID set?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Some info from the expr log:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>; Function Attrs: nounwind<o:p></o:p></p><p class=MsoNormal>define void @"_Z12$__lldb_exprPv"(i8* %"$__lldb_arg") #0 {<o:p></o:p></p><p class=MsoNormal>entry:<o:p></o:p></p><p class=MsoNormal>  %"$__lldb_arg.addr" = alloca i8*, align 4, !clang.decl.ptr !4<o:p></o:p></p><p class=MsoNormal>  store i8* %"$__lldb_arg", i8** %"$__lldb_arg.addr", align 4<o:p></o:p></p><p class=MsoNormal>  %0 = load i8, i8* @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result", align 1<o:p></o:p></p><p class=MsoNormal>  %guard.uninitialized = icmp eq i8 %0, 0<o:p></o:p></p><p class=MsoNormal>  br i1 %guard.uninitialized, label %init.check, label %init.end<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>init.check:                                       ; preds = %entry<o:p></o:p></p><p class=MsoNormal>  %call = call i32 @factorial(i32 5)<o:p></o:p></p><p class=MsoNormal>  store i32 %call, i32* @"_ZZ12$__lldb_exprPvE19$__lldb_expr_result", align 4<o:p></o:p></p><p class=MsoNormal>  store i8 1, i8* @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result", align 1<o:p></o:p></p><p class=MsoNormal>  br label %init.end<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>init.end:                                         ; preds = %init.check, %entry<o:p></o:p></p><p class=MsoNormal>  ret void<o:p></o:p></p><p class=MsoNormal>}<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Unsupported constant: declare i32 @factorial(i32) #1<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Ted<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>--<o:p></o:p></p><p class=MsoNormal>Qualcomm Innovation Center, Inc.<o:p></o:p></p><p class=MsoNormal>The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>