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

            Bug ID: 118528
           Summary: [15 Regression] Template argument deduction failure
                    with RAW_DATA_CST
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jakub at gcc dot gnu.org
  Target Milestone: ---

// { dg-do compile { target c++20 } }

template<class T>
struct E { T t[130][2]; };

E e1 {
#embed __FILE__ limit (260)
};

template<class T>
struct F { T t[2][130]; };

F f1 {
#embed __FILE__ limit (260)
};
F f2 { { {
#embed __FILE__ limit (130)
}, {
#embed __FILE__ limit (130)
} } };

FAILs since the introduction of #embed optimizations for C++, while
// { dg-do compile { target c++20 } }

template<class T>
struct E { T t[130][2]; };

#define P 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
#define Q { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 }, { 9, 10 }, { 11, 12 }, \
          { 13, 14 }, { 15, 16 }
E e1 { P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, 1, 2, 3, 4 };
E e2 { { Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, { 1, 2 }, { 3, 4 } }
};

template<class T>
struct F { T t[2][130]; };

F f1 { P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, P, 1, 2, 3, 4 };
F f2 { { { P, P, P, P, P, P, P, P, 1, 2 }, { P, P, P, P, P, P, P, P, 3, 4 } }
};

FAILed from r15-6339 till before r15-6448 and will fail again once r15-6339 is
committed again.

Reply via email to