- LLVM 10/11 support
- Added ObjC type policies for official SDKs (macOS, iPhoneOS, WatchOS, AppleTVOS, + simulators)
- Extract more ObjC type information from debug info
- Strict mode added (
-strict-mode
) - Added warnings for missing debug information and for the missing 'recommended flags'
- CPG emission sped up by tweaking
libzip
options
- C/ObjC string inlining
- Construct correct ObjC type hierarchy across several modules
- ObjC categories now emitted as well
- Methods and namespaces got the FILE property attached
- Lowers/removes exception handling that doesn't play well with Phi-node elimination
- Introduces new command line option "-simplify" that runs some simplifying transformation on the bitcode before generating the CPG
- Type deduplication: equal types from separate modules merged into one
- Debug Info for struct/class members and arguments/local variables
- Correct semantics for the bitcasts
- Correct semantics for the getelemntptr
- String literals now emitted as part of CPG
- Less indirect calls (function pointers casts promoted to the static calls)
- Inline assembly is treated as a static call
- Structs now have (unnamed) members
- ObjC class method call resolution
- Better (demangled) names for C++ methods
- Internal inliner: improves reachability resolution
- ObjC type hierarchy (classes + methods)
- Initial ObjC call trees resolution
- Initial LLVM support: most of the instructions have the right semantics defined
- Initial debug info support: line/column numbers, most of the function and variable names are handled
- Initial data flow support: scalar variables tracked