Fix MYSQL Bug#60057 : sel_arg_range_seq_next loops in optimized compilation/VS2010
When mariadb 5.3 is compiler with VS2010, several tests would enter infinite loop in sel_arg_range_seq_next(). The reason is compiler backend bug. This bug is not present in either VS2008 or VS2010 SP1 RC. Workaround is to compile this function without most aggresive optimization flag (-Og ) using #pragma optimize ("g", {on|off}) for this version of MSVC compiler.
This commit is contained in:
parent
18ad13ef81
commit
fb47a163d4
@ -120,6 +120,14 @@ static void step_down_to(SEL_ARG_RANGE_SEQ *arg, SEL_ARG *key_tree)
|
|||||||
TRUE No more ranges in the sequence
|
TRUE No more ranges in the sequence
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if (_MSC_FULL_VER == 160030319)
|
||||||
|
/*
|
||||||
|
Workaround Visual Studio 2010 RTM compiler backend bug, the function enters
|
||||||
|
infinite loop.
|
||||||
|
*/
|
||||||
|
#pragma optimize("g", off)
|
||||||
|
#endif
|
||||||
|
|
||||||
bool sel_arg_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range)
|
bool sel_arg_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range)
|
||||||
{
|
{
|
||||||
SEL_ARG *key_tree;
|
SEL_ARG *key_tree;
|
||||||
@ -273,6 +281,12 @@ walk_up_n_right:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (_MSC_FULL_VER == 160030319)
|
||||||
|
/* VS2010 compiler bug workaround */
|
||||||
|
#pragma optimize("g", on)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
MRR Range Sequence Interface implementation that walks array<QUICK_RANGE>
|
MRR Range Sequence Interface implementation that walks array<QUICK_RANGE>
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user