[clang-cl] Handle -O correctly
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 27 Jul 2015 07:32:11 +0000 (07:32 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 27 Jul 2015 07:32:11 +0000 (07:32 +0000)
commit015ce0f68f791b3abec4225c1b2e532ce5020174
tree7b755798a643c838a8f3e25bbbf175715ed04018
parenta96ffd5337191d0862c236e27801aafb6fbc4a9b
[clang-cl] Handle -O correctly

We had multiple bugs here:
- We didn't support multiple optimization options in one argument.
  e.g. -O2y-
- We didn't correctly expand -O[12dx] to their respective options.
- We treated -O1 as clang -O1 instead of clang -Os.
- We treated -Ox as clang -O3 instead of clang -O2.  In fact, cl's -Ox
  option is *less* powerful than cl's -O2 option despite -Ox described
  as "Full Optimization".

This fixes PR24003.

llvm-svn: 243261
clang/include/clang/Driver/CLCompatOptions.td
clang/lib/Driver/MSVCToolChain.cpp
clang/lib/Driver/ToolChains.h
clang/lib/Driver/Tools.cpp
clang/test/Driver/cl-fallback.c
clang/test/Driver/cl-options.c