mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-14 08:00:27 +08:00
re PR tree-optimization/66768 (address space gets lost on literal pointer)
PR tree-optimization/66768 * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr iv_use if base object can't be determined. gcc/testsuite * gcc.target/i386/pr66768.c: New test. From-SVN: r245837
This commit is contained in:
parent
6d03bdcc81
commit
653a4b32fe
@ -1,3 +1,9 @@
|
||||
2017-03-02 Bin Cheng <bin.cheng@arm.com>
|
||||
|
||||
PR tree-optimization/66768
|
||||
* tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr
|
||||
iv_use if base object can't be determined.
|
||||
|
||||
2017-03-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/79345
|
||||
|
@ -1,3 +1,8 @@
|
||||
2017-03-02 Bin Cheng <bin.cheng@arm.com>
|
||||
|
||||
PR tree-optimization/66768
|
||||
* gcc.target/i386/pr66768.c: New test.
|
||||
|
||||
2017-03-02 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* gcc.dg/rtl/x86_64/dfinit.c: Only run for lp64.
|
||||
|
17
gcc/testsuite/gcc.target/i386/pr66768.c
Normal file
17
gcc/testsuite/gcc.target/i386/pr66768.c
Normal file
@ -0,0 +1,17 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2" } */
|
||||
|
||||
typedef __seg_gs struct foo_s {
|
||||
int a[20];
|
||||
} foo_t;
|
||||
|
||||
int sum(void)
|
||||
{
|
||||
const foo_t *p = (const foo_t *)0x1234;
|
||||
int i, total=0;
|
||||
for (i=0; i<20; i++)
|
||||
total += p->a[i];
|
||||
return total;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler "add*.\[ \t\]%gs:" } } */
|
@ -2324,6 +2324,10 @@ find_interesting_uses_address (struct ivopts_data *data, gimple *stmt,
|
||||
}
|
||||
|
||||
civ = alloc_iv (data, base, step);
|
||||
/* Fail if base object of this memory reference is unknown. */
|
||||
if (civ->base_object == NULL_TREE)
|
||||
goto fail;
|
||||
|
||||
record_group_use (data, op_p, civ, stmt, USE_ADDRESS);
|
||||
return;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user