Diego, a bit more info.  It seems that gimplify_operand
is being called in the rewrite_uses pass of 
tree-ssa-loop-ivopts.c.  gimplify_operand() is working
on this expr:

 <plus_expr 0x2aaaae0ee5f0
    type <integer_type 0x2aaaaded5600 unsigned int public unsigned SI
        size <integer_cst 0x2aaaadec5c00 constant invariant 32>
        unit size <integer_cst 0x2aaaadec5720 constant invariant 4>
        align 32 symtab 0 alias set -1 precision 32 min <integer_cst 
0x2aaaadec5cf0 0> max <integer_cst 0x2aaaadec5cc0 4294967295>>
    constant invariant
    arg 0 <nop_expr 0x2aaaae0eda80 type <integer_type 0x2aaaaded5600 unsigned 
int>
        constant invariant
        arg 0 <view_convert_expr 0x2aaaae0edb80 type <pointer_type 
0x2aaaae0d6300>
            constant static
            arg 0 <constructor 0x2aaaae0e9a80 type <record_type 0x2aaaadf6ea80 
upc_shared_ptr_t>
                constant>>>
    arg 1 <integer_cst 0x2aaaae0e9900 type <integer_type 0x2aaaaded5600 
unsigned int> constant invari

As you can can see, we coerce a constructor into a UPC shared pointer,
which works something like a pointer, but it is not inter-operable directly
with integers.  Typically, we have to locate the places where these sorts
of optimizations are attempted and disable them for UPC shared pointers.

Thanks for you help.  It got me pointed in the right direction.

  - Gary

Reply via email to