Commit a654d5d0 by Jakub Jelinek Committed by Jakub Jelinek

re PR tree-optimization/78148 (r241649 causes -fcompare-debug failure on ppc64le)

	PR target/78148
	* gimple-ssa-store-merging.c
	(imm_store_chain_info::output_merged_store): Use build_aligned_type
	instead of SET_TYPE_ALIGN on shared integral type.

	* gcc.dg/pr78148.c: New test.

From-SVN: r241679
parent 2bc99a1a
2016-10-29 Jakub Jelinek <jakub@redhat.com>
PR target/78148
* gimple-ssa-store-merging.c
(imm_store_chain_info::output_merged_store): Use build_aligned_type
instead of SET_TYPE_ALIGN on shared integral type.
2016-10-29 John David Anglin <danglin@gcc.gnu.org> 2016-10-29 John David Anglin <danglin@gcc.gnu.org>
* config/pa/pa.h (BIGGEST_ALIGNMENT): Adjust comment. * config/pa/pa.h (BIGGEST_ALIGNMENT): Adjust comment.
...@@ -1130,7 +1130,7 @@ imm_store_chain_info::output_merged_store (tree base, merged_store_group *group) ...@@ -1130,7 +1130,7 @@ imm_store_chain_info::output_merged_store (tree base, merged_store_group *group)
location_t loc = get_location_for_stmts (split_store->orig_stmts); location_t loc = get_location_for_stmts (split_store->orig_stmts);
tree int_type = build_nonstandard_integer_type (try_size, UNSIGNED); tree int_type = build_nonstandard_integer_type (try_size, UNSIGNED);
SET_TYPE_ALIGN (int_type, align); int_type = build_aligned_type (int_type, align);
tree addr = build_fold_addr_expr (base); tree addr = build_fold_addr_expr (base);
tree dest = fold_build2 (MEM_REF, int_type, addr, tree dest = fold_build2 (MEM_REF, int_type, addr,
build_int_cst (offset_type, try_pos)); build_int_cst (offset_type, try_pos));
......
2016-10-29 Jakub Jelinek <jakub@redhat.com>
PR target/78148
* gcc.dg/pr78148.c: New test.
2016-10-28 Eric Botcazou <ebotcazou@adacore.com> 2016-10-28 Eric Botcazou <ebotcazou@adacore.com>
* gcc.target/sparc/overflow-3.c: Replace and move old one to... * gcc.target/sparc/overflow-3.c: Replace and move old one to...
......
/* PR target/78148 */
/* { dg-do compile } */
/* { dg-options "-O2 -fcompare-debug" } */
struct A { int a, b; };
struct B { char c, d; };
extern void bar (struct A, struct B);
struct C { char e, f; } a;
struct D
{
int g;
struct C h[4];
};
struct D *e;
struct D
foo (void)
{
int b;
struct B c;
struct A d;
d.b = c.c = c.d = 0;
bar (d, c);
}
void
baz ()
{
e->h[0].e = e->h[0].f = 0;
foo ();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment