Hi Matt, On Mon, Nov 16, 2015 at 1:30 AM, Matt Wilmas <php_li...@realplain.com> wrote:
> Hi Dmitry, Anatol, Pierre (etc.), and all, > > I'm back now, I think, after a much longer (unintentional) break than I > expected. Be coming very soon with what I was doing in the summer (param > parsing stuff) -- *now* it works with MSVC too, barring any fragility, as I > accidentally discovered last month... > > I've been "discovering" a lot with the wacky Visual Studio compiler! :-) > This message is about the 2 I found today. > > The first simple thing was probably just overlooked, but noticed it while > looking up __declspec. zend_never_inline has always been empty (I guess) > for MSVC, but there's actually a __declspec(noinline) that can be used (and > works as expected). A simple and obvious change to bring it in line with > the other compilers? > Please, provide a patch for zend_portability.h > The second "issue" is with the zend_always_inline functions, I noticed > this summer. Did anyone else know that MSVC leaves a *copy* of those > functions in the output files (DLLs)? What's the point of that? When > they've been inlined, and not referenced otherwise, there should be no > reason to emit code for a standalone function! > > I remembered after seeing that behavior that a bit of my own > __forceinline'd code did NOT have extra function code, but forgot to > investigate until today. What's different about my function definition? > No "static" specifier! So that's the key. :-) > > But... non-static would create duplicate symbols, I thought. But no, it > works! With just __forceinline, there's no errors. :^) > > Can something be done about this? It would cut the binary size down a > bit. A zend_static macro to be used with zend_always_inline...? > zend_always inline should be always used with static keyword. Thanks. Dmitry. > > Note: I didn't compile PHP, just quick standalone tests to check that > "noinline" works, no useless functions, and no link error. Both VS 2008 & > 2015 (same results). > > Thoughts? > > > Thanks, > Matt >