Status of compiling on MSVC < 2012

As the title suggests, what is the status of compiling llvm on versions of MSVC less than 2012? Not so much “Does it work?”, but more like “Should any thought be given to whether or not something will break it?”

Right now there are a bunch of warnings when compiling LLDB on Windows because it uses various symbols which have been defined since VS2012, but which are re-defined in llvm support header files. In the process of addressing this, I noticed in include\llvm\Support[DataTypes.h.in](http://DataTypes.h.in) that it redefines a bunch of other stuff as well from stdint.h and inttypes.h with a comment about how these definitions were only added in certain updates to VC++. However, this was an update to MSVC 2010 if my memory serves me correctly, so if it’s not necessary to support 2010, then I can clean up some of the stuff in this header at the same time that I’m fixing the warnings.

Zach

Also, this question arises from the fact that the documentation (http://llvm.org/docs/GettingStartedVS.html#id5) explicitly states that 2012 is required.

Zachary Turner wrote:

As the title suggests, what is the status of compiling llvm on versions
of MSVC less than 2012? Not so much "Does it work?", but more like
"Should any thought be given to whether or not something will break it?"

No. See http://llvm.org/docs/CodingStandards.html#supported-c-11-language-and-library-features where we state that the minimum versions are MSVC 2012, GCC 4.7 and Clang 3.1.

Right now there are a bunch of warnings when compiling LLDB on Windows
because it uses various symbols which have been defined since VS2012,
but which are re-defined in llvm support header files. In the process
of addressing this, I noticed in include\llvm\Support\DataTypes.h.in
that it redefines a bunch of other stuff as well
from stdint.h and inttypes.h with a comment about how these definitions
were only added in certain updates to VC++. However, this was an update
to MSVC 2010 if my memory serves me correctly, so if it's not necessary
to support 2010, then I can clean up some of the stuff in this header at
the same time that I'm fixing the warnings.

Cleaning up code sounds great!

Nick

Thanks, the last actual list discussion I could find was one that mentioned dropping support for 2008, but that was only about a year ago, and the discussion seemed controversial, so I wasn’t sure. I’ll double check that the definitions are present in a vanilla install of 2012, and if they are I will remove them from the llvm header.