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

            Bug ID: 110712
           Summary: d: ICE: verify_gimple_failed (conversion of register
                    to a different size in 'view_convert_expr')
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: d
          Assignee: ibuclaw at gdcproject dot org
          Reporter: ibuclaw at gdcproject dot org
  Target Milestone: ---

Seen with gdc-12 with --enable-checking turned on, assume that it's going to
still be the case with mainline.

d21: error: conversion of register to a different size in ‘view_convert_expr’
VIEW_CONVERT_EXPR<struct [1]>(ap_3(D));

# .MEM_4 = VDEF <.MEM_1(D)>
this_2(D)->ap = VIEW_CONVERT_EXPR<struct [1]>(ap_3(D));
during GIMPLE pass: ssa
d21: internal compiler error: verify_gimple failed
0x11aad62 verify_gimple_in_cfg(function*, bool)
        ../../gcc/tree-cfg.cc:5561
0x1073dae execute_function_todo
        ../../gcc/passes.cc:2085
0x107431a execute_todo
        ../../gcc/passes.cc:2139

---

import gcc.builtins : va_list = __builtin_va_list;
struct S
{
    this(va_list ap)
    {
        this.ap = ap;
    }
    va_list ap;
}

---

Assigning a va_list parameter (static array saturated to a pointer on x86_64)
to a field (static array on x86_64) fails miserably to pass tree checks.

Reply via email to