“…It is not surprising that many tools that process C code or associated intermediate languages (such as LLVM IR [38] and CIL [45]) partially or entirely lack support for inline assembly. For example, many bug-inding tools (e.g., the Clang Static Analyzer [70], splint [18,19,63], Frama-C [69], uno [26], and the LLVM sanitizers [55,58]), tools for source translation (e.g., c2go [44]), semantic models for C [36,43], and alternative execution environments such as Sulong [51±53] and Klee [12] still lack support for inline assembly, provide only partial support, or overapproximate it (e.g., by analyzing only the side efects speciied as part of the fragment), which can lead to imprecise analyses or missed optimization opportunities. How to provide better support depends on the tool, for example, in Sulong, adding support for assembly instructions requires emulating their behavior in Java, while support in a formal model would require specifying the instructions in a language such as Coq.…”