view gcc/testsuite/g++.dg/pr68770.C @ 123:ab229f40eab2

fix inline_call
author mir3636
date Fri, 30 Mar 2018 22:58:55 +0900
parents 04ced10e8804
children
line wrap: on
line source

/* { 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;
}