> Ok. Having dug a bit deeper I think the main problem is that you're
> working against yourself by not handling this pattern right from the
> beginning. You have split the address incorrectly to begin and are
> now trying to recover after the fact.
>
> The following patch seems to do the trick
On 09/10/2012 09:09 AM, Ian Bolton wrote:
>> Can you send me the test case you were looking at for this?
>
> See attached. (Most of it is superfluous, but the point is that
> we are not using the address to do a memory access.)
Ok. Having dug a bit deeper I think the main problem is that you're
> Can you send me the test case you were looking at for this?
See attached. (Most of it is superfluous, but the point is that
we are not using the address to do a memory access.)
Cheers,
Ian
constant-test1.c
Description: Binary data
On 09/06/2012 10:19 AM, Ian Bolton wrote:
> Based on that, and assuming I remove the constraints on the
> pattern, would you say the patch is worthy of commit?
Can you send me the test case you were looking at for this?
r~
> From: Richard Henderson [mailto:r...@redhat.com]
> On 09/06/2012 08:06 AM, Ian Bolton wrote:
> > If I don't use my split pattern, I could alter combine to remove the
> > requirement that parent is a MEM.
> >
> > What do you think?
>
> I merely question the calling out of CONST as special.
>
> E
On 09/06/2012 08:06 AM, Ian Bolton wrote:
> If I don't use my split pattern, I could alter combine to remove the
> requirement that parent is a MEM.
>
> What do you think?
I merely question the calling out of CONST as special.
Either you've got some pattern that handles SYMBOL_REF
the same way,
> On 2012-08-31 07:49, Ian Bolton wrote:
> > +(define_split
> > + [(set (match_operand:DI 0 "register_operand" "=r")
> > + (const:DI (plus:DI (match_operand:DI 1 "aarch64_valid_symref"
> "S")
> > + (match_operand:DI 2 "const_int_operand"
> "i"]
> > + ""
> > + [
On 2012-08-31 07:49, Ian Bolton wrote:
> +(define_split
> + [(set (match_operand:DI 0 "register_operand" "=r")
> + (const:DI (plus:DI (match_operand:DI 1 "aarch64_valid_symref" "S")
> + (match_operand:DI 2 "const_int_operand" "i"]
> + ""
> + [(set (match_dup 0)
Hi,
This patch builds on a previous one that allowed symbol+offset as symbol
references for memory accesses. It allows us to have symbol+offset even
when no memory access is apparent.
It reduces codesize for cases such as this one:
int arr[100];
uint64_t foo (uint64_t a) {
uint64_t con