re PR target/68770 (Conditional jump or move depends on uninitialised value(s) default_secondary_reload() targhooks.c:940)
PR target/68770 * ira-costs.c (copy_cost): Initialise the t_icode field of the secondary_reload_info structure. tests: * g++.dg/pr68770.C: New test. From-SVN: r232072
This commit is contained in:
parent
3360dc9fc2
commit
a2faef8e06
|
@ -1,5 +1,9 @@
|
||||||
2016-01-05 Nick Clifton <nickc@redhat.com>
|
2016-01-05 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
PR target/68770
|
||||||
|
* ira-costs.c (copy_cost): Initialise the t_icode field of the
|
||||||
|
secondary_reload_info structure.
|
||||||
|
|
||||||
PR target/66655
|
PR target/66655
|
||||||
* config/i386/cygming.h (MAKE_DECL_ONE_ONLY): Define to use weak
|
* config/i386/cygming.h (MAKE_DECL_ONE_ONLY): Define to use weak
|
||||||
decls if weak support is available.
|
decls if weak support is available.
|
||||||
|
|
|
@ -442,6 +442,9 @@ copy_cost (rtx x, machine_mode mode, reg_class_t rclass, bool to_p,
|
||||||
copy it. */
|
copy it. */
|
||||||
sri.prev_sri = prev_sri;
|
sri.prev_sri = prev_sri;
|
||||||
sri.extra_cost = 0;
|
sri.extra_cost = 0;
|
||||||
|
/* PR 68770: Secondary reload might examine the t_icode field. */
|
||||||
|
sri.t_icode = CODE_FOR_nothing;
|
||||||
|
|
||||||
secondary_class = targetm.secondary_reload (to_p, x, rclass, mode, &sri);
|
secondary_class = targetm.secondary_reload (to_p, x, rclass, mode, &sri);
|
||||||
|
|
||||||
if (secondary_class != NO_REGS)
|
if (secondary_class != NO_REGS)
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-01-05 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
PR target/68870
|
||||||
|
* g++.dg/pr68770.C: New test.
|
||||||
|
|
||||||
2016-01-04 Mike Stump <mikestump@comcast.net>
|
2016-01-04 Mike Stump <mikestump@comcast.net>
|
||||||
|
|
||||||
* lib/target-supports.exp (check_effective_target_cilkplus):
|
* lib/target-supports.exp (check_effective_target_cilkplus):
|
||||||
|
|
|
@ -0,0 +1,95 @@
|
||||||
|
/* { 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;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue