Re: [pcre-dev] [Bug 1180] New: Visual Studio 2010 x64 wanrin…

Top Page
Delete this message
Author: Graycode
Date:  
To: pcre-dev
Subject: Re: [pcre-dev] [Bug 1180] New: Visual Studio 2010 x64 wanrings
I tried to reply to the bug report but that email got rejected.
Someone with authority might (or might not) choose to mention any
applicable part of this on http://bugs.exim.org/show_bug.cgi?id=1180

There may not be very many MSVC developers lurking here. I am one but
I don't use x64 or the 2010 version.

I've scanned through a few of the warnings that were posted and didn't
spot anything particularly noteworthy. The C4267 warnings may require
more insight than C4244 because in MSVC x64 the sizeof(size_t) is 8
while sizeof(int) and sizeof(long) are still 4.

You're probably aware that x64 may present some stack size issues that
you wouldn't encounter in x86 32-bit. I think the default stack size
for x64 in MSVC is still 1 MB though it will be eaten much quicker.

Also be careful of the stack when using a version built for debug.
Disabling optimization with /Od may have a profound impact on stack
requirements. I've seen the recursive PCRE match() function use much
more than twice its normal stack with /Od vs. having /O1 or /O2. It's
not unique to PCRE, it may be the way MSVC initially assigns default
alignment.

Seeing a "clean" compile in MSVC x64 is probably not going to happen
without a lot of code changes to cast things that might otherwise be
immaterial. For now if you can't live with those particular warnings
then you can disable them or reassign them to a different warning
level category by adding something to your PCRE config.h.

   #if defined(_MSC_VER) && defined(_M_X64)
      #pragma warning( disable: 4244 )
      #pragma warning( disable: 4267 )
   #endif



MSVC References:
Stack Size = http://msdn.microsoft.com/en-us/library/8cxs58a6.aspx
Predefined Macros = http://msdn.microsoft.com/en-us/library/b0084kay.aspx
Pragma warning = http://msdn.microsoft.com/en-us/library/2c8f766e.aspx
C4267 size_t = http://msdn.microsoft.com/en-us/library/6kck0s93.aspx

Regards,
Graycode