| /* { dg-do compile } */ |
| /* { dg-options "-O2" } */ |
| /* This test used to trigger the use of an uninitialised field (t_icode) |
| in the secondary_reload_info structure created in ira-costs.c:copy_cost(). |
| Unfortunately the test only generates a problem if run under valgrind... */ |
| typedef unsigned long int uint64_t; |
| |
| namespace __gnu_parallel |
| { |
| enum _AlgorithmStrategy { heuristic, force_sequential, force_parallel }; |
| enum _SortAlgorithm { MWMS, QS, QS_BALANCED }; |
| enum _MultiwayMergeAlgorithm { LOSER_TREE }; |
| enum _PartialSumAlgorithm { RECURSIVE, LINEAR }; |
| enum _SplittingAlgorithm { SAMPLING, EXACT }; |
| enum _FindAlgorithm { GROWING_BLOCKS, CONSTANT_SIZE_BLOCKS, EQUAL_SPLIT }; |
| typedef uint64_t _SequenceIndex; |
| struct _Settings |
| { |
| _AlgorithmStrategy algorithm_strategy; |
| _SortAlgorithm sort_algorithm; |
| _PartialSumAlgorithm partial_sum_algorithm; |
| _MultiwayMergeAlgorithm multiway_merge_algorithm; |
| _FindAlgorithm find_algorithm; |
| _SplittingAlgorithm sort_splitting; |
| _SplittingAlgorithm merge_splitting; |
| _SplittingAlgorithm multiway_merge_splitting; |
| _SequenceIndex accumulate_minimal_n; |
| unsigned int adjacent_difference_minimal_n; |
| _SequenceIndex count_minimal_n; |
| _SequenceIndex fill_minimal_n; |
| double find_increasing_factor; |
| _SequenceIndex find_initial_block_size; |
| _SequenceIndex find_maximum_block_size; |
| _SequenceIndex find_sequential_search_size; |
| _SequenceIndex for_each_minimal_n; |
| _SequenceIndex generate_minimal_n; |
| _SequenceIndex max_element_minimal_n; |
| _SequenceIndex merge_minimal_n; |
| unsigned int merge_oversampling; |
| _SequenceIndex min_element_minimal_n; |
| _SequenceIndex multiway_merge_minimal_n; |
| int multiway_merge_minimal_k; |
| unsigned int multiway_merge_oversampling; |
| _SequenceIndex nth_element_minimal_n; |
| _SequenceIndex partition_chunk_size; |
| double partition_chunk_share; |
| _SequenceIndex partition_minimal_n; |
| _SequenceIndex partial_sort_minimal_n; |
| float partial_sum_dilation; |
| unsigned int partial_sum_minimal_n; |
| float find_scale_factor; |
| |
| explicit _Settings() : |
| algorithm_strategy(heuristic), |
| sort_algorithm(MWMS), |
| partial_sum_algorithm(LINEAR), |
| multiway_merge_algorithm(LOSER_TREE), |
| find_algorithm(CONSTANT_SIZE_BLOCKS), |
| sort_splitting(EXACT), |
| merge_splitting(EXACT), |
| multiway_merge_splitting(EXACT), |
| accumulate_minimal_n(1000), |
| adjacent_difference_minimal_n(1000), |
| count_minimal_n(1000), |
| fill_minimal_n(1000), |
| find_increasing_factor(2.0), |
| find_initial_block_size(256), |
| find_maximum_block_size(8192), |
| find_sequential_search_size(256), |
| for_each_minimal_n(1000), |
| generate_minimal_n(1000), |
| max_element_minimal_n(1000), |
| merge_minimal_n(1000), |
| merge_oversampling(10), |
| min_element_minimal_n(1000), |
| multiway_merge_minimal_n(1000), |
| multiway_merge_minimal_k(2), |
| multiway_merge_oversampling(10), |
| nth_element_minimal_n(1000), |
| partition_chunk_size(1000), |
| partition_chunk_share(0.0), |
| partition_minimal_n(1000), |
| partial_sort_minimal_n(1000), |
| partial_sum_dilation(1.0f), |
| partial_sum_minimal_n(1000), |
| find_scale_factor(0.01f) |
| { } |
| }; |
| } |
| |
| namespace |
| { |
| __gnu_parallel::_Settings s; |
| } |
| |