]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /* |
2 | * Copyright 2014 Andrey Semashev | |
3 | * | |
4 | * Distributed under the Boost Software License, Version 1.0. | |
5 | * See accompanying file LICENSE_1_0.txt or copy at | |
6 | * http://www.boost.org/LICENSE_1_0.txt | |
7 | */ | |
8 | /* | |
9 | * This is a part of the test for a workaround for MSVC 12 (VS2013) optimizer bug | |
10 | * which causes incorrect SIMD code generation for operator==. See: | |
11 | * | |
12 | * https://svn.boost.org/trac/boost/ticket/8509#comment:3 | |
13 | * https://connect.microsoft.com/VisualStudio/feedbackdetail/view/981648#tabs | |
14 | * | |
15 | * The file contains the function that actually causes the crash. Reproduces only | |
16 | * in Release x64 builds. | |
17 | */ | |
18 | #include <cstdio> | |
19 | #include "test_msvc_simd_bug981648.hpp" | |
20 | void mp_grid_update_marker_parameters(headerProperty* header_prop, my_obj ¤t_marker) | |
21 | { | |
22 | headerProperty *old_header_prop = NULL; | |
23 | my_obj *p = dynamic_cast<my_obj*>(header_prop); | |
24 | /* | |
25 | * This != statement crashes with a GP. | |
26 | * */ | |
27 | if (p != NULL && (current_marker.get_id() != p->get_marker_id())) { | |
b32b8144 | 28 | std::printf("works okay, if it reaches this printf: %p\n", reinterpret_cast<void *>(p)); |
7c673cae | 29 | old_header_prop = header_prop; |
b32b8144 | 30 | if (old_header_prop == 0) { fprintf(stderr, "ouch"); } |
7c673cae FG |
31 | } |
32 | } |