Return value of dyn_cast_or_null should be checked before use. Otherwise we may put a null pointer into the map as a key and eventually crash in checkDeadSymbols.
Reka: Why did we restrict ourselves to TypedValueRegions here? While we are mostly interested in local string variables and temporaries, which would of course be typed, i guess there's nothing that prevents us from checking that we don't delete or mutate a string in a SymbolicRegion somewhere between obtaining and using its inner pointer.