sync with upstream: c89 support, win32 support, more detection, less false postives