http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60387

--- Comment #2 from Nistor, Mihail-Marian <m_nistor at yahoo dot com> ---
More details about how to reproduce the first problem. 
By using the gcc version - GNU C 4.8.1 20130531 (Wed Sep 4 08:04:01 CDT 2013)
I have defined a local variable (vf1) that has a vector resister as storage
class, the C definition is below:
register vector float vf1 = {0.1f, 0.2f, 0.3f, 0.4f};
A piece of dump from .debug_info is below: 
<2><24f>: Abbrev Number: 7 (DW_TAG_variable)
    <250>   DW_AT_name        : vf1    
    <254>   DW_AT_decl_file   : 1    
    <255>   DW_AT_decl_line   : 13    
    <256>   DW_AT_type        : <0x2ee>    
    <25a>   DW_AT_location    : 2 byte block: 90 64     (DW_OP_regx: 100
(r100)) // the correct expression should be: (DW_OP_regx: 1124 (r1124))
A piece of dump from .debug_frame is below:
000000d0 00000034 000000c0 FDE cie=000000c0 pc=0010018c..001002fc
  DW_CFA_advance_loc: 4 to 00100190
  DW_CFA_def_cfa_offset: 192
  DW_CFA_advance_loc: 84 to 001001e4
  DW_CFA_offset_extended_sf: r65 at cfa+4
  DW_CFA_offset: r31 at cfa-4
  DW_CFA_offset_extended: r100 at cfa-160 // the correct expression should be:
r1124 at cfa-160

As you can see, the compiler uses a wrong DWARF register index for vector
register, in this case the compiler should generate  1124 (r1124) instead of
100 (r100), so the ppc gcc compiler is not compatible with the PPC ABI. 

Please let me know if you need more information to reproduce the second
problem.

Reply via email to