* If the user provided a command, don't try to use the autodetected command
as well. The fixes errors caused by passing too many arguments.
* If the user provided a command, but not a version, try to detect the
version from the command. This code already existed, but was useless
because it was run too late. It also failed for 14.1+ because of
incorrect escaping for MATCH.
* When handling duplicate initialization, make sure that we compare
the original user options to the new user options. Previously, we
compated the new user options to the auto-detected command which
makes no sense at all.
* If the user specified a command, always search for it in PATH, instead
of also searching version specific locations.
- Fix copy/paste in the environmental variables.
- If vswhere exists, but doesn't find a given version, exit
detection early and don't fall back on checking the environment.
- Clean up hackish vswhere handling.
This avoids warnings=all and warnings-as-errors=on causing irreprerable
damage to humans. And makes it possible to have more warnings without
destorying the universe.
fixes#394
As listed in issue #367, PTH is/was an undocumented experimental feature of
clang that is considered 'failed' and is currently being removed from
the next version of clang. Additionally, there is a bug in the
implementation of PTH in clang that results in severe miscompilation of
code using about 1/3 of the available tokens.
This patch replaces PTH with PCH, which completely subsumes PTH's
functionality. Additionally, PCH mode on clang should now be faster as a
result.
For edification: The difference between PTH and PCH is which step the
compiler stops to save to the binary file. PTH was intended to execute
after the preprocessor has executed and commits the token list to the
binary file. PCH will go through semantic analysis and commit the AST
to the binary file.
local-visibility is intended to be used by libraries or targets that require
a particular visibility mode. It is not propagated to dependencies. It is
equivalent to the previous visibility feature.
The new visibility feature is a composite propagated feature, so it can be
specified by users and higher level targets as a requirement. This feature is
translated to local-visibility.
The new visibility feature can be used to specify default symbol visibility
on compilers and platforms that support it. The default visibility is
global, which matches most compilers' defaults. In gcc documentation it is
called the "default" visibility. Other modes are: protected and hidden.