https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114297
Bug ID: 114297 Summary: Yet more problems with "definition in block does not dominate use in block" Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: dcb314 at hotmail dot com Target Milestone: --- For this C++ code: void __assert_fail(char *, int, const char *) __attribute__((__noreturn__)); template <class T> void max(T, T); template <class T> struct SimpleVector { T array; int num; T *getRef(int i) { num - i ? void() : __assert_fail("", 7, __PRETTY_FUNCTION__); return &array + i; } }; struct Extremes { int minWidth; int maxWidth; }; int forceCalcColumnExtremes_cs; struct Table { SimpleVector<Extremes> colExtremes; void forceCalcColumnExtremes(); }; void Table::forceCalcColumnExtremes() { int minSumCols, maxSumCols; for (int i; i; ++i) { minSumCols += colExtremes.getRef(i)->minWidth; maxSumCols += colExtremes.getRef(i)->maxWidth; } max(forceCalcColumnExtremes_cs, minSumCols); max(forceCalcColumnExtremes_cs, maxSumCols); } compiled by recent gcc trunk, does this: cvise $ ~/gcc/results/bin/g++ -c -w -O3 bug1022.cc cvise $ ~/gcc/results/bin/g++ -c -w -O3 -march=znver3 bug1022.cc bug1022.cc: In member function ‘void Table::forceCalcColumnExtremes()’: bug1022.cc:20:6: error: definition in block 5 does not dominate use in block 3 20 | void Table::forceCalcColumnExtremes() { | ^~~~~ for SSA_NAME: vect_maxSumCols_16.16_76 in statement: vect_maxSumCols_16.16_90 = PHI <vect_maxSumCols_16.16_76(3)> PHI argument vect_maxSumCols_16.16_76 for PHI node vect_maxSumCols_16.16_90 = PHI <vect_maxSumCols_16.16_76(3)> during GIMPLE pass: vect bug1022.cc:20:6: internal compiler error: verify_ssa failed 0x159e432 verify_ssa(bool, bool) ../../trunk.20210101/gcc/tree-ssa.cc:1203 0x1204a9d execute_function_todo ../../trunk.20210101/gcc/passes.cc:2095 The bug first seems to occur sometime between g:71244316cf714725 and g:10cbfcd60f9e5bdb, which is a distance of 43 commits.