expr converts the given LLVM IR expression to a corresponding Go expression.
(expr constant.Expr)
| 143 | |
| 144 | // expr converts the given LLVM IR expression to a corresponding Go expression. |
| 145 | func (d *decompiler) expr(expr constant.Expr) ast.Expr { |
| 146 | switch expr := expr.(type) { |
| 147 | // Binary expressions |
| 148 | case *constant.ExprAdd: |
| 149 | return d.exprAdd(expr) |
| 150 | case *constant.ExprFAdd: |
| 151 | return d.exprFAdd(expr) |
| 152 | case *constant.ExprSub: |
| 153 | return d.exprSub(expr) |
| 154 | case *constant.ExprFSub: |
| 155 | return d.exprFSub(expr) |
| 156 | case *constant.ExprMul: |
| 157 | return d.exprMul(expr) |
| 158 | case *constant.ExprFMul: |
| 159 | return d.exprFMul(expr) |
| 160 | case *constant.ExprUDiv: |
| 161 | return d.exprUDiv(expr) |
| 162 | case *constant.ExprSDiv: |
| 163 | return d.exprSDiv(expr) |
| 164 | case *constant.ExprFDiv: |
| 165 | return d.exprFDiv(expr) |
| 166 | case *constant.ExprURem: |
| 167 | return d.exprURem(expr) |
| 168 | case *constant.ExprSRem: |
| 169 | return d.exprSRem(expr) |
| 170 | case *constant.ExprFRem: |
| 171 | return d.exprFRem(expr) |
| 172 | // Bitwise expressions |
| 173 | case *constant.ExprShl: |
| 174 | return d.exprShl(expr) |
| 175 | case *constant.ExprLShr: |
| 176 | return d.exprLShr(expr) |
| 177 | case *constant.ExprAShr: |
| 178 | return d.exprAShr(expr) |
| 179 | case *constant.ExprAnd: |
| 180 | return d.exprAnd(expr) |
| 181 | case *constant.ExprOr: |
| 182 | return d.exprOr(expr) |
| 183 | case *constant.ExprXor: |
| 184 | return d.exprXor(expr) |
| 185 | // Memory expressions |
| 186 | case *constant.ExprGetElementPtr: |
| 187 | return d.exprGetElementPtr(expr) |
| 188 | // Conversion expressions |
| 189 | case *constant.ExprTrunc: |
| 190 | return d.exprTrunc(expr) |
| 191 | case *constant.ExprZExt: |
| 192 | return d.exprZExt(expr) |
| 193 | case *constant.ExprSExt: |
| 194 | return d.exprSExt(expr) |
| 195 | case *constant.ExprFPTrunc: |
| 196 | return d.exprFPTrunc(expr) |
| 197 | case *constant.ExprFPExt: |
| 198 | return d.exprFPExt(expr) |
| 199 | case *constant.ExprFPToUI: |
| 200 | return d.exprFPToUI(expr) |
| 201 | case *constant.ExprFPToSI: |
| 202 | return d.exprFPToSI(expr) |
no test coverage detected