// { dg-do compile { target c++11 } } // { dg-options "-Wdangling-reference" } // Reduced from config/aarch64/aarch64-early-ra.cc. template <typename T> struct array_slice { using iterator = T *; iterator begin(); iterator end(); iterator m_base; }; struct allocno_group_info { }; char recog_data_2; int record_constraints_op; struct early_ra { using operand_mask = int; struct allocno_info { int is_earlyclobbered; }; struct allocno_subgroup { array_slice<allocno_info> allocnos(); allocno_group_info *group; }; allocno_subgroup get_allocno_subgroup(int); void record_constraints(); }; void early_ra::record_constraints() { operand_mask earlyclobber_operands, matched_operands, unmatched_operands, matches_operands, op_mask = operand_mask(); auto record_operand = [&](int, int) { operand_mask overlaps; matches_operands |= overlaps; }; for (int opno = 0; recog_data_2; ++opno) { operand_mask op_mask = earlyclobber_operands |= op_mask; if (0) record_operand(1, 0); } if (op_mask || (matched_operands & unmatched_operands && 0)) for (auto &allocno : get_allocno_subgroup(record_constraints_op).allocnos()) allocno.is_earlyclobbered = true; }