This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Jul 30, 2004, at 2:17 PM, Geoffrey Keating wrote:
Fariborz Jahanian <fjahanian@apple.com> writes:
7e.com)
I think the second part of this patch won't work. If you get into rs6000_split_multireg_move with a non-offsettable address, there's no code you can generate. I'll look into this a bit more and come up with a patch.
Second part was added after change in the first part. In the following test case:
static long long foo() { static long long rat; return rat; }
Following pattern is now being generated:
(insn 9 8 10 (set:SI (reg:SI 121)
(plus:SI (reg:SI 31 r31)
(high:SI (const:SI (minus:SI (symbol_ref:SI ("!D__*rat.0") [flags 0x2] <var_decl 0x41757380 rat>)
(symbol_ref:SI ("<pic base>"))))))) -1 (nil)
(nil))
(insn 10 9 11 (set:SI (reg/f:SI 120)
(lo_sum:SI (reg:SI 121)
(const:SI (minus:SI (symbol_ref:SI ("!D__*rat.0") [flags 0x2] <var_decl 0x41757380 rat>)
(symbol_ref:SI ("<pic base>")))))) -1 (nil)
(expr_list:REG_EQUAL (symbol_ref:SI ("!D__*rat.0") [flags 0x2] <var_decl 0x41757380 rat>)
(nil)))
And following code is generated which looks correct to me and works in test case (and bootstrap of gcc):
addis r2,r10,ha16(rat.0-"L00000000001$pb") la r2,lo16(rat.0-"L00000000001$pb")(r2) lfd f0,0(r2)
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |