This is the mail archive of the gcc-bugs@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]

[Bug other/67841] New: Can't use vector registers if all vector registers are callee-saved


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67841

            Bug ID: 67841
           Summary: Can't use vector registers if all vector registers are
                    callee-saved
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: other
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
                CC: julia.koval at intel dot com
            Blocks: 67552
  Target Milestone: ---
            Target: x86

[hjl@gnu-tools-1 interrupt-1]$ cat y.i
typedef float xmm_t __attribute__ ((__vector_size__ (16)));

extern xmm_t x, y;

void
__attribute__((no_caller_saved_registers))
fn (void)
{
  x = __builtin_ia32_addss (x, y);
}
[hjl@gnu-tools-1 interrupt-1]$
/export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -O2  y.i
y.i: In function âfnâ:
y.i:10:1: error: unable to find a register to spill
 }
 ^
y.i:10:1: error: this is the insn:
(insn 6 12 13 2 (set (reg:V4SF 92)
        (vec_merge:V4SF (plus:V4SF (reg:V4SF 92)
                (mem/c:V4SF (symbol_ref:DI ("y") [flags 0x40] <var_decl
0x7fde708f0990 y>) [1 y+0 S16 A128]))
            (reg:V4SF 92)
            (const_int 1 [0x1]))) y.i:9 1410 {sse_vmaddv4sf3}
     (expr_list:REG_EQUIV (mem/c:V4SF (symbol_ref:DI ("x") [flags 0x40]
<var_decl 0x7fde708f0900 x>) [1 x+0 S16 A128])
        (nil)))
y.i:10:1: internal compiler error: in assign_by_spills, at lra-assigns.c:1431
0xceef23 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
        /export/gnu/import/git/sources/gcc/gcc/rtl-error.c:109
0xbb54ba assign_by_spills
        /export/gnu/import/git/sources/gcc/gcc/lra-assigns.c:1431
0xbb5e1d lra_assign()
        /export/gnu/import/git/sources/gcc/gcc/lra-assigns.c:1606
0xbaf6f7 lra(_IO_FILE*)
        /export/gnu/import/git/sources/gcc/gcc/lra.c:2343
0xb5c4f5 do_reload
        /export/gnu/import/git/sources/gcc/gcc/ira.c:5391
0xb5c8a8 execute
        /export/gnu/import/git/sources/gcc/gcc/ira.c:5562
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
[hjl@gnu-tools-1 interrupt-1]$


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67552
[Bug 67552] [meta] x86 interrupt attribute

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]