Issue 031002.1: Where is OP_piece Value Stored?

Author: Andrew Cagney
Champion: Jim Blandy
Date submitted: 2003-10-02
Date revised:
Date closed:
Type: Clarification
Status: Accepted
DWARF Version: 3
Given a location expression that specifies that a "piece" of a value is
in a register, and that "piece" is smaller than the register, where is it?

For instance, the small struct:

        struct small { char c[6]; };

on a 32 bit ISA might reside in the two adjacent registers r2:r3 leading
to a location expression like:

        register r2 piece 4, register r3 piece 2

my question is, where in "r3", are those two bytes?

Sometimes it can be guessed by knowing the ABI - for instance by
assuming "left" or "right" alignment.  However, sometimes the compiler
forgets to follow the ABI :-(

Is there a way of specifying this that doesn't require specific compiler
knowledge?


PROPOSAL:
Add the following:
  "DW_OP_piece on a partial register is implementation defined."