Skip to content

Move intrinsic calls outside of the BIL plugin #1362

Open
@fortunac

Description

@fortunac

Right now, it is the BIL plugin's job to turn unsupported instructions into intrinsic calls, but this will break when working on targets that don't fully rely on the BIL lifter. When the --bil-enable-intrinsic option is set, the BIL plugin will provide it's own semantics even though the instruction is properly handled by other lifters. This leads to a conflict. (e.g. the BIL will provide call llvm-thumb:ADDrr while the other lifters would provide R0 := R1 + R2.

This feature should be handled on the BIR side where it drops empty instructions. Rather than dropping these instructions, the right approach would be to represent these empty instructions as a separate blk in the BIR. See:

| [],xs | xs,[] -> xs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions