That indeed helps, thanks! Please review the new patch:
http://repo.or.cz/w/mingw-w64/jacek.git/commitdiff/f7429586bb3289d54e4654f08849161e38ce67a8
Tested on GCC 4.8.1 and trunk.
Jacek
On 07/16/13 15:25, Kai Tietz wrote:
>
> The limitation is fixed for trunk, and gcc 4.8.x
> I committed there a fix for that. It might be interesting if rgat
> change relaxes the other inline-issue too.
>
> Kai
>
> Am 16.07.2013 04:31 schrieb "Jacek Caban" <[email protected]
> <mailto:[email protected]>>:
>
> This seems to be GCC limitation. I experimented a bit and it can't
> inline function if it's also declared as dllimport. That fact, in
> combination with always_inline, causes an error. We may work
> around that by not using always_inlines for those functions and
> being careful to not use dllimport in our headers. See this patch:
>
>
> http://repo.or.cz/w/mingw-w64/jacek.git/commitdiff/fba0f1553846c179a096062d60830ed408104c2e
>
> According to my quick tests with GCC 4.8.1, those calls are
> inlined for every optimization level except -O0 as long as
> dllimport is not declared by like in case like boost. The good
> thing about this patch is that in case of boost, it will use
> (slow) kernel32 calls, but things will work. Better solution would
> require GCC fixes.
>
> BTW, boost may be also interested in avoiding their declaration to
> get better performance (for this stuff this is likely to matter)
> if we decide to commit it.
>
> Cheers,
> Jacek
>
> On 07/16/13 07:21, dw wrote:
>> Arrg! That's not going to work either.
>>
>> You can't inline something (which is what we are doing) AND have
>> it be DLLIMPORT (which is what boost is doing):
>>
>> /error: inlining failed in call to always_inline 'LONG
>> InterlockedExchange(volatile LONG*, LONG)': function not inlinable/
>>
>> This would work if boost didn't have their own copy of the
>> function prototype.
>>
>> Sorry Jacek, I liked your idea of changing this to inlining.
>>
>> Before we surrender, is it worth talking to the boost people? Or
>> should I just change this back to use the DLL?
>>
>> dw
>>
>> On 7/15/2013 6:26 PM, Kai Tietz wrote:
>>>
>>> yeah, Jacek's patch is ok.
>>>
>>> Kai
>>>
>>> Am 15.07.2013 16:06 schrieb "dw" <[email protected]
>>> <mailto:[email protected]>>:
>>>
>>>
>>> >
>>> >> Inline functions are better way for forwarding calls,
>>> esp. in this case.
>>> >
>>> > Ok by me, but shouldn't you do all 6?
>>>
>>> Turns out your prediction of trouble came true faster than
>>> expected.
>>>
>>> Looking at the mass build report, there are a number of
>>> errors that all
>>> map to these stdcall functions. As near as I can make out, what
>>> happened was this:
>>>
>>> Boost duplicated the lines declaring the prototypes for
>>> these functions
>>> (see
>>> http://svn.boost.org/svn/boost/trunk/boost/detail/interlocked.hpp).
>>> They declared these functions as DLLIMPORT.
>>>
>>> Normally not a problem, but when I did "#define
>>> InterlockedExchange
>>> _InterlockedExchange" in winbase, suddenly their code
>>> started looking
>>> for an import named "_imp___InterlockedExchange@8" (note the
>>> triple
>>> underscore) instead of _imp__InterlockedExchange@8 (double
>>> underscore).
>>>
>>> Jacek's proposed patch (if he does all 6 stdcall functions)
>>> should
>>> resolve this problem.
>>>
>>> dw
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> See everything from the browser to the database with AppDynamics
>>> Get end-to-end visibility with application monitoring from
>>> AppDynamics
>>> Isolate bottlenecks and diagnose root cause in seconds.
>>> Start your free trial of AppDynamics Pro today!
>>>
>>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>>> _______________________________________________
>>> Mingw-w64-public mailing list
>>> [email protected]
>>> <mailto:[email protected]>
>>> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
>>>
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> See everything from the browser to the database with AppDynamics
>>> Get end-to-end visibility with application monitoring from AppDynamics
>>> Isolate bottlenecks and diagnose root cause in seconds.
>>> Start your free trial of AppDynamics Pro today!
>>>
>>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>>>
>>>
>>> _______________________________________________
>>> Mingw-w64-public mailing list
>>> [email protected]
>>> <mailto:[email protected]>
>>> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> See everything from the browser to the database with AppDynamics
>> Get end-to-end visibility with application monitoring from AppDynamics
>> Isolate bottlenecks and diagnose root cause in seconds.
>> Start your free trial of AppDynamics Pro today!
>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>>
>>
>> _______________________________________________
>> Mingw-w64-public mailing list
>> [email protected]
>> <mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
>
>
>
> ------------------------------------------------------------------------------
> See everything from the browser to the database with AppDynamics
> Get end-to-end visibility with application monitoring from AppDynamics
> Isolate bottlenecks and diagnose root cause in seconds.
> Start your free trial of AppDynamics Pro today!
>
> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
> _______________________________________________
> Mingw-w64-public mailing list
> [email protected]
> <mailto:[email protected]>
> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
>
>
>
> ------------------------------------------------------------------------------
> See everything from the browser to the database with AppDynamics
> Get end-to-end visibility with application monitoring from AppDynamics
> Isolate bottlenecks and diagnose root cause in seconds.
> Start your free trial of AppDynamics Pro today!
> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>
>
> _______________________________________________
> Mingw-w64-public mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public