The manual says that the first argument of a TARGET_MEM_REF

  "is @code{TMR_SYMBOL} and must be a @code{VAR_DECL} of an object
  with a fixed address."

The TARGET_MEM_REF below has as its first argument an ADDR_EXPR
and not a VAR_DECL as the manual claims.  The code I looked at
seems to be prepared for the first argument to be pretty much
any address, including an SSA_NAME.  What should the manual be
updated to, to make it accurate?

The description also says:

  The second argument is @code{TMR_BASE} and the third one is
  @code{TMR_INDEX}.

and gives the formula below to compute its address:

  &TMR_SYMBOL + TMR_BASE + TMR_INDEX * TMR_STEP + TMR_OFFSET

The second argument of my TARGET_MEM_REF is a pointer and not
something I'd expect to see added to the address of something.
Is the second argument meant to have a dual purpose like in
a MEM_REF?

Thanks
Martin


 <target_mem_ref 0x7fffe400f440
    type <pointer_type 0x7fffe5197738
type <pointer_type 0x7fffe7c0fe70 tree type <union_type 0x7fffe7c0fd20 tree_node>
            sizes-gimplified public unsigned type_6 DI
            size <integer_cst 0x7fffea7f5f48 constant 64>
            unit-size <integer_cst 0x7fffea7f5f60 constant 8>
align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7fffe7c0fdc8 pointer_to_this <pointer_type 0x7fffe706e888> reference_to_this <reference_type 0x7fffe75b3b28>> readonly sizes-gimplified unsigned DI size <integer_cst 0x7fffea7f5f48 64> unit-size <integer_cst 0x7fffea7f5f60 8> user align:128 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7fffe6836dc8>
    readonly
    arg:0 <addr_expr 0x7fffe63dfd60
        type <pointer_type 0x7fffe4b2d540 type <array_type 0x7fffe6836348>
public unsigned DI size <integer_cst 0x7fffea7f5f48 64> unit-size <integer_cst 0x7fffea7f5f60 8> align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7fffe4b2d540>
        readonly constant
arg:0 <var_decl 0x7fffe6838e10 fname_vars type <array_type 0x7fffe6836348> readonly used static tree_1 tree_2 tree_6 read decl_5 decl_6 BLK /src/gcc/trunk/gcc/c-family/c-common.c:301:26
            size <integer_cst 0x7fffea634240 constant 512>
            unit-size <integer_cst 0x7fffe90db720 constant 64>
align:256 warn_if_not_align:0 context <translation_unit_decl 0x7fffea803168 /build/tmp/c-common.ii> initial <constructor 0x7fffe9614e88> chain <type_decl 0x7fffe6833a18 fname_var_t>>> arg:1 <integer_cst 0x7fffe480ce70 type <pointer_type 0x7fffe666a3f0> constant 0>
    arg:2 <ssa_name 0x7fffe559a240
type <integer_type 0x7fffea815000 sizetype public unsigned type_6 DI size <integer_cst 0x7fffea7f5f48 64> unit-size <integer_cst 0x7fffea7f5f60 8> align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7fffea815000 precision:64 min <integer_cst 0x7fffea7f5f78 0> max <integer_cst 0x7fffea7f65c0 18446744073709551615>>
        visited
        def_stmt _6 = ivtmp.4177_35 * 16;
        version:6
        ptr-info 0x7fffe63de020>>

Reply via email to