re PR middle-end/39573 (Linking fails on AMD with -march=native and -fopenmp, works with generic x86_64)
PR middle-end/39573 * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls variables. * libgomp.c++/pr39573.C: New test. From-SVN: r145772
This commit is contained in:
parent
dead0bae53
commit
4f0ae266e0
|
@ -5,6 +5,10 @@
|
||||||
(gen_variable_die): Use DW_TAG_member tag for static data member
|
(gen_variable_die): Use DW_TAG_member tag for static data member
|
||||||
declarations instead of DW_TAG_variable.
|
declarations instead of DW_TAG_variable.
|
||||||
|
|
||||||
|
PR middle-end/39573
|
||||||
|
* omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
|
||||||
|
variables.
|
||||||
|
|
||||||
2009-04-08 Richard Guenther <rguenther@suse.de>
|
2009-04-08 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
* tree-ssa-sccvn.c (valueize_refs): Do not continue to
|
* tree-ssa-sccvn.c (valueize_refs): Do not continue to
|
||||||
|
|
|
@ -3412,6 +3412,14 @@ expand_omp_taskreg (struct omp_region *region)
|
||||||
/* Declare local variables needed in CHILD_CFUN. */
|
/* Declare local variables needed in CHILD_CFUN. */
|
||||||
block = DECL_INITIAL (child_fn);
|
block = DECL_INITIAL (child_fn);
|
||||||
BLOCK_VARS (block) = list2chain (child_cfun->local_decls);
|
BLOCK_VARS (block) = list2chain (child_cfun->local_decls);
|
||||||
|
/* The gimplifier could record temporaries in parallel/task block
|
||||||
|
rather than in containing function's local_decls chain,
|
||||||
|
which would mean cgraph missed finalizing them. Do it now. */
|
||||||
|
for (t = BLOCK_VARS (block); t; t = TREE_CHAIN (t))
|
||||||
|
if (TREE_CODE (t) == VAR_DECL
|
||||||
|
&& TREE_STATIC (t)
|
||||||
|
&& !DECL_EXTERNAL (t))
|
||||||
|
varpool_finalize_decl (t);
|
||||||
DECL_SAVED_TREE (child_fn) = NULL;
|
DECL_SAVED_TREE (child_fn) = NULL;
|
||||||
gimple_set_body (child_fn, bb_seq (single_succ (entry_bb)));
|
gimple_set_body (child_fn, bb_seq (single_succ (entry_bb)));
|
||||||
TREE_USED (block) = 1;
|
TREE_USED (block) = 1;
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2009-04-08 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR middle-end/39573
|
||||||
|
* libgomp.c++/pr39573.C: New test.
|
||||||
|
|
||||||
2009-04-01 Jakub Jelinek <jakub@redhat.com>
|
2009-04-01 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR other/39591
|
PR other/39591
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
// PR middle-end/39573
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
|
int z;
|
||||||
|
|
||||||
|
void __attribute__((noinline))
|
||||||
|
bar (int *x)
|
||||||
|
{
|
||||||
|
#pragma omp atomic
|
||||||
|
z += x[2];
|
||||||
|
x[2] += x[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
#pragma omp parallel for
|
||||||
|
for (i = 0; i < 65536; i++)
|
||||||
|
{
|
||||||
|
int x[] =
|
||||||
|
{
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
|
||||||
|
};
|
||||||
|
bar (x);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue