Daily bump.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1021d35..5d1d60b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog
@@ -1,3 +1,531 @@ +2026-11-13 John David Anglin <danglin@gcc.gnu.org> + + PR target/127142 + * config/pa/pa.cc (pa_preferred_reload_class): New function. + (TARGET_PREFERRED_RELOAD_CLASS): Define. + (hppa_register_move_cost): Set cost to 2 for moves between + R1_REGS and GENERAL_REGS, and 8 for moves between + GENERAL_REGS/R1_REGS and FP_REGS. + (pa_secondary_reload): Remove redundant sri->icode assignment. + (pa_spill_class): Return GENERAL_REGS when spilling R1_REGS. + * config/pa/pa.md: Merge 32-bit and 64-bit PIC label address + patterns into a single Pmode define_insn, fix %r1 operand in + addil sequences, and add a disparaged 'r' alternative. + Add disparaged 'r' alternatives to 32-bit and 64-bit PIC HIGH + patterns. Split 32-bit non-PIC HIGH pattern into + TARGET_LONG_LOAD_STORE and !TARGET_LONG_LOAD_STORE patterns with + disparaged 'r' alternatives. Add define_peephole2 patterns to + use %r1 for HIGH and PIC label loads when %r1 is dead. + (call_symref, call_symref_pic, call_symref_pic_post_reload) + (call_symref_64bit, call_symref_64bit_post_reload, call_reg) + (call_reg_pic, call_reg_pic_post_reload, call_value_symref) + (call_value_symref_pic, call_value_symref_pic_post_reload) + (call_value_symref_64bit, call_value_symref_64bit_post_reload) + (call_value_reg, call_value_reg_pic, call_value_reg_pic_post_reload) + (sibcall_internal_symref, sibcall_internal_symref_64bit) + (sibcall_value_internal_symref, sibcall_value_internal_symref_64bit): + Remove (clobber (reg 1)) and update corresponding define_splits. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (ANALYZER_OBJS): Add analyzer/initializers.o, + analyzer/string-scan.o, analyzer/symbolic-bit-contents.o, + analyzer/symbolic-bit-vectors.o, + analyzer/symbolic-memory-ranges.o, analyzer/symbolic-pointers.o, + analyzer/symbolic-ranges.o, and analyzer/symbolic-scalars.o. + Remove analyzer/ranges.o. + * custom-sarif-properties/state-graphs.cc (node::num_bits): + Convert from json::string_property to json::json_property. + * custom-sarif-properties/state-graphs.h (node::num_bits): + Likewise. + * diagnostics/color.cc (gcc_color_defaults): Add entries for + debugging the analyzer. + * doc/analyzer.texi: Update for new store implementation. + (__analyzer_hexdump): New. + * selftest-run-tests.cc: Add #define INCLUDE_VECTOR. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (ANALYZER_OBJS): Replace analyzer/symbol.o with + analyzer/symbolic-nodes.o. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (ANALYZER_OBJS): Add analyzer/concrete-ranges.o. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (ANALYZER_OBJS): Add analyzer/integer-with-unit.o. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (ANALYZER_OBJS): Add analyzer/integer.o. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * Makefile.in (OBJS-libcommon): Add diagnostics/markup.o. + * diagnostics/diagnostics-selftests.cc + (diagnostics::selftest::run_diagnostics_selftests): Call + markup_cc_tests. + * diagnostics/diagnostics-selftests.h + (diagnostics::selftest::markup_cc_tests): New decl. + * diagnostics/markup.cc: New file. + * diagnostics/markup.h: New file. + +2026-11-13 Trevor Saunders <tbsaunde@tbsaunde.org> + + * config/arm/arm.h (thumb_call_via_label): Move inside the + !GENERATOR_FILE && !USED_FOR_TARGET block. + +2026-11-13 Andrea Pinski <andrew.pinski@oss.qualcomm.com> + + * range-op-ptr.cc (class operator_pointer_diff): Add + op1_op2_relation. + (operator_pointer_diff::op1_op2_relation): New method. + +2026-11-13 Andrea Pinski <andrew.pinski@oss.qualcomm.com> + + * gimple-range-fold.cc (fur_source::register_outgoing_edges): Use + the range of the rhs1/rsh2 on that edge rather than varry. + * range-op.cc (operator_minus::op1_op2_relation): Add + case for signed types. + +2026-11-13 Uros Bizjak <ubizjak@gmail.com> + + PR target/128662 + * config/i386/i386.h (TARGET_AVOID_FALSE_DEP_FOR_BSR): New. + * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BSR): + New tuning. + * config/i386/i386.md (bsr_rex64): Convert to + define_insn_and_split. Split to *bsr_rex64_falsedep when + TARGET_AVOID_FALSE_DEP_FOR_BSR is set and the destination is not + mentioned in the source. + (bsr_rex64_1): Ditto. Split to *bsr_rex64_1_falsedep. + (bsr_rex64_1_zext): Ditto. Split to *bsr_rex64_1_zext_falsedep. + (bsr): Ditto. Split to *bsr_falsedep. + (bsr_1): Ditto. Split to *bsr_1_falsedep. + (bsr_zext_1): Ditto. Split to *bsr_zext_1_falsedep. + (*bsr_rex64_falsedep, *bsr_rex64_1_falsedep) + (*bsr_rex64_1_zext_falsedep, *bsr_falsedep, *bsr_1_falsedep) + (*bsr_zext_1_falsedep): New insns. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * config/aarch64/aarch64-builtins.cc + (aarch64_types_unsigned_shift_qualifiers, TYPES_USHIFTIMM): Delete. + * config/aarch64/aarch64-neon-builtins-base.cc (vshll_n, vshll_high_n): + New function bases. + * config/aarch64/aarch64-neon-builtins-base.def: Add the corresponding + function group. + * config/aarch64/aarch64-simd-builtins.def: Delete the sshll_n, + ushll_n, sshll2_n and ushll2_n builtins, which no longer have any + caller. + * config/aarch64/arm_neon.h (vshll_high_n_s16, vshll_high_n_s32, + vshll_high_n_s8, vshll_high_n_u16, vshll_high_n_u32, vshll_high_n_u8, + vshll_n_s16, vshll_n_s32, vshll_n_s8, vshll_n_u16, vshll_n_u32, + vshll_n_u8): Delete. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * config/aarch64/aarch64-builtins.cc + (aarch64_types_ternopu_imm_qualifiers, + aarch64_types_shift2_to_unsigned_qualifiers, + aarch64_types_ternop_s_imm_qualifiers, TYPES_TERNOPUI, TYPES_USHIFT2IMM, + TYPES_SHIFT2IMM_UUSS, TYPES_SETREG, TYPES_SHIFTINSERT, TYPES_SHIFTACC, + TYPES_SHIFT2IMM): Delete. + * config/aarch64/aarch64-neon-builtins-base.cc (code_for_shrn2_n): New + function. + (vshrn_n, vqshrn_n, vqshrnh_n, vqshrns_n, vqshrnd_n, vshrn_high_n, + vqshrn_high_n, vrshrn_n, vqrshrn_n, vqrshrnh_n, vqrshrns_n, + vqrshrnd_n, vrshrn_high_n, vqrshrn_high_n, vqshrun_n, vqshrunh_n, + vqshruns_n, vqshrund_n, vqrshrun_n, vqrshrunh_n, vqrshruns_n, + vqrshrund_n, vqshrun_high_n, vqrshrun_high_n): New function bases. + * config/aarch64/aarch64-neon-builtins-base.def: Add the corresponding + function group. + * config/aarch64/aarch64-simd-builtins.def: Delete the narrowing shift + builtins, which no longer have any caller. + * config/aarch64/arm_neon.h (vqrshrn_high_n_s16, vqrshrn_high_n_s32, + vqrshrn_high_n_s64, vqrshrn_high_n_u16, vqrshrn_high_n_u32, + vqrshrn_high_n_u64, vqrshrn_n_s16, vqrshrn_n_s32, vqrshrn_n_s64, + vqrshrn_n_u16, vqrshrn_n_u32, vqrshrn_n_u64, vqrshrnd_n_s64, + vqrshrnd_n_u64, vqrshrnh_n_s16, vqrshrnh_n_u16, vqrshrns_n_s32, + vqrshrns_n_u32, vqrshrun_high_n_s16, vqrshrun_high_n_s32, + vqrshrun_high_n_s64, vqrshrun_n_s16, vqrshrun_n_s32, vqrshrun_n_s64, + vqrshrund_n_s64, vqrshrunh_n_s16, vqrshruns_n_s32, vqshrn_high_n_s16, + vqshrn_high_n_s32, vqshrn_high_n_s64, vqshrn_high_n_u16, + vqshrn_high_n_u32, vqshrn_high_n_u64, vqshrn_n_s16, vqshrn_n_s32, + vqshrn_n_s64, vqshrn_n_u16, vqshrn_n_u32, vqshrn_n_u64, vqshrnd_n_s64, + vqshrnd_n_u64, vqshrnh_n_s16, vqshrnh_n_u16, vqshrns_n_s32, + vqshrns_n_u32, vqshrun_high_n_s16, vqshrun_high_n_s32, + vqshrun_high_n_s64, vqshrun_n_s16, vqshrun_n_s32, vqshrun_n_s64, + vqshrund_n_s64, vqshrunh_n_s16, vqshruns_n_s32, vrshrn_high_n_s16, + vrshrn_high_n_s32, vrshrn_high_n_s64, vrshrn_high_n_u16, + vrshrn_high_n_u32, vrshrn_high_n_u64, vrshrn_n_s16, vrshrn_n_s32, + vrshrn_n_s64, vrshrn_n_u16, vrshrn_n_u32, vrshrn_n_u64, + vshrn_high_n_s16, vshrn_high_n_s32, vshrn_high_n_s64, vshrn_high_n_u16, + vshrn_high_n_u32, vshrn_high_n_u64, vshrn_n_s16, vshrn_n_s32, + vshrn_n_s64, vshrn_n_u16, vshrn_n_u32, vshrn_n_u64): Delete. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * config/aarch64/aarch64-builtins.cc + (aarch64_types_ternop_p_imm_qualifiers, + aarch64_types_unsigned_shiftacc_qualifiers, TYPES_SHIFTINSERTP, + TYPES_USHIFTACC): Delete. + * config/aarch64/aarch64-neon-builtins-base.cc (code_for_si_n): New + function. + (vsli_n, vsliq_n, vslid_n, vsri_n, vsriq_n, vsrid_n): New function + bases. + * config/aarch64/aarch64-neon-builtins-base.def: Add the corresponding + function group. + * config/aarch64/aarch64-simd-builtins.def: Delete the ssli_n, usli_n, + ssri_n and usri_n builtins, which no longer have any caller. + * config/aarch64/arm_neon.h (vsli_n_p16, vsli_n_p64, vsli_n_p8, + vsli_n_s16, vsli_n_s32, vsli_n_s64, vsli_n_s8, vsli_n_u16, vsli_n_u32, + vsli_n_u64, vsli_n_u8, vslid_n_s64, vslid_n_u64, vsliq_n_p16, + vsliq_n_p64, vsliq_n_p8, vsliq_n_s16, vsliq_n_s32, vsliq_n_s64, + vsliq_n_s8, vsliq_n_u16, vsliq_n_u32, vsliq_n_u64, vsliq_n_u8, + vsri_n_p16, vsri_n_p64, vsri_n_p8, vsri_n_s16, vsri_n_s32, vsri_n_s64, + vsri_n_s8, vsri_n_u16, vsri_n_u32, vsri_n_u64, vsri_n_u8, vsrid_n_s64, + vsrid_n_u64, vsriq_n_p16, vsriq_n_p64, vsriq_n_p8, vsriq_n_s16, + vsriq_n_s32, vsriq_n_s64, vsriq_n_s8, vsriq_n_u16, vsriq_n_u32, + vsriq_n_u64, vsriq_n_u8): Delete. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * config/aarch64/aarch64-neon-builtins-base.cc (code_for_qshl_n): New + function. + (vqshl_n, vqshlq_n, vqshlb_n, vqshlh_n, vqshls_n, vqshld_n, vqshlu_n, + vqshluq_n, vqshlub_n, vqshluh_n, vqshlus_n, vqshlud_n): New function bases. + * config/aarch64/aarch64-neon-builtins-base.def: Add the corresponding + function group. + * config/aarch64/aarch64-simd-builtins.def: Delete the sqshl_n, + uqshl_n and sqshlu_n builtins, which no longer have any caller. + * config/aarch64/arm_neon.h (vqshl_n_s16, vqshl_n_s32, vqshl_n_s64, + vqshl_n_s8, vqshl_n_u16, vqshl_n_u32, vqshl_n_u64, vqshl_n_u8, + vqshlb_n_s8, vqshlb_n_u8, vqshld_n_s64, vqshld_n_u64, vqshlh_n_s16, + vqshlh_n_u16, vqshlq_n_s16, vqshlq_n_s32, vqshlq_n_s64, vqshlq_n_s8, + vqshlq_n_u16, vqshlq_n_u32, vqshlq_n_u64, vqshlq_n_u8, vqshls_n_s32, + vqshls_n_u32, vqshlu_n_s16, vqshlu_n_s32, vqshlu_n_s64, vqshlu_n_s8, + vqshlub_n_s8, vqshlud_n_s64, vqshluh_n_s16, vqshluq_n_s16, + vqshluq_n_s32, vqshluq_n_s64, vqshluq_n_s8, vqshlus_n_s32): Delete. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * config/aarch64/aarch64-neon-builtins-base.cc (vrshr_n, vrshrq_n, + vrshrd_n, vrsra_n, vrsraq_n, vrsrad_n): New function bases. + * config/aarch64/aarch64-neon-builtins-base.def: Add the corresponding + function group. + * config/aarch64/aarch64-simd-builtins.def: Delete the srshr_n, + urshr_n, srsra_n and ursra_n builtins, which no longer have any + caller. + * config/aarch64/arm_neon.h (vrshr_n_s16, vrshr_n_s32, vrshr_n_s64, + vrshr_n_s8, vrshr_n_u16, vrshr_n_u32, vrshr_n_u64, vrshr_n_u8, + vrshrd_n_s64, vrshrd_n_u64, vrshrq_n_s16, vrshrq_n_s32, vrshrq_n_s64, + vrshrq_n_s8, vrshrq_n_u16, vrshrq_n_u32, vrshrq_n_u64, vrshrq_n_u8, + vrsra_n_s16, vrsra_n_s32, vrsra_n_s64, vrsra_n_s8, vrsra_n_u16, + vrsra_n_u32, vrsra_n_u64, vrsra_n_u8, vrsrad_n_s64, vrsrad_n_u64, + vrsraq_n_s16, vrsraq_n_s32, vrsraq_n_s64, vrsraq_n_s8, vrsraq_n_u16, + vrsraq_n_u32, vrsraq_n_u64, vrsraq_n_u8): Delete. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * config/aarch64/aarch64-builtins.cc + (aarch64_general_gimple_fold_builtin): Remove the sshl and ushl cases, + which the framework now handles. + * config/aarch64/aarch64-neon-builtins-base.cc (code_for_qshl): New + function. + (vshl, vshlq, vshld, vrshl, vrshlq, vrshld, vqshl, vqshlq, vqshlb, + vqshlh, vqshls, vqshld, vqrshl, vqrshlq, vqrshlb, vqrshlh, vqrshls, + vqrshld): New function bases. + * config/aarch64/aarch64-neon-builtins-base.def: Add the corresponding + function group. + * config/aarch64/aarch64-simd-builtins.def: Delete the sshl, ushl, + srshl, urshl, sqshl, uqshl, sqrshl and uqrshl builtins, which no + longer have any caller. + * config/aarch64/arm_neon.h (vqrshl_s16, vqrshl_s32, vqrshl_s64, + vqrshl_s8, vqrshl_u16, vqrshl_u32, vqrshl_u64, vqrshl_u8, vqrshlb_s8, + vqrshlb_u8, vqrshld_s64, vqrshld_u64, vqrshlh_s16, vqrshlh_u16, + vqrshlq_s16, vqrshlq_s32, vqrshlq_s64, vqrshlq_s8, vqrshlq_u16, + vqrshlq_u32, vqrshlq_u64, vqrshlq_u8, vqrshls_s32, vqrshls_u32, + vqshl_s16, vqshl_s32, vqshl_s64, vqshl_s8, vqshl_u16, vqshl_u32, + vqshl_u64, vqshl_u8, vqshlb_s8, vqshlb_u8, vqshld_s64, vqshld_u64, + vqshlh_s16, vqshlh_u16, vqshlq_s16, vqshlq_s32, vqshlq_s64, vqshlq_s8, + vqshlq_u16, vqshlq_u32, vqshlq_u64, vqshlq_u8, vqshls_s32, vqshls_u32, + vrshl_s16, vrshl_s32, vrshl_s64, vrshl_s8, vrshl_u16, vrshl_u32, + vrshl_u64, vrshl_u8, vrshld_s64, vrshld_u64, vrshlq_s16, vrshlq_s32, + vrshlq_s64, vrshlq_s8, vrshlq_u16, vrshlq_u32, vrshlq_u64, vrshlq_u8, + vshl_s16, vshl_s32, vshl_s64, vshl_s8, vshl_u16, vshl_u32, vshl_u64, + vshl_u8, vshld_s64, vshld_u64, vshlq_s16, vshlq_s32, vshlq_s64, + vshlq_s8, vshlq_u16, vshlq_u32, vshlq_u64, vshlq_u8): Delete. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * config/aarch64/aarch64-builtins.cc + (aarch64_general_gimple_fold_builtin): Remove the ashl, ashr, + ashr_simd, lshr and lshr_simd cases which the framework now handles. + * config/aarch64/aarch64-neon-builtins-base.cc (vshl_n, vshlq_n, + vshld_n, vshr_n, vshrq_n, vshrd_n, vsra_n, vsraq_n, vsrad_n): New + function bases. + * config/aarch64/aarch64-neon-builtins-base.def: Add the corresponding + function group. + * config/aarch64/aarch64-simd-builtins.def: Delete the ashl, ashr, + ashr_simd, lshr, lshr_simd, ssra_n and usra_n builtins, which no + longer have any caller. + * config/aarch64/aarch64-simd.md (aarch64_<sra_op>sra_n<mode>, + aarch64_<sur>sra_ndi, aarch64_ashr_simddi, aarch64_lshr_simddi): Delete. + (aarch64_<sra_op>sra_n<mode>_insn): Rename to ... + (*aarch64_<sra_op>sra_n<mode>): ... this, since the expander that + called it is gone and combine reaches it by matching. + * config/aarch64/aarch64.md (*aarch64_<sra_op>sra_ndi): New pattern. + * config/aarch64/iterators.md (UNSPEC_SSRA, UNSPEC_USRA, VSRA): Delete, + now that the last pattern using them is gone. + (sur): Drop the UNSPEC_SSRA and UNSPEC_USRA entries. + * config/aarch64/predicates.md (aarch64_shift_imm64_di): Delete. + * config/aarch64/arm_neon.h (vshl_n_s16, vshl_n_s32, vshl_n_s64, + vshl_n_s8, vshl_n_u16, vshl_n_u32, vshl_n_u64, vshl_n_u8, vshld_n_s64, + vshld_n_u64, vshlq_n_s16, vshlq_n_s32, vshlq_n_s64, vshlq_n_s8, + vshlq_n_u16, vshlq_n_u32, vshlq_n_u64, vshlq_n_u8, vshr_n_s16, + vshr_n_s32, vshr_n_s64, vshr_n_s8, vshr_n_u16, vshr_n_u32, vshr_n_u64, + vshr_n_u8, vshrd_n_s64, vshrd_n_u64, vshrq_n_s16, vshrq_n_s32, + vshrq_n_s64, vshrq_n_s8, vshrq_n_u16, vshrq_n_u32, vshrq_n_u64, + vshrq_n_u8, vsra_n_s16, vsra_n_s32, vsra_n_s64, vsra_n_s8, vsra_n_u16, + vsra_n_u32, vsra_n_u64, vsra_n_u8, vsrad_n_s64, vsrad_n_u64, + vsraq_n_s16, vsraq_n_s32, vsraq_n_s64, vsraq_n_s8, vsraq_n_u16, + vsraq_n_u32, vsraq_n_u64, vsraq_n_u8): Delete. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * config/aarch64/aarch64-acle-builtins.h (TYPES_b_signed, + TYPES_h_signed): New macros. + (b_signed, h_signed): New type arrays. + (TYPES_b_integer, TYPES_h_integer, TYPES_d_integer): Compose from the + corresponding signed list, as TYPES_s_integer already does. + * config/aarch64/aarch64-neon-builtins-base.cc (build_shift_right): New + function. + (gimple_insn_based_function): New class. + (gimple_exact_insn): Derive from it. + (gimple_code_for_mode_function, gimple_iterator_function, + gimple_shift_imm, gimple_shift_reg): New classes. + (gimple_rtx_code_function, gimple_unspec_based_function): New typedefs. + * config/aarch64/aarch64-neon-builtins-shapes.cc (shift_right, + shift_right_narrow, shift_left_long): New checkers. + * config/aarch64/aarch64-sve-builtins-shapes.cc (parse_element_type): + Handle `d<elt>`. + * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>): Rename + to ... + (@aarch64_<sra_op>rsra_n<mode>): ... this. + (aarch64_<sur>shl<mode>): Rename to ... + (@aarch64_<sur>shl<mode>): ... this. + (aarch64_<sur>q<r>shl<mode>): Rename to ... + (@aarch64_<sur>q<r>shl<mode>): ... this. + (aarch64_<sur>shll_n<mode>): Rename to ... + (@aarch64_<sur>shll_n<mode>): ... this. + (aarch64_<sur>shll2_n<mode>): Rename to ... + (@aarch64_<sur>shll2_n<mode>): ... this. + (aarch64_<sra_op>rshr_n<mode>): Rename to ... + (@aarch64_<sra_op>rshr_n<mode>): ... this. + (aarch64_<sur>s<lr>i_n<mode>): Rename to ... + (@aarch64_<sur>s<lr>i_n<mode>): ... this. + (aarch64_<sur>qshl<u>_n<mode>): Rename to ... + (@aarch64_<sur>qshl<u>_n<mode>): ... this. + (aarch64_<shrn_op>shrn_n<mode>): Rename to ... + (@aarch64_<shrn_op>shrn_n<mode>): ... this. + (aarch64_<shrn_op>rshrn_n<mode>): Rename to ... + (@aarch64_<shrn_op>rshrn_n<mode>): ... this. + (aarch64_sqshrun_n<mode>): Rename to ... + (@aarch64_sqshrun_n<mode>): ... this. + (aarch64_sqrshrun_n<mode>): Rename to ... + (@aarch64_sqrshrun_n<mode>): ... this. + (aarch64_<shrn_op><sra_op>shrn2_n<mode>): Rename to ... + (@aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... this. + (aarch64_<shrn_op>rshrn2_n<mode>): Rename to ... + (@aarch64_<shrn_op>rshrn2_n<mode>): ... this. + (aarch64_sqshrun2_n<mode>): Rename to ... + (@aarch64_sqshrun2_n<mode>): ... this. + (aarch64_sqrshrun2_n<mode>): Rename to ... + (@aarch64_sqrshrun2_n<mode>): ... this. + +2026-11-13 Karl Meakin <karl.meakin@arm.com> + + * config/aarch64/aarch64-builtins.cc + (aarch64_general_gimple_fold_builtin): Delete cases for handling + `reduc_{u,s}{min,max}_scal_`. + * config/aarch64/aarch64-neon-builtins-base.cc (struct + gimple_reduce_minmax): New struct. + * config/aarch64/aarch64-neon-builtins-base.def (vminv, vminvq, + vmaxv, vmaxvq): New intrinsic function declarations. + * config/aarch64/aarch64-simd-builtins.def: Delete + `reduc_{us}{min,max}{,_nan}_scal_` builtin functions. + * config/aarch64/aarch64-simd.md (reduc_<optab>_scal_<mode>): + Rename to ... + (@reduc_<optab>_scal_<mode>): ...this, so that it is callable + from `gimple_reduce_minmax::expand ()`. + * config/aarch64/arm_neon.h + (vpmaxqd_f64, vpmaxs_f32, vpmaxnmqd_f64, vpmaxnms_f32, + vpminqd_f64, vpmins_f32, vpminnmqd_f64): Call the intrinsic + (v{min,max}{,nm}v) functions rather than the now-deleted + `__builtin_aarch64_reduc_s{min,max}_scal` functions. + (vmaxv_f32, vmaxvq_f32, vmaxvq_f64, vminv_f32, vminvq_f32, + vminvq_f64, vmaxv_f16, vmaxvq_f16, vminv_f16, vminvq_f16): + Delete intrinsic function definitions. + +2026-11-13 Karl Meakin <karl.meakin@arm.com> + + * config/aarch64/aarch64-neon-builtins-base.cc (struct + gimple_minmax): New struct. + * config/aarch64/aarch64-neon-builtins-base.def (vmax, vmaxq, + vmin, vminq): New intrinsic function definitions. + * config/aarch64/aarch64-simd-builtins.def (smax, smin, umax, + umin, fmax, fmin): Delete now-unused builtin function declarations. + (fmax_nan, fmin_nan): Only define for float16_t, as they are + only now called from `arm_fp16.h`. + * config/aarch64/arm_fp16.h (vmaxh_f16, vminh_f16): Call the + correct `_nan` variant of the `__aarch64_builtin` functions. + (vmaxnmh_f16, vminnmh_f16): Use the platform-agnostic + `__builtin_f{min,max}f16` functions rather than the now-deleted + aarch64-specific builtins. + * config/aarch64/arm_neon.h (vmax_f32, vmax_f64, vmaxq_f32, + vmaxq_f64, vmin_f32, vmin_f64, vminq_f32, vminq_f64, vmax_f16, + vmaxq_f16, vmin_f16, vminq_f16): Delete intrinsic function + definitions. + +2026-11-13 Karl Meakin <karl.meakin@arm.com> + + * config/aarch64/aarch64-neon-builtins-base.cc + (build_ifn_call): New function. + (build_var): New function. + (gimple_ifn::fold): Call `build_ifn_call`. + (struct gimple_fused_mla): New struct. + * config/aarch64/aarch64-acle-builtins.cc + (gimple_folder::force_val): Call `make_ssa_name` if necessary. + * config/aarch64/aarch64-neon-builtins-base.def + (vfma, vfmaq, vfma_n, vfmaq_n, vfma_lane, vfma_laneq, + vfmaq_lane, vfmaq_laneq, vfmas_lane, vfmas_laneq, vfmad_lane, + vfmad_laneq, vfms, vfmsq, vfms_n, vfmsq_n, vfms_lane, + vfms_laneq, vfmsq_lane, vfmsq_laneq, vfmss_lane, vfmss_laneq, + vfmsd_lane, vfmsd_laneq, and the FP16 forms of each): New + intrinsic function declarations. + * config/aarch64/aarch64-simd-builtins.def + (fma, fnma): Delete `__builtin_aarch64` function declarations. + * config/aarch64/aarch64-simd.md + (fma<mode>4<vczle><vczbe>, + *aarch64_fma4_elt<mode><vczle><vczbe>, + *aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>, + *aarch64_fma4_elt_from_dup<mode><vczle><vczbe>, + *aarch64_fma<mode>4_elt_to_scalar): Extend to cover HF vector + modes, reformat, add comments. + (fnma<mode>4<vczle><vczbe>, + *aarch64_fnma4_elt<mode><vczle><vczbe> + *aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe> + *aarch64_fnma4_elt_from_dup<mode><vczle><vczbe> + *aarch64_fnma<mode>4_elt_from_to_scalar): + Likewise. + (*aarch64_fma4_elt_to_64v2df, *aarch64_fnma4_elt_to_64v2df): + Rename to ... + (*aarch64_fma<mode>4_elt_to_scalar, + *aarch64_fnma<mode>4_elt_to_scalar): ...these. + (*aarch64_fnma4_elt<mode><vczle><vczbe>_alt, + *aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>_alt, + *aarch64_fnma4_elt_from_dup<mode><cvzle><vczbe>_alt, + *aarch64_fnma4<mode>4_elt_to_scalar_alt): New insns to match + permuted variants. + * config/aarch64/arm_neon.h + (vfma_f64, vfma_f32, vfmaq_f32, vfmaq_f64, vfma_n_f32, + vfma_n_f64, vfmaq_n_f32, vfmaq_n_f64, vfma_lane_f32, + vfma_lane_f64, vfma_laneq_f32, vfma_laneq_f64, + vfmaq_lane_f32, vfmaq_lane_f64, vfmaq_laneq_f32, + vfmaq_laneq_f64, vfms_f64, vfms_f32, vfmsq_f32, vfmsq_f64, + vfms_n_f32, vfms_n_f64, vfmsq_n_f32, vfmsq_n_f64, + vfms_lane_f32, vfms_lane_f64, vfms_laneq_f32, vfms_laneq_f64, + vfmsq_lane_f32, vfmsq_lane_f64, vfmsq_laneq_f32, + vfmsq_laneq_f64, vfma_f16, vfmaq_f16, vfms_f16, vfmsq_f16, + vfma_lane_f16, vfmaq_lane_f16, vfma_laneq_f16, + vfmaq_laneq_f16, vfma_n_f16, vfmaq_n_f16, vfms_lane_f16, + vfmsq_lane_f16, vfms_laneq_f16, vfmsq_laneq_f16, vfms_n_f16, + vfmsq_n_f16): Delete function definitions. + * config/aarch64/iterators.md (VDQHSF): New mode iterator. + +2026-11-13 Karl Meakin <karl.meakin@arm.com> + + * config/aarch64/aarch64-acle-builtins.h (TYPES_neon_mla, + TYPES_neon_mla_lane): New type arrays. + * config/aarch64/aarch64-neon-builtins-base.cc (struct + multiply_accumulate): New struct. + * config/aarch64/aarch64-neon-builtins-base.def + (vmla, vmlaq, vmla_n, vmlaq_n, vmla_lane, vmla_laneq, + vmlaq_lane, vmlaq_laneq, vmls, vmlsq, vmls_n, vmlsq_n, + vmls_lane, vmls_laneq, vmlsq_lane, vmlsq_laneq): New function + declarations. + * config/aarch64/aarch64-simd-builtins.def: Delete + `__builtin_aarch64_*` functions. + * config/aarch64/aarch64-simd.md (aarch64_float_mla<mode>, + aarch64_float_mls<mode>, aarch64_float_mla_n<mode>, + aarch64_float_mls_n<mode>, aarch64_float_mla_lane<mode>, + aarch64_float_mls_lane<mode>, aarch64_float_mla_laneq<mode>, + aarch64_float_mls_laneq<mode>): Delete now-obsolete insns. + * config/aarch64/arm_neon.h: (vmla_n_f32, vmla_n_s16, + vmla_n_s32, vmla_n_u16, vmla_n_u32, vmla_s8, vmla_s16, + vmla_s32, vmla_u8, vmla_u16, vmla_u32, vmlaq_n_f32, + vmlaq_n_s16, vmlaq_n_s32, vmlaq_n_u16, vmlaq_n_u32, vmlaq_s8, + vmlaq_s16, vmlaq_s32, vmlaq_u8, vmlaq_u16, vmlaq_u32, + vmls_n_f32, vmls_n_s16, vmls_n_s32, vmls_n_u16, vmls_n_u32, + vmls_s8, vmls_s16, vmls_s32, vmls_u8, vmls_u16, vmls_u32, + vmlsq_n_f32, vmlsq_n_s16, vmlsq_n_s32, vmlsq_n_u16, + vmlsq_n_u32, vmlsq_s8, vmlsq_s16, vmlsq_s32, vmlsq_u8, + vmlsq_u16, vmlsq_u32, vmla_f32, vmla_f64, vmlaq_f32, + vmlaq_f64, vmla_lane_f32, vmla_lane_s16, vmla_lane_s32, + vmla_lane_u16, vmla_lane_u32, vmla_laneq_f32, vmla_laneq_s16, + vmla_laneq_s32, vmla_laneq_u16, vmla_laneq_u32, + vmlaq_lane_f32, vmlaq_lane_s16, vmlaq_lane_s32, + vmlaq_lane_u16, vmlaq_lane_u32, vmlaq_laneq_f32, + vmlaq_laneq_s16, vmlaq_laneq_s32, vmlaq_laneq_u16, + vmlaq_laneq_u32, vmls_f32, vmls_f64, vmlsq_f32, vmlsq_f64, + vmls_lane_f32, vmls_lane_s16, vmls_lane_s32, vmls_lane_u16, + vmls_lane_u32, vmls_laneq_f32, vmls_laneq_s16, vmls_laneq_s32, + vmls_laneq_u16, vmls_laneq_u32, vmlsq_lane_f32, + vmlsq_lane_s16, vmlsq_lane_s32, vmlsq_lane_u16, + vmlsq_lane_u32, vmlsq_laneq_f32, vmlsq_laneq_s16, + vmlsq_laneq_s32, vmlsq_laneq_u16, vmlsq_laneq_u32): Delete + function definitions. + +2026-11-13 Kyrylo Tkachov <ktkachov@nvidia.com> + + * config/aarch64/aarch64-acle-builtins.cc (attribute_cache): New + variable. + (function_builder::get_attributes): Cache the attribute list for each + distinct combination of inputs. + +2026-11-13 Suganya Thirumurthy <Suganya.Thirumurthy@amd.com> + + * config/i386/i386.cc (ix86_veclibabi_aocl): Update vector + widths for the tan, atan, exp10, asin, acos, tanh and cosh + functions. Add the erfc, cbrt and atan2 new functions. + * doc/invoke.texi (x86 Options) [-mveclibabi]: Add amd_vrd2_acos, + amd_vrd4_acos, amd_vrd8_acos, amd_vrs8_acosf, amd_vrd2_asin, + amd_vrd4_asin, amd_vrd4_atan, amd_vrd2_atan2, amd_vrd4_atan2, + amd_vrd8_atan2, amd_vrd2_cbrt, amd_vrs4_cbrtf, amd_vrs8_cbrtf, + amd_vrd2_cosh, amd_vrd4_cosh, amd_vrd8_cosh, amd_vrs16_coshf, + amd_vrd2_erfc, amd_vrd4_erfc, amd_vrd8_erfc, amd_vrs4_erfcf, + amd_vrs8_erfcf, amd_vrs16_erfcf, amd_vrd4_exp10, amd_vrd8_exp10, + amd_vrs8_exp10f, amd_vrs16_exp10f, amd_vrs4_tanf, amd_vrs8_tanf, + amd_vrd2_tanh, amd_vrd4_tanh and amd_vrd8_tanh. + +2026-11-13 LIU Hao <lh_mouse@126.com> + + * ginclude/stddef.h: Exclude `__float128` from `max_align_t` for MinGW + targets. + +2026-11-13 Jiawei <jiawei@iscas.ac.cn> + + * config/riscv/bitmanip.md: Add a splitter for masked inverted + bit extraction. + +2026-11-13 Kael Andrew Franco <kaelfandrew@gmail.com> + + PR ipa/128491 + * trans-mem.cc (pass_ipa_tm::gate): Do not run on invalid code. + 2026-11-12 Andrew MacLeod <amacleod@redhat.com> PR tree-optimization/127915
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 72440d7..3d54539 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP
@@ -1 +1 @@ -20261113 +20261114
diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog index deb92ba..c758fd0 100644 --- a/gcc/analyzer/ChangeLog +++ b/gcc/analyzer/ChangeLog
@@ -1,3 +1,2200 @@ +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * string-scan.cc + (named_test_bit_vector::scan_for_first_zero_byte): Wrap definition + with #if CHECKING_P + * symbolic-bit-contents.cc (class named_test_bit_contents): + Likewise. + * symbolic-scalars.cc (class named_test_scalar): Likewise. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * access-diagram.cc: Add include of "diagnostics/markup.h". + Delete access_range, porting throughout to symbolic_bit_range, + using folded_symbolic_bit_range to get back some of the old + folding behavior that the diagram code relied on. Port + region_offset to const symbolic_bit_offset &. + (pp_bit_size_t): Delete. + (get_access_size_str): Port to new types. + (bit_size_expr::maybe_get_formatted_str): Likewise. + (bit_size_expr::maybe_print_for_user): Delete. + (bit_size_expr::maybe_get_as_bytes): Delete. + (fold_svalue_for_access_diagram): New. + (case_fold_scalar_for_access_diagram): New. + (fold_scalar_for_access_diagram): New. + (fold_range_for_access_diagram): New. + (folded_symbolic_bit_range): New. + (access_range_contains_p): New. + (boundaries::comparator): New. + (boundaries::using offset_set): New using decl. + (boundaries::boundaries): Add node_mgr param. + (boundaries::add): Port to new types. + (boundaries::add_all_bytes_in_range): Likewise. + (boundaries::log): Likewise. + (boundaries::get_kind): Likewise. + (boundaries::begin): Likewise. + (boundaries::end): Likewise. + (boundaries::size): Likewise. + (boundaries::get_hard_boundaries_in_range): Likewise. + (boundaries::m_node_mgr): New field. + (boundaries::m_all_offsets): Convert from std::set<region_offset> + to offset_set. + (boundaries::m_hard_offsets): Likewise. + (bit_to_table_map::bit_to_table_map): Add node_mgr param and + initialize m_node_mgr. + (bit_to_table_map::populate): Drop "mgr" param. Convert from + region_offset to symbolic_bit_offset. + (bit_to_table_map::get_table_rect): Convert to new types. + (bit_to_table_map::maybe_get_access_range_for_table_x): Likewise, + renaming to... + (bit_to_table_map::maybe_get_symbolic_bit_range_for_table_x): + ...this. + (bit_to_table_map::log): Convert to new types. + (bit_to_table_map::get_table_x_for_offset): Likewise. + (bit_to_table_map::get_table_x_for_prev_offset): Likewise. + (bit_to_table_map::m_node_mgr): New field. + (bit_to_table_map::m_table_x_for_offset): Convert key from + region_offset to const symbolic_bit_offset *. + (bit_to_table_map::m_range_for_table_x): Convert value from + access_range to symbolic_bit_range. + (bit_to_table_map::m_table_x_for_prev_offset): New field. + (class svalue_spatial_item): Convert from access_range to + symbolic_bit_range throughout. + (class valid_region_spatial_item): Port to new types. + (class string_literal_spatial_item): Likewise. + (make_written_svalue_spatial_item): Likewise. + (make_existing_svalue_spatial_item): Likewise. + (class access_diagram_impl): Pass around node_manager. Port to + new types. + (selftest::assert_eq_typeless_integer): Delete. + (ASSERT_EQ_TYPELESS_INTEGER): Delete. + (selftest::test_bit_size_expr_to_bytes): Delete. + (selftest::analyzer_access_diagram_cc_tests): Remove call to test. + * access-diagram.h (class bit_size_expr): Port from svalue to + symbolic_bit_size. + (struct access_operation): Port to new types. + * ana-state-to-diagnostic-state.cc: Port to new state + implementation. + * ana-state-to-diagnostic-state.h: Update from bit_range to + concrete_bit_range. + (analyzer_state_graph::m_node_mgr): New field. + * analyzer-logging.cc: Define INCLUDE_VECTOR. Add include of + "text-art/theme.h". + (logger::logger): Initializem_text_art_theme. + * analyzer-logging.h (logger::get_text_art_theme): New. + (logger::m_text_art_theme): New. + * analyzer-selftests.cc: Add include of "stor-layout.h". + (make_string_constant): New. + (make_test_compound_type): Move here from region-model.cc. + (coord_test::coord_test): Likewise. + (run_analyzer_selftests): Drop call to analyzer_ranges_cc_tests. + Add calls to analyzer_region_model_manager_cc_tests, + analyzer_string_scan_cc_tests, + analyzer_symbolic_bit_contents_cc_tests, + analyzer_symbolic_bit_vectors_cc_tests, + analyzer_symbolic_memory_ranges_cc_tests, + analyzer_symbolic_nodes_cc_tests, + analyzer_symbolic_pointers_cc_tests, + analyzer_symbolic_ranges_cc_tests, and + analyzer_symbolic_scalars_cc_tests. + * analyzer-selftests.h (make_string_constant): New decl. + (make_test_compound_type): New decl. + (struct coord_test): New decl, moved from region-model.cc. + (analyzer_ranges_cc_tests): Delete decl. + (analyzer_region_model_manager_cc_tests): New decl. + (analyzer_string_scan_cc_tests): New decl. + (analyzer_symbolic_bit_contents_cc_tests): New decl. + (analyzer_symbolic_bit_vectors_cc_tests): New decl. + (analyzer_symbolic_memory_ranges_cc_tests): New decl. + (analyzer_symbolic_nodes_cc_tests): New decl. + (analyzer_symbolic_pointers_cc_tests): New decl. + (analyzer_symbolic_ranges_cc_tests): New decl. + (analyzer_symbolic_scalars_cc_tests): New decl. + * bounds-checking.cc (class out_of_bounds): Port from region to + symbolic::memory_range throughout. + (class concrete_out_of_bounds): Likewise, porting to new types. + (class concrete_past_the_end): Likewise. + (class concrete_buffer_overflow): Likewise. + (class concrete_buffer_over_read): Likewise. + (class concrete_buffer_underwrite): Likewise. + (class concrete_buffer_under_read): Likewise. + (class symbolic_past_the_end): Likewise. + (class symbolic_buffer_over_read): Likewise. + (strip_types): Delete. + (region_model::check_symbolic_bounds): Port to new types. + (maybe_get_integer_cst_tree): Delete. + (region_model::check_memory_range_bounds): New, based on + region_model::check_region_bounds, porting to new types. + (region_model::check_region_bounds): Reimplement in terms of + check_memory_range_bounds. + * call-details.cc: Drop include of deleted "analyzer/ranges.h". + (call_details::get_arg_as_sym_ptr): New. + (call_details::get_arg_as_num_bytes): New. + (call_details::get_arg_string_literal): Port from region_svalue + to symbolic::pointer. + (call_details::dump_to_pp): Drop. + (call_details::dump): Reimplement in terms of dump widget. + (call_details::make_dump_widget): Update type of param from "dwi" + to "nds". + (call_details::check_for_null_terminated_string_arg): Port + from svalue to symbolic::bit_vector. + (call_details::complain_about_overlap): Port to new + symbolic_byte_range implementation. + * call-details.h: Include "symbolic-pointers.h". + (call_details::get_arg_as_sym_ptr): New decl. + (call_details::get_arg_as_num_bytes): New decl. + (call_details::dump_to_pp): Drop. + (call_details::make_dump_widget): Update type of param from "dwi" + to "nds". + (call_details::check_for_null_terminated_string_arg): Port + from svalue to symbolic::bit_vector. + * call-string.cc: Include "analyzer/symbolic-nodes.h". + (call_string::element_t::make_dump_widget): New. + * call-string.h: Include "text-art/widget.h" and + "text-art/tree-widget.h". + (call_string::element_t::make_dump_widget): New decl. + (call_string::make_dump_widget): New decl. + * call-summary.cc (call_summary::get_user_facing_desc): Replace + SK_REGION case with SK_POINTER. + (call_summary::dump_to_pp): Delete. + (call_summary::dump_to_logger): New. + (call_summary::make_dump_widget): New. + (call_summary::dump): Reimplement in terms of dump widget. + (call_summary_replay::convert_svalue_from_summary_1): Port to + new types. + (call_summary_replay::convert_bit_contents_from_summary): New. + (call_summary_replay::convert_key_from_summary): Delete. + (call_summary_replay::convert_bit_vector_from_summary): New. + (call_summary_replay::impl_bits_from_bytes): New. + (call_summary_replay::convert_scalar_from_summary): New. + (call_summary_replay::dump_to_pp): Delete. + (call_summary_replay::make_dump_widget): New. + (call_summary_replay::dump): Reimplement in terms of dump widget. + (call_summary_replay::dump_to_logger): New. + * call-summary.h (call_summary::dump_to_pp): Delete. + (call_summary::make_dump_widget): New. + (call_summary::dump): Reimplement in terms of dump widget. + (call_summary::dump_to_logger): New. + (call_summary::get_store_manager): Drop. + (call_summary_replay::get_ext_state): New accessor. + (call_summary_replay::convert_key_from_summary): Delete. + (call_summary_replay::convert_bit_contents_from_summary): New. + (call_summary_replay::convert_bit_vector_from_summary): New. + (call_summary_replay::convert_scalar_from_summary): New. + (call_summary_replay::dump_to_pp): Delete. + (call_summary_replay::make_dump_widget): New. + (call_summary_replay::dump): Reimplement in terms of dump widget. + (call_summary_replay::dump_to_logger): New. + (call_summary_replay::get_store_manager): Drop. + (call_summary_replay::impl_bits_from_bytes): New. + * checker-event.cc + (checker_event::maybe_make_diagnostic_state_graph): Update to + new way of dumping program_state instances. + * common.h (diagnostics::markup::node): New forward decl. + (diagnostics::markup::lowering_options): New forward decl. + (class integer_with_unit<U>): New forward decl. + (struct units::bit): New forward decl. + (struct units::byte): New forward decl. + (class symbolic::range<CVT>): New forward decl. + (class symbolic::node_dump_state): New forward decl. + (class symbolic::node_set<NC>): New forward decl. + (class symbolic::node_visitor): New forward decl. + (class symbolic::liveness_context): New forward decl. + (struct symbolic::markup_context): New forward decl. + (class symbolic::bit_contents): New forward decl. + (class symbolic::unfoldable_bit_contents): New forward decl. + (class symbolic::baseline_bit_contents): New forward decl. + (class symbolic::conjured_bit_contents): New forward decl. + (class symbolic::offset_bit_contents): New forward decl. + (class symbolic::uniform_bit_contents): New forward decl. + (class symbolic::bit_overlay): New forward decl. + (class symbolic::concrete_bit_overlay): New forward decl. + (class symbolic::symbolic_bit_overlay): New forward decl. + (class symbolic::scalar<CVT>): New forward decl. + (class symbolic::value_node): New forward decl. + (class symbolic::bit_vector): New forward decl. + (class symbolic::concat_bit_vector): New forward decl. + (class symbolic::conjured_bit_vector): New forward decl. + (class symbolic::constant_bit_vector): New forward decl. + (class symbolic::cropped_bit_vector): New forward decl. + (class symbolic::repeated_bit_vector): New forward decl. + (class symbolic::bit_vector_from_svalue): New forward decl. + (class symbolic::bit_vector_from_ubc): New forward decl. + (class symbolic::uniform_bit_vector): New forward decl. + (class symbolic::empty_bit_vector): New forward decl. + (class symbolic::poisoned_bit_vector): New forward decl. + (class symbolic::tristate_bit_vector): New forward decl. + (class symbolic::bit_contents_manager): New forward decl. + (class symbolic::bit_vector_manager): New forward decl. + (class symbolic::scalar_managers): New forward decl. + (class symbolic::scalar_manager<CVT>): New forward decl. + (symbolic_bit_range): New "using" decl. + (symbolic_byte_range): New "using" decl. + (class region_svalue): Replace forward decl with... + (class pointer_svalue): ...this. + (class sub_svalue): Drop forward decl of eliminated class. + (class repeated_svalue): Likewise. + (class bits_within_svalue): Likewise. + (class compound_svalue): Likewise. + (class conjured_svalue): Likewise. + (class svalue_from_bit_vector): New forward decl. + (svalue_set): Drop typedef. + (class store_manager): Drop forward decl of eliminated class. + (class setjmp_record): New forward decl. + (get_field_at_bit_offset): Drop decl. + (class region_offset): Delete. + (eval_region_offset_comparison): Drop decl. + (cmp_csts_and_types): New decl. + (strip_types): Delete decl of region_offset overload. + (enum class poison_kind): Move here from svalue.h. Add "other". + (poison_kind_to_str): Move here from svalue.h. + (enum class baseline_state): New. + (baseline_state_to_str): New decl. + (enum class iter_result): New. + (append_pathvar_with_type): New decl. + * constraint-manager.cc: Add include of + "analyzer/liveness-context.h". + (class sval_finder): Update for changes to svalue subclasses. + (class dead_svalue_purger): Update to use + symbolic::liveness_context. + (constraint_manager::on_liveness_change): Likewise. + (class svalue_purger): Rename to... + (class node_purger): ...this and generalize from svalue to + symbolic::node. + (constraint_manager::purge_state_involving): Generalize from + svalue to symbolic::node. + (selftest::test_purging): Update for + region_model::purge_state_involving taking a reference rather than + a pointer. + * constraint-manager.h (constraint_manager::on_liveness_change): + Update decl to use symbolic::liveness_context. + (constraint_manager::purge_state_involving): Generalize from + svalue to symbolic::node. + * diagnostic-manager.cc (saved_diagnostic::dump_as_dot_node): + Update for dump changes. + (dump_to_logger): Update for changes to make_dump_widget. + (make_raw_dst_region_model): Set cfun and input_location. + (diagnostic_manager::prune_for_sm_diagnostic): Canonicalize the + input svalue and update throughout to make it clear whether we're + dealing with uncanonicalized or canonicalized svalue. + * engine.cc (impl_region_model_context::on_svalue_leak): + Canonicalize sval. + (impl_region_model_context::on_liveness_change): Update for + signature change. + (impl_region_model_context::on_unknown_change): Likewise. + (impl_region_model_context::purge_state_involving): Likewise. + (impl_region_model_context::on_state_leak): Use value_set rather + than svalue_set. + (exploded_node::dump_dot): Use monospace font. Use + dump_node_tree_to_pp for dumping state. + (exploded_node::dump): Reimplement in terms of dump widget. + (exploded_node::dump_to_pp): Reimplement in terms of dump widget. + (exploded_node::dump_to_logger): New. + (exploded_node::make_dump_widget): New. + (exploded_graph::get_or_create_node): Use dump_to_logger. + (exploded_graph::process_node): Likewise. + (exploded_graph::process_node): Likewise. + (feasibility_problem::make_dump_widget): New. + (feasibility_problem::dump): New. + (feasibility_problem::dump_to_pp): Reimplement in terms of + dump widget. + (feasibility_problem::dump_to_logger): New. + (feasibility_state::maybe_update_for_edge): Use dump_to_logger. + (feasibility_state::make_dump_widget): New. + (feasibility_state::dump_to_pp): Reimplment in terms of dump + widget. + (enode_label::get_text): Drop state from label. + (exploded_graph::dump_exploded_nodes): Use + symbolic::dump_node_tree_to_file<program_state>. Update for + simplified signature of program_state::dump. + * exploded-graph.h (impl_region_model_context::on_liveness_change): + Update signature. + (impl_region_model_context::on_unknown_change): Likewise. + (impl_region_model_context::purge_state_involving): Likewise. + (exploded_node::make_dump_widget): New decl. + (exploded_node::dump): Drop ext_state param. Drop FILE * + overload. + (exploded_node::dump_to_pp): Drop ext_state param. + (exploded_node::dump_to_logger): New. + (feasibility_problem::make_dump_widget): New. + (feasibility_problem::dump): New. + (feasibility_problem::dump_to_logger): New. + (feasibility_state::dump_to_pp): Drop "simple" and "multiline" + params. + (feasibility_state::make_dump_widget): New. + * exploded-path.cc (exploded_path::feasible_p): Use + dump_to_logger. + (exploded_path::dump_to_pp): Update for change to + program_state::dump_to_pp. + * feasible-graph.cc (feasible_node::dump_dot): Update for change + to region_model::dump_to_pp. + (feasible_graph::dump_feasible_path): Likewise for change to + feasible_state::dump_to_pp. + * infinite-recursion.cc (class infinite_recursion_diagnostic): + Rename "uses_conjured_svalue_p" to "uses_conjured_value_p" + throughout. Reimplement to work on conjured bit_vectors. + (contains_unknown_p): Generalize from svalue to symbolic::node. + (sufficiently_different_region_binding_p): Port to new + implementation, working on bit_contents. + * initializers.cc: New file. + * kf-analyzer.cc: Drop param to region_model::dump. + (class kf_analyzer_hexdump): New. + (register_known_analyzer_functions): Register it as + "__analyzer_hexdump". + * kf-lang-cp.cc (kf_dynamic_cast::impl_call_post): Port to new + implementation. + (kf_operator_delete::impl_call_post): Likewise. + * kf.cc: (kf_atomic_exchange::impl_call_pre): Likewise. + (kf_atomic_load::impl_call_pre): Likewise. + (kf_atomic_store::impl_call_pre): Likewise. + (kf_free::impl_call_post): Likewise. + (kf_memcpy_memmove::impl_call_pre): Likewise. + (kf_memset::impl_call_pre): Likewise. + (kf_mktemp_family::check_placeholder): Likewise. + (kf_putenv::impl_call_pre): Likewise. + (kf_realloc::impl_call_post): Likewise. + (kf_strdup::impl_call_pre): Likewise. + (kf_strcpy::impl_call_pre): Likewise. + (kf_strcat::impl_call_pre): Likewise. + (kf_strncpy::impl_call_post): Likewise. + * liveness-context.h: New file. + * ops.cc (operation_context::dump): Update for dump changes. + (call_and_return_op::replay_call_summary): Likewise. + (dump_op::execute): Likewise. + (phis_for_edge_op::update_state): Update for change to + purge_state_involving signature. + * poisoned-value-diagnostic.cc (poison_finder::visit_svalue): New. + (poison_finder::visit_bit_vector): New. + (poisoned_value_diagnostic::check_valid_fpath_p): Use + poison_finder rather than dyn_cast_poisoned_svalue. + * program-point.cc (program_point::dump): Reimplement in terms + of... + (program_point::make_dump_widget): New. + * program-point.h (program_point::make_dump_widget): New decl. + * program-state.cc: Include "analyzer/liveness-context.h". + (extrinsic_state::make_dump_widget): New. + (extrinsic_state::dump_to_pp): Delete. + (extrinsic_state::dump_to_file): Delete. + (extrinsic_state::dump): Delete. + (sm_state_map::make_dump_widget): Update for signature change. + Rework how states are dumped. Add dumping of m_map_ubc_to_state. + (sm_state_map::is_empty_p): Add check on m_map_ubc_to_state. + (sm_state_map::operator==): Add comparison of m_map_ubc_to_state. + (sm_state_map::get_any_inherited_state_of_bit_vector): New. + (sm_state_map::get_state): Drop handling of sub_svalue. + Add handling of svalue_from_bit_vector. + (sm_state_map::impl_set_state): Reimplement handling of inherited + state in terms of m_map_ubc_to_state. + (sm_state_map::clear_all_per_svalue_state): Clear + m_map_ubc_to_state. + (sm_state_map::on_liveness_change): Port to + symbolic::liveness_context. + (sm_state_map::on_unknown_change): Generalize from svalue to + symbolic::value_node, adding support for bit_vector. + (sm_state_map::purge_state_involving): Likewise. + (sm_state_map::canonicalize_svalue): Handle nullptr. Strip types + from symbolic pointers and from svalue_from_bit_vector. + (sm_state_map::validate): New. + (sm_state_map::replay_call_summary): Canonicalize svalues. + (program_state::print): Delete. + (program_state::dump_to_pp): Delete. + (program_state::dump_to_file): Delete. + (program_state::dump): Reimplement in terms of dump widget. + (program_state::dump_to_logger): New. + (program_state::make_dump_widget): Update for signature change. + Support passing in a label. + (program_state::can_purge_base_region_p): Reimplement. + (program_state::validate): Validate the sm_state_maps in + m_checker_states. + (log_set_of_svalues): Port from svalue_set to value_set. Use + dump_to_logger. + (liveness_context::liveness_context): New. + (liveness_context::node_live_p): New. + (liveness_context::bits_live_p): New. + (liveness_context::known_live_ptr_to_base_region_p): New. + (liveness_context::set_known_liveness_for_node): New. + (liveness_context::dump_to_pp): New. + (liveness_context::make_dump_widget): New. + (program_state::detect_leaks): Reimplement, generalizing from + svalue to symbolic::value_node. + * program-state.h (extrinsic_state::dump_to_pp): Delete. + (extrinsic_state::dump_to_file): Delete. + (extrinsic_state::dump_to_logger): New. + (extrinsic_state::make_dump_widget): New. + (sm_state_map::make_dump_widget): Update signature. + (sm_state_map::dump): New. + (sm_state_map::on_liveness_change): Update signature. + (sm_state_map::on_unknown_change): Likewise. + (sm_state_map::purge_state_involving): Likewise. + (sm_state_map::validate): New. + (sm_state_map::get_any_inherited_state_of_bit_vector): New. + (sm_state_map::m_map_ubc_to_state): New field. + (program_state::dump_to_pp): Delete. + (program_state::dump_to_file): Delete. + (program_state::dump_to_logger): New. + (program_state::dump): Simplify signature. + (program_state::make_dump_widget): Update signature. + * ranges.cc: Deleted file; partially used when reimplementing + symbolic-ranges.cc. + * ranges.h: Deleted file; partially used when reimplementing + symbolic-ranges.h. + * record-layout.cc (record_layout::record_layout): Port from + bit_range to concrete_bit_range, and from bit_offset_t to + concrete_bit_offset. + (record_layout::get_item_at): Likewise. + (record_layout::maybe_pad_to): Likewise. + * record-layout.h (get_bit_position): New decl. + (get_field_at_bit_offset): New decl. + (class record_layout): Port from bit_range to concrete_bit_range, + and from bit_offset_t to concrete_bit_offset. + * region-model-asm.cc (region_model::on_asm_stmt): Update for + change to reachable_regs. Drop store manager. Pass baseline + state to get_or_create_cluster. + * region-model-manager.cc: Include "analyzer/symbolic-scalars.h", + "analyzer/record-layout.h", and "analyzer/analyzer-selftests.h". + (region_model_manager::region_model_manager): Drop m_store_mgr. + (region_model_manager::~region_model_manager): Drop cleanup of + dropped fields m_sub_values_map, m_repeated_values_map, + m_bits_within_values_map, m_compound_values_map, and + m_conjured_values_map. Add cleanup of m_bit_vector_to_svalue_map. + (region_model_manager::get_or_create_initial_value): Handle + subregions as a cropping of the baseline contents of the base + region. + (region_model_manager::get_ptr_svalue): Port from region_svalue to + pointer_svalue. + (region_model_manager::maybe_fold_unaryop): Avoid creating + symbolic regions for pointer casts by simplifying (T*)(®ION) to + ((T*)®ION). Fold svalue_from_bit_vector. + (region_model_manager::maybe_undo_optimize_bit_field_compare): + Delete. + (region_model_manager::maybe_fold_binop): Handle + POINTER_PLUS_EXPR and LSHIFT_EXPR. Fold pointer arithmetic within + a base region. Drop handling of compound_svalue. + (region_model_manager::maybe_fold_sub_svalue): Delete. + (region_model_manager::get_or_create_sub_svalue): Delete. + (region_model_manager::maybe_fold_repeated_svalue): Delete. + (region_model_manager::get_or_create_repeated_svalue): Delete. + (region_model_manager::maybe_fold_svalue_from_bit_vector): New. + (canonicalize_ptr_type_for_bit_vector): New. + (get_bit_range_for_field): Delete. + (get_byte_range_for_field): Delete. + (get_field_at_byte_range): Delete. + (region_model_manager::maybe_fold_bits_within_svalue): Delete. + (region_model_manager::get_or_create_bits_within): Delete. + (region_model_manager::get_or_create_compound_svalue): Delete. + (region_model_manager::get_svalue_from_bit_vector): New. + (region_model_manager::get_svalue_from_scalar): New. + (conjured_purge::purge): Reimplement in symbolic-bit-vectors.cc. + (region_model_manager::get_or_create_conjured_svalue): Reimplement + in terms of svalue_from_bit_vector(conjured_bit_vector). + (region_model_manager::maybe_fold_sized_region_to_initial_field): + New. + (region_model_manager::get_sized_region): Call it. + (region_model_manager::get_cast_region): Fold casts of symbolic + regions. + (region_model_manager::maybe_fold_symbolic_region): New. + (region_model_manager::get_symbolic_region): Add call to + maybe_fold_symbolic_region. + (region_model_manager::get_bit_range): Use concrete_bit_range + rather than bit_range. + (region_model_manager::log_stats): Update logging of + m_pointer_values_map. Drop logging of deleted fields + m_sub_values_map, m_repeated_values_map, m_bits_within_values_map, + m_compound_values_map, m_conjured_values_map, and m_store_mgr. Add + logging of m_bit_vector_to_svalue_map. + (store_manager::log_stats): Delete. + (selftest::test_svalue_from_bit_vector): New. + (selftests::analyzer_region_model_manager_cc_tests): New. + * region-model-manager.h: Add includes of "svalue.h", "region.h", + and "known-function-manager.h". + (region_model_manager::get_ptr_svalue): Update param to + symbolic::pointer. + (region_model_manager::get_or_create_sub_svalue): Delete. + (region_model_manager::get_or_create_repeated_svalue): Delete. + (region_model_manager::get_or_create_bits_within): Delete. + (region_model_manager::get_or_create_compound_svalue): Delete. + (region_model_manager::get_svalue_from_bit_vector): New. + (region_model_manager::get_svalue_from_scalar): New. + (region_model_manager::get_bit_range): Convert from bit_range to + concrete_bit_range. + (region_model_manager::get_store_manager): Delete. + (region_model_manager::maybe_fold_sub_svalue): Delete. + (region_model_manager::maybe_fold_repeated_svalue): Delete. + (region_model_manager::maybe_fold_bits_within_svalue): Delete. + (region_model_manager::maybe_undo_optimize_bit_field_compare): + Delete. + (region_model_manager::maybe_fold_svalue_from_bit_vector): New. + (region_model_manager::maybe_fold_sized_region_to_initial_field): + New. + (region_model_manager::maybe_fold_symbolic_region): New. + (region_model_manager::pointer_values_map_t): Convert from + region_svalue to pointer_svalue. + (region_model_manager::bit_vector_to_svalue_map_t): New typedef. + (region_model_manager::m_bit_vector_to_svalue_map): New field. + (region_model_manager::sub_values_map_t): Drop. + (region_model_manager::m_sub_values_map): Drop. + (region_model_manager::repeated_values_map_t): Drop. + (region_model_manager::m_repeated_values_map): Drop. + (region_model_manager::bits_within_values_map_t): Drop. + (region_model_manager::m_bits_within_values_map): Drop. + (region_model_manager::compound_values_map_t): Drop. + (region_model_manager::m_compound_values_map): Drop. + (region_model_manager::conjured_values_map_t): Drop. + (region_model_manager::m_conjured_values_map): Drop. + (region_model_manager::m_store_mgr): Drop. + * region-model-reachability.cc: Add include of + "analyzer/liveness-context.h". + (recurse_into_children_p): New. + (reachable_regions::init_cluster): Port to + symbolic::liveness_context. + (reachable_regions::add): Port to new implementation of + binding_cluster contents. + (reachable_regions::handle_sval_cb): Update for generalization + to symbolic::value_node. + (reachable_regions::handle_sval): Rename to... + (reachable_regions::handle_value): ...this, generalizing from + svalue to symbolic::value_node. + (reachable_regions::handle_parm): Port to new implementation. + (reachable_regions::mark_escaped_clusters): Likewise. + (reachable_regions::dump_to_pp): Likewise. + * region-model-reachability.h (class reachable_regions): Use + value_set rather than svalue_set throughout. + (reachable_regions::handle_sval): Rename to... + (reachable_regions::handle_value): ...this, generalizing from + svalue to symbolic::value_node. + * region-model.cc: Drop include of "stor-layout.h". Include + "diagnostics/markup.h". + (region_to_value_map::dump_to_pp): Drop. + (region_to_value_map::dump): Drop. + (region_to_value_map::make_dump_widget): Update for new signature. + (region_to_value_map::purge_state_involving): Generalize from + svalue to symbolic::node. + (exception_node::dump_to_pp): Drop. + (exception_node::dump): Drop overload and reimplement in terms + of dump widget. + (exception_node::dump_to_logger): New. + (exception_node::make_dump_widget): Update for signature change. + (exception_node::add_to_reachable_regions): Update for change + to reachable_regions. + (region_model::region_model): Pass node_mgr to store ctor. + (region_model::dump_to_pp): Reimplement in terms of dump_widget. + (region_model::dump): Likewise, simplifying. + (region_model::debug): Drop. + (region_model::dump_to_logger): New. + (region_model::make_dump_widget): Update for signature change. + (region_model::canonicalize): Drop store manager. + (region_model::loop_replay_fixup): Pass baseline state to store. + (region_model::get_gassign_result): Update infinite loop detection + before eval_condition does any folding. + (region_model::complain_about_poison): New. + (region_model::check_bytes_for_poison): New. + (region_model::on_assignment): Call region_model::set_value rather + than going to store for STRING_CST. + (exception_thrown_from_unrecognized_call::update_model): Port + to bit_contents. + (region_model::purge_state_involving): Pass a symbolic::node + rather than an svalue, dropping rejection of + can_have_associated_state_p. + (check_one_function_attr_null_terminated_string_arg): Port to new + types. + (region_model::handle_unrecognized_call): Likewise. + (region_model::get_reachable_svalues): Likewise. + (region_model::get_lvalue_1): Likewise. + (region_model::get_baseline_state): New. + (region_model::get_store_value): Move poison-checking. + Reimplement in terms of get_store_bits and + get_svalue_from_bit_vector. + (region_model::get_store_bits): New. + (region_model::get_bit_contents): New. + (region_model::set_bit_contents_raw): New. + (region_model::deref_rvalue): Assert that type is non-null. + Drop case for SK_REGION. + (region_model::get_rvalue_for_bits): Reimplement in terms of + get_store_bits, get_cropped_bits, and get_svalue_from_bit_vector. + (region_model::check_for_writable_region): Rename "dest_reg" to + "base_reg" and assume it is a base region. + (region_model::get_capacity_as_scalar): New. + (region_model::check_region_access): Reimplement as... + (region_model::check_memory_range_access): ...this. + (region_model::check_region_for_read): Delete. + (size_visitor::visit_conjured_svalue): Replace with... + (size_visitor::visit_svalue_from_bit_vector): ...this. + (region_model::write_to_memory_offset): New. + (region_model::set_value): Port to new types, reimplementing + in terms of write_to_memory_offset. + (struct fragment): Delete. + (string_cst_has_null_terminator): Delete. + (svalue_byte_range_has_null_terminator): Delete. + (svalue_byte_range_has_null_terminator_1): Delete. + (get_tree_for_byte_offset): Convert from byte_offset_t to + concrete_byte_offset. + (class iterable_cluster): Delete. + (region_model::get_store_bytes): Delete. + (region_model::scan_for_null_terminator_1): Reimplement in terms + of string_scan. + (region_model::scan_for_null_terminator): Use symbolic::bit_vector + for output of scanned bytes, rather than svalue. + (region_model::check_for_null_terminated_string_arg): Likewise. + (region_model::clobber_region): Drop store manager. Pass baseline + state. + (region_model::purge_region): Reimplement. + (region_model::fill_region): Delete. + (region_model::zero_fill_region): Reimplement in terms of + write_to_memory_offset. + (region_model::write_bytes): Reimplement in terms of + symbolic::pointer, symbolic::bit_vector, and + write_to_memory_offset. + (region_model::read_bytes): Reimplement in terms of + symbolic::pointer, symbolic_byte_size, and symbolic::bit_vector. + (region_model::copy_bytes): Reimplement in terms of + symbolic::pointers and symbolic_byte_size. + (region_model::mark_region_as_unknown): Reimplement. + (region_model::mark_region_as_conjured): New. + (equal_bit_vectors_p): New. + (region_model::canonicalize_svalue_for_constraint): New. + (region_model::can_recurse_eval_condition_p): New. + (region_model::eval_condition): Canonicalize lhs and rhs. Treat + equal bit vectors as equal (after float rejection for NaN). Port + from region_svalue to symbolic::pointer. Reject recursion purely + due to canonicalization, to avoid infinite recursion. + (region_model::compare_initial_and_pointer): Port from + region_svalue to symbolic::pointer. + (is_positive_svalue): Add positive * positive handler. + (region_model::add_constraint): Canonicalize lhs and rhs. Port + from region_svalue to symbolic::pointer. + (convert_to_type): New. + (region_model::get_representative_path_var_1): Update from + svalue_set to value_set. Convert various early returns into + appends to "pvs", so that we consider other canidates by + readability. Port from region_svalue to symbolic::pointer and + handle other new types. + (region_model::get_representative_path_var): Use value_set rather + than svalue_set. Only require types_compatible_p, rather than + exact type matches. + (region_model::get_representative_tree): Use value_set rather + than svalue_set. Strip top-level casts repeatedly, rather than + just one. + (region_model::get_representative_tree): Update from svalue_set to + value_set. + (region_model::maybe_get_region_for_mem_range): New. + (region_model::maybe_get_subregion_for_symbolic_bit_range): New. + (region_model::maybe_get_subregion_for_concrete_bit_range): New. + (get_underlying_index_type): New. + (struct quotient_and_residual): New. + (try_split_exact_multiple): New. + (quotient_and_residual::handle_bits_from_bytes): New. + (region_model::maybe_get_subregion_for_symbolic_bit_range_in_array): + New. + (region_model::maybe_get_subregion_for_symbolic_bit_range_in_record): + New. + (region_model::get_representative_path_var_1): Update from + svalue_set to value_set. + (region_model::get_representative_path_var): Likewise. + (region_model::replay_call_summary): Support failure from + store::replay_call_summary. + (region_model::on_top_level_param): Drop store manager; pass + baseline state. + (region_model::push_frame): Try to preserve the type of arg_sval + in the store, by wrapping it in an "unmergeable" decorator. + (region_model::poison_any_pointers_to_descendents): Delegate to + the cluster. + (region_model::can_merge_with_p): Drop store manager and update + for change to purge_state_involving. + (region_model::get_vtable_from_obj): Port to symbolic::pointer. + (region_model::get_fndecl_for_call): Port from region_svalue to + symbolic::pointer. + (contains_floating_point_visitor::visit_conjured_svalue): Delete. + (struct uninit_bit_counter): New. + (class exposure_through_uninit_copy): Reimplement using + uninit_bit_counter and new symbolic represenation. + (contains_uninit_p): Reimplement using poison_finder. + (region_model::maybe_complain_about_infoleak): Pass node_mgr to + exposure_through_uninit_copy ctor. + (model_merger::dump_to_pp): Drop. + (model_merger::dump): Drop. + (model_merger::dump): Drop. + (model_merger::mergeable_bit_vector_p): New. + (debug): Drop. + (selftest::assert_dump_eq): Drop. + (ASSERT_DUMP_EQ): Drop. + (selftesttest_dump): Reimplement using + symbolic::dump_node_tree_to_pp. + (selftest::make_test_compound_type): Move to analyzer-selftest.cc. + (struct selftest::coord_test): Likewise. + (selftest::test_struct): Add ASSERT_SYMBOLIC_NODE_MARKUP_TEXT_EQ + in various places. Use ASSERT_SAME_SYMBOLIC_NODE rather than + ASSERT_EQ to get better error messages. Verify memory ranges. + Port from region_offset to symbolic::memory_offset. Drop + binding_cluster code. + (selftest::test_array_1): Verify markup output. + (selftest::test_get_representative_tree): Likewise. Add test + of a single field within a struct. + (selftest::test_unique_constants): Verify markup output. + (selftest::test_unique_unknowns): Likewise. + (selftest::test_initial_svalue_folding): Replace ASSERT_EQ + with ASSERT_SAME_SYMBOLIC_NODE and verify markup output. + (selftest::test_unaryop_svalue_folding): Likewise. + (selftest::test_binop_svalue_folding): Likewise. + (selftest::test_sub_svalue_folding): Drop. + (selftest::get_bit): Drop. + (selftest::test_bits_within_svalue_folding): Drop. + (selftest::test_bit_range_regions): Port from bit_range + to concrete_bit_range. Verify markup. + (selftest::test_stack_frames): Update "popped_stack" poison test. + Use ASSERT_SAME_SYMBOLIC_NODE. + (selftest::test_get_representative_path_var): Port from svalue_set + to value_set. + (selftest::assert_region_models_merge): Fix indentation. + (selftest::test_state_merging): Port from region_svalue to + pointer_svalue. Use ASSERT_SAME_SYMBOLIC_NODE rather than + ASSERT_EQ. Update test to use "p" rather than "x", since p is a + pointer. + (selftest::test_var): Update from region_offset to + symbolic::memory_range. Use ASSERT_SAME_SYMBOLIC_NODE rather than + ASSERT_EQ + (selftest::test_array_2): Likewise. + (selftest::test_alloca): Update "popped_stack" poison test. + (selftest::test_involves_p): Update for change in signature of + involves_p. + (selftest::test_array_in_struct): New test. + (selftest::test_maybe_get_region_for_mem_range): New test. + (selftest::analyzer_region_model_cc_tests): Drop calls to + test_sub_svalue_folding and test_bits_within_svalue_folding. + Add calls to test_array_in_struct and + test_maybe_get_region_for_mem_range. + * region-model.h (region_to_value_map::dump_to_pp): Drop. + (region_to_value_map::dump): Drop. + (region_to_value_map::dump_to_logger): New. + (region_to_value_map::make_dump_widget): Update signature. + (region_to_value_map::void purge_state_involving): Use + symbolic::node rather than svalue. + (visitor::visit_region_svalue): Replace with... + (visitor::visit_pointer_svalue): ...this. + (visitor::visit_sub_svalue): Delete. + (visitor::visit_repeated_svalue): Delete. + (visitor::visit_bits_within_svalue): Delete. + (visitor::visit_compound_svalue): Delete. + (visitor::visit_conjured_svalue): Delete. + (visitor::visit_svalue_from_bit_vector): New. + (exception_node::dump_to_pp): Drop. + (exception_node::dump): Drop overloads. + (exception_node::dump_to_logger): New. + (exception_node::make_dump_widget): Update signature. + (region_model::dump_to_pp): Simplify signature. + (region_model::dump): Drop overloads. + (region_model::dump_to_logger): New. + (region_model::debug): Drop. + (region_model::make_dump_widget): Update signature. + (region_model::purge_state_involving): Pass a symbolic::node + rather than an svalue. + (region_model::purge_state_involving): Use a value_set rather + than an svalue_set. + (region_model::fill_region): Drop. + (region_model::write_bytes): Port from svalue to symbolic::pointer + and symbolic::bit_vector. + (region_model::read_bytes): Likewise. + (region_model::copy_bytes): Port from region and svalue to + symbolic::pointer and symbolic_byte_size. + (region_model::mark_region_as_conjured): New. + (region_model::compare_initial_and_pointer): Port from + region_svalue to symbolic::pointer. + (region_model::get_representative_path_var): Use a value_set + rather than an svalue_set. + (region_model::maybe_get_region_for_mem_range): New. + (region_model::get_store_bytes): Replace with... + (region_model::get_store_bit): ...this. + (region_model::get_bit_contents): New. + (region_model::set_bit_contents_raw): New. + (region_model::scan_for_null_terminator): Use symbolic::bit_vector + rather than svalue. + (region_model::scan_for_null_terminator_1): Likewise. + (region_model::check_for_null_terminated_string_arg): Likewise. + (region_model::write_to_memory_offset): New. + (region_model::get_capacity_as_scalar): New. + (region_model::check_bytes_for_poison): New. + (region_model::get_baseline_state): New. + (region_model::bits_live_p): New. + (region_model::get_representative_path_var_1): Use a value_set + rather than an svalue_set. + (region_model::maybe_get_subregion_for_symbolic_bit_range): New. + (region_model::maybe_get_subregion_for_concrete_bit_range): New. + (region_model::maybe_get_subregion_for_symbolic_bit_range_in_array): + New. + (region_model::maybe_get_subregion_for_symbolic_bit_range_in_record): + New. + (region_model::complain_about_poison): New. + (region_model::check_memory_range_for_taint): New. + (region_model::check_memory_range_access): New. + (region_model::check_region_for_read): Drop. + (region_model::check_symbolic_bounds): Update from region + to symbolic::memory_range. + (region_model::check_memory_range_bounds): New. + (region_model::canonicalize_svalue_for_constraint): New. + (region_model::can_recurse_eval_condition_p): New. + (region_model_context::on_liveness_change): Update signature. + (region_model_context::on_unknown_change): Likewise. + (region_model_context::purge_state_involving): Likewise. + (class noop_region_model_context): Update for above changes. + (class region_model_context_decorator): Likewise. + (model_merger::dump_to_pp): Drop. + (model_merger::dump_to_logger): New. + (model_merger::dump): Simplify, dropping overloads. + (model_merger::mergeable_bit_vector_p): New. + (struct poison_finder): New. + * region.cc: Include "diagnostics/markup.h" and + "analyzer/symbolic-pointers.h". + (compare_bit_offsets_p): Delete. + (region_offset::make_byte_offset): Delete. + (region_offset::calc_symbolic_bit_offset): Delete. + (region_offset::calc_symbolic_byte_offset): Delete. + (region_offset::dump_to_pp): Delete. + (region_offset::dump): Delete. + (struct linear_op): Delete. + (strip_types): Delete. + (eval_byte_offset_comparison): Delete. + (eval_region_offset_comparison): Delete. + (region::print_dump_widget_label): New. + (region::~region): Drop manual deletion of m_cached_offset. + (region::add_dump_widget_children): New. + (region::get_memory_space): Handle RK_SYMBOLIC. + (region::calc_initial_value_at_main): Port to new implementation. + (region::get_offset): Replace with... + (region::get_memory_offset): ...this. + (region::get_next_offset): Delete. + (region::get_memory_range): New. + (region::get_pointer): New. + (region::get_byte_size): Replace with... + (region::maybe_get_byte_size): ...this. + (region::get_byte_size_sval): Reimplement. + (region::get_bit_size_sval): New. + (get_type_size): New. + (get_bit_position): New. + (region::get_bit_size): Replace with... + (region::maybe_get_bit_size): ...this. + (get_field_at_bit_offset): Port to new types. + (region::get_subregions_for_binding): Convert to... + (region::get_subregions_for_bit_range): ...this. + (region::calc_offset): Replace with... + (region::calc_memory_offset): ...this. + (region::get_relative_concrete_offset): Delete. + (region::get_relative_symbolic_offset): Delete. + (region::get_relative_concrete_byte_range): Delete. + (region::calc_memory_range): New. + (region::calc_pointer): New. + (region::dump): Delete. + (region::maybe_get_bit_offset_relative_to_parent): New. + (region::maybe_get_byte_offset_relative_to_parent): New. + (region::to_json): Delete in favor of node::to_json. + (region::dump): Reimplement using dump widget. + (region::make_dump_widget): Delete in favor of + node::make_dump_widget. + (region::add_dump_widget_children): Update signature. + (region::make_json_obj): New. + (region::empty_p): Add "rmm" param and port to new implementation. + (region::region): Update for replacement of m_cached_offset with + m_cached_memory_range. + (region::involves_p): Delete in favor of node::involves_p. + (frame_region::print_dump_widget_label): Rename to... + (frame_region::print_region_for_dump_widget_label): ...this. + (frame_region::accept_node_visitor): New. + (frame_region::to_json): New. + (frame_region::make_markup_node): New. + (globals_region::print_dump_widget_label): Rename to... + (globals_region::print_region_for_dump_widget_label): ...this. + (globals_region::accept_node_visitor) New. + (globals_region::to_json): New. + (globals_region::make_markup_node): New. + (code_region::print_dump_widget_label): Rename to... + (code_region::print_region_for_dump_widget_label): ...this. + (code_region::accept_node_visitor) New. + (code_region::to_json): New. + (code_region::make_markup_node): New. + (function_region::print_dump_widget_label): Rename to... + (function_region::print_region_for_dump_widget_label): ...this. + (function_region::accept_node_visitor) New. + (function_region::to_json): New. + (function_region::make_markup_node): New. + (label_region::print_dump_widget_label): Rename to... + (label_region::print_region_for_dump_widget_label): ...this. + (label_region::accept_node_visitor) New. + (label_region::to_json): New. + (label_region::make_markup_node): New. + (stack_region::print_dump_widget_label): Rename to... + (stack_region::print_region_for_dump_widget_label): ...this. + (stack_region::accept_node_visitor) New. + (stack_region::to_json): New. + (stack_region::make_markup_node): New. + (heap_region::print_dump_widget_label): Rename to... + (heap_region::print_region_for_dump_widget_label): ...this. + (heap_region::accept_node_visitor) New. + (heap_region::to_json): New. + (heap_region::make_markup_node): New. + (root_region::print_dump_widget_label): Rename to... + (root_region::print_region_for_dump_widget_label): ...this. + (root_region::accept_node_visitor) New. + (root_region::to_json): New. + (root_region::make_markup_node): New. + (thread_local_region::print_dump_widget_label): Rename to... + (thread_local_region::print_region_for_dump_widget_label): + ...this. + (thread_local_region::accept_node_visitor) New. + (thread_local_region::to_json): New. + (thread_local_region::make_markup_node): New. + (symbolic_region::print_dump_widget_label): Rename to... + (symbolic_region::print_region_for_dump_widget_label): ...this. + (symbolic_region::add_dump_widget_children): Update signature. + Dump m_sval_ptr. + (symbolic_region::accept_node_visitor) New. + (symbolic_region::to_json): New. + (symbolic_region::make_markup_node): New. + (decl_region::print_dump_widget_label): Rename to... + (decl_region::print_region_for_dump_widget_label): ...this. + (decl_region::accept_node_visitor) New. + (decl_region::to_json): New. + (decl_region::make_markup_node): New. + (decl_region::calc_svalue_for_constructor): Delete. + (decl_region::get_svalue_for_constructor): Reimplement. + (decl_region::get_bit_contents_for_constructor): New. + (decl_region::get_svalue_for_initializer): Reimplement. + (decl_region::maybe_get_bit_contents_for_initializer): New. + (field_region::print_dump_widget_label): Rename to... + (field_region::print_region_for_dump_widget_label): ...this. + (field_region::accept_node_visitor) New. + (field_region::to_json): New. + (field_region::make_markup_node): New. + (field_region::get_relative_concrete_offset): Drop. + (field_region::maybe_get_bit_offset_relative_to_parent): New. + (field_region::maybe_get_byte_offset_relative_to_parent): New. + (field_region::get_relative_symbolic_offset): Drop. + (element_region::print_dump_widget_label): Rename to... + (element_region::print_region_for_dump_widget_label): ...this. + (element_region::add_dump_widget_children): Update signature. + Dump m_index. + (element_region::accept_node_visitor) New. + (element_region::to_json): New. + (element_region::make_markup_node): New. + (element_region::maybe_get_bit_offset_relative_to_parent): New. + (element_region::maybe_get_byte_offset_relative_to_parent): New. + (element_region::get_relative_concrete_offset): Delete. + (element_region::get_relative_symbolic_offset): Delete. + (offset_region::print_dump_widget_label): Rename to... + (offset_region::print_region_for_dump_widget_label): ...this. + (offset_region::add_dump_widget_children): Update signature. + Dump m_byte_offset. + (offset_region::accept_node_visitor) New. + (offset_region::to_json): New. + (offset_region::make_markup_node): New. + (offset_region::get_relative_concrete_offset): Delete. + (offset_region::maybe_get_bit_offset_relative_to_parent): New. + (offset_region::get_relative_symbolic_offset): Delete. + (offset_region::maybe_get_byte_offset_relative_to_parent): New. + (sized_region::print_dump_widget_label): Rename to... + (sized_region::print_region_for_dump_widget_label): ...this. + (sized_region::add_dump_widget_children): Update signature. + (sized_region::accept_node_visitor) New. + (sized_region::to_json): New. + (sized_region::make_markup_node): New. + (sized_region::get_byte_size): Replace with... + (sized_region::maybe_get_byte_size): ...this. + (sized_region::get_bit_size): Replace with... + (sized_region::maybe_get_bit_size): ...this. + (sized_region::get_bit_size_sval): Drop. + (cast_region::print_dump_widget_label): Rename to... + (cast_region::print_region_for_dump_widget_label): ...this. + (cast_region::accept_node_visitor) New. + (cast_region::to_json): New. + (cast_region::make_markup_node): New. + (cast_region::get_relative_concrete_offset): Drop. + (cast_region::maybe_get_bit_offset_relative_to_parent): New. + (cast_region::maybe_get_byte_offset_relative_to_parent): New. + (heap_allocated_region::print_dump_widget_label): Rename to... + (heap_allocated_region::print_region_for_dump_widget_label): ...this. + (heap_allocated_region::accept_node_visitor) New. + (heap_allocated_region::to_json): New. + (heap_allocated_region::make_markup_node): New. + (alloca_region::print_dump_widget_label): Rename to... + (alloca_region::print_region_for_dump_widget_label): ...this. + (alloca_region::accept_node_visitor) New. + (alloca_region::to_json): New. + (alloca_region::make_markup_node): New. + (string_region::print_dump_widget_label): Rename to... + (string_region::print_region_for_dump_widget_label): ...this. + (string_region::accept_node_visitor) New. + (string_region::to_json): New. + (string_region::make_markup_node): New. + (bit_range_region::print_dump_widget_label): Rename to... + (bit_range_region::print_region_for_dump_widget_label): ..this. + (bit_range_region::accept_node_visitor): New. + (bit_range_region::to_json): New. + (bit_range_region::make_markup_node): New. + (bit_range_region::get_byte_size): Delete. + (bit_range_region::maybe_get_byte_size): New. + (bit_range_region::get_bit_size): Delete. + (bit_range_region::get_byte_size_sval): Delete. + (bit_range_region::get_bit_size_sval): Delete. + (bit_range_region::maybe_get_bit_size): New. + (bit_range_region::get_relative_concrete_offset): Delete. + (bit_range_region::maybe_get_bit_offset_relative_to_parent): New. + (bit_range_region::get_relative_symbolic_offset): Delete. + (bit_range_region::maybe_get_byte_offset_relative_to_parent): New. + (var_arg_region::print_dump_widget_label): Rename to... + (var_arg_region::print_region_for_dump_widget_label): ...this. + (var_arg_region::accept_node_visitor): New. + (var_arg_region::to_json): New. + (var_arg_region::make_markup_node): New. + (errno_region::print_dump_widget_label): Rename to... + (errno_region::print_region_for_dump_widget_label): ...this. + (errno_region::accept_node_visitor): New. + (errno_region::to_json): New. + (errno_region::make_markup_node): New. + (private_region::print_dump_widget_label): Rename to... + (private_region::print_region_for_dump_widget_label): ...this. + (private_region::accept_node_visitor): New. + (private_region::to_json): New. + (private_region::make_markup_node): New. + (unknown_region::print_dump_widget_label): Rename to... + (unknown_region::print_region_for_dump_widget_label): ...this. + (unknown_region::accept_node_visitor): New. + (unknown_region::to_json): New. + (unknown_region::make_markup_node): New. + * region.h: Drop include of "text-art/tree-widget.h". Add + includes of "analyzer/concrete-ranges.h", + "analyzer/symbolic-memory-offsets.h", + "analyzer/symbolic-memory-ranges.h", and + "analyzer/symbolic-pointers.h". + (region::symbolic_bit_count): New using decl. + (region::symbolic_byte_count): New using decl. + (region::print_dump_widget_label): New. + (region::print_region_for_dump_widget_label): New. + (region::add_dump_widget_children): New. + (region::get_any_dump_color): New. + (region::to_json): Delete in favor of node::to_json. + (region::make_dump_widget): Delete in favor of + node::make_dump_widget. + (region::involves_p): Delete in favor of node::involves_p. + (region::get_memory_offset): New. + (region::get_memory_range): New. + (region::get_offset): Delete. + (region::get_next_offset): Delete. + (region::get_byte_size): Delete. + (region::get_pointer): New. + (region::get_bit_size): Replace with... + (region::maybe_get_bit_size): ...this. + (region::maybe_get_byte_size): New. + (region::get_bit_size_sval): Delete. + (region::get_byte_size_sval): New. + (region::get_relative_concrete_offset): Replace with... + (region::maybe_get_bit_offset_relative_to_parent): ...this. + (region::get_relative_symbolic_offset): Delete. + (region::get_relative_concrete_byte_range): Delete. + (region::maybe_get_byte_offset_relative_to_parent): New. + (region::get_subregions_for_binding): Replace with... + (region::get_subregions_for_bit_range): ...this. + (region::empty_p): Add region_model_manager param. + (region::make_json_obj): New. + (region::calc_offset): Drop. + (region::calc_memory_offset): New. + (region::calc_memory_range): New. + (region::calc_pointer): New. + (region::print_dump_widget_label): Drop. + (region::add_dump_widget_children): Drop. + (region::add_dump_widget_children_for_region): Drop. + (region::m_cached_offset): Replace with... + (region::m_cached_memory_offset): ...this, + (region::m_cached_memory_range): ...this, + (region::m_cached_pointer): ...and this. + (frame_region::print_dump_widget_label): Rename to... + (frame_region::print_region_for_dump_widget_label): ...this. + (frame_region::accept_node_visitor): New. + (frame_region::to_json): New. + (frame_region::make_markup_node): New. + (globals_region::print_dump_widget_label): Rename to... + (globals_region::print_region_for_dump_widget_label): ...this. + (globals_region::accept_node_visitor): New. + (globals_region::to_json): New. + (globals_region::make_markup_node): New. + (code_region::print_dump_widget_label): Rename to... + (code_region::print_region_for_dump_widget_label): ...this. + (code_region::accept_node_visitor): New. + (code_region::to_json): New. + (code_region::make_markup_node): New. + (function_region::print_dump_widget_label): Rename to... + (function_region::print_region_for_dump_widget_label): ...this. + (function_region::accept_node_visitor): New. + (function_region::to_json): New. + (function_region::make_markup_node): New. + (label_region::print_dump_widget_label): Rename to... + (label_region::print_region_for_dump_widget_label): ...this. + (label_region::accept_node_visitor): New. + (label_region::to_json): New. + (label_region::make_markup_node): New. + (stack_region::print_dump_widget_label): Rename to... + (stack_region::print_region_for_dump_widget_label): ...this. + (stack_region::accept_node_visitor): New. + (stack_region::to_json): New. + (stack_region::make_markup_node): New. + (heap_region::print_dump_widget_label): Rename to... + (heap_region::print_region_for_dump_widget_label): ...this. + (heap_region::accept_node_visitor): New. + (heap_region::to_json): New. + (heap_region::make_markup_node): New. + (thread_local_region::print_dump_widget_label): Rename to... + (thread_local_region::print_region_for_dump_widget_label): ...this. + (thread_local_region::accept_node_visitor): New. + (thread_local_region::to_json): New. + (thread_local_region::make_markup_node): New. + (root_region::print_dump_widget_label): Rename to... + (root_region::print_region_for_dump_widget_label): ...this. + (root_region::accept_node_visitor): New. + (root_region::to_json): New. + (root_region::make_markup_node): New. + (symbolic_region::print_dump_widget_label): Rename to... + (symbolic_region::print_region_for_dump_widget_label): ...this. + (symbolic_region::accept_node_visitor): New. + (symbolic_region::to_json): New. + (symbolic_region::make_markup_node): New. + (symbolic_region::add_dump_widget_children): Update signature. + (decl_region::decl_region): Replace m_ctor with + m_ctor_bit_contents. + (decl_region::print_dump_widget_label): Rename to... + (decl_region::print_region_for_dump_widget_label): ...this. + (decl_region::accept_node_visitor): New. + (decl_region::to_json): New. + (decl_region::make_markup_node): New. + (decl_region::maybe_get_bit_contents_for_initializer): New. + (decl_region::get_bit_contents_for_constructor): New. + (decl_region::maybe_get_bit_vector_for_initializer): New. + (decl_region::calc_svalue_for_constructor): Drop. + (decl_region::m_ctor_svalue): Replace with... + (decl_region::m_ctor_bit_contents): ...this. + (field_region::print_dump_widget_label): Rename to... + (field_region::print_region_for_dump_widget_label): ...this. + (field_region::accept_node_visitor): New. + (field_region::to_json): New. + (field_region::make_markup_node): New. + (field_region::get_relative_concrete_offset): Drop. + (field_region::get_relative_symbolic_offset): Drop. + (field_region::maybe_get_bit_offset_relative_to_parent): New. + (field_region::maybe_get_byte_offset_relative_to_parent): New. + (element_region::print_dump_widget_label): Rename to... + (element_region::print_region_for_dump_widget_label): ...this. + (element_region::accept_node_visitor): New. + (element_region::to_json): New. + (element_region::make_markup_node): New. + (element_region::get_relative_concrete_offset): Drop. + (element_region::get_relative_symbolic_offset): Drop. + (element_region::maybe_get_bit_offset_relative_to_parent): New. + (element_region::maybe_get_byte_offset_relative_to_parent): New. + (offset_region::print_dump_widget_label): Rename to... + (offset_region::print_region_for_dump_widget_label): ...this. + (offset_region::add_dump_widget_children): Update signature. + (offset_region::accept_node_visitor): New. + (offset_region::to_json): New. + (offset_region::make_markup_node): New. + (offset_region::get_relative_concrete_offset): Drop. + (offset_region::get_relative_symbolic_offset): Drop. + (offset_region::maybe_get_bit_offset_relative_to_parent): New. + (offset_region::maybe_get_byte_offset_relative_to_parent): New. + (sized_region::print_dump_widget_label): Rename to... + (sized_region::print_region_for_dump_widget_label): ...this. + (sized_region::add_dump_widget_children): Update signature. + (sized_region::accept_node_visitor): New. + (sized_region::to_json): New. + (sized_region::make_markup_node): New. + (sized_region::get_byte_size): Drop. + (sized_region::get_bit_size): Drop. + (sized_region::get_byte_size_sval): Drop. + (sized_region::get_bit_size_sval): Drop. + (sized_region::maybe_get_byte_size): New. + (sized_region::maybe_get_bit_size): New. + (cast_region::print_dump_widget_label): Rename to... + (cast_region::print_region_for_dump_widget_label): ...this. + (cast_region::accept_node_visitor): New. + (cast_region::to_json): New. + (cast_region::make_markup_node): New. + (cast_region::maybe_get_bit_offset_relative_to_parent): New. + (cast_region::get_relative_concrete_offset): Drop. + (cast_region::maybe_get_byte_offset_relative_to_parent): New. + (heap_allocated_region::print_dump_widget_label): Rename to... + (heap_allocated_region::print_region_for_dump_widget_label): + ...this. + (heap_allocated_region::accept_node_visitor): New. + (heap_allocated_region::to_json): New. + (heap_allocated_region::make_markup_node): New. + (alloca_region::print_dump_widget_label): Rename to... + (alloca_region::print_region_for_dump_widget_label): ...this. + (alloca_region::accept_node_visitor): New. + (alloca_region::to_json): New. + (alloca_region::make_markup_node): New. + (string_region::print_dump_widget_label): Rename to... + (string_region::print_region_for_dump_widget_label): ...this. + (string_region::accept_node_visitor): New. + (string_region::to_json): New. + (string_region::make_markup_node): New. + (bit_range_region::key_t::key_t): Convert from bit_range to + concrete_bit_range. + (bit_range_region::key_t::hash): Likewise. + (bit_range_region::key_t::m_bits): Convert from bit_range to + concrete_bit_range. + (bit_range_region::bit_range_region): Likewise. + (bit_range_region::print_dump_widget_label): Rename to... + (bit_range_region::print_region_for_dump_widget_label): ...this. + (bit_range_region::accept_node_visitor): New. + (bit_range_region::to_json): New. + (bit_range_region::make_markup_node): New. + (bit_range_region::get_bits): New. + (bit_range_region::maybe_get_byte_size): New. + (bit_range_region::maybe_get_bit_size): New. + (bit_range_region::maybe_get_bit_offset_relative_to_parent): New. + (bit_range_region::maybe_get_byte_offset_relative_to_parent): New. + (bit_range_region::get_byte_size): Delete. + (bit_range_region::get_bit_size): Delete. + (bit_range_region::get_byte_size_sval): Delete. + (bit_range_region::get_bit_size_sval): Delete. + (bit_range_region::get_relative_concrete_offset): Delete. + (bit_range_region::get_relative_symbolic_offset): Delete. + (bit_range_region::m_bits): Convert from bit_range to + concrete_bit_range. + (var_arg_region::print_dump_widget_label): Rename to... + (var_arg_region::print_region_for_dump_widget_label): ...this. + (var_arg_region::accept_node_visitor): New. + (var_arg_region::to_json): New. + (var_arg_region::make_markup_node): New. + (errno_region::print_dump_widget_label): Rename to... + (errno_region::print_region_for_dump_widget_label): ...this. + (errno_region::accept_node_visitor): New. + (errno_region::to_json): New. + (errno_region::make_markup_node): New. + (private_region::print_dump_widget_label): Rename to... + (private_region::print_region_for_dump_widget_label): ...this. + (private_region::accept_node_visitor): New. + (private_region::to_json): New. + (private_region::make_markup_node): New. + (unknown_region::print_dump_widget_label): Rename to... + (unknown_region::print_region_for_dump_widget_label): ...this. + (unknown_region::accept_node_visitor): New. + (unknown_region::to_json): New. + (unknown_region::make_markup_node): New. + * setjmp-longjmp.cc: Include "diagnostics/markup.h". + (setjmp_svalue::print_dump_widget_label): Rename to... + (setjmp_svalue::print_svalue_for_dump_widget_label): ...this. + (setjmp_svalue::add_dump_widget_children): Update for param + change. + (setjmp_svalue::accept_node_visitor): New. + (setjmp_svalue::to_json): New. + (setjmp_svalue::make_markup_node): New. + * sm-fd.cc: Port from region_svalue to symbolic::pointer. Use + mark_region_as_unknown rather than trying to create a conjured + value. + * sm-file.cc: Port from region_svalue to symbolic::pointer. Use + mark_region_as_conjured rather than trying to create a conjured + value. + * sm-malloc.cc (malloc_state_machine::get_default_state): Handle + all zeros. Port from region_svalue to symbolic::pointer. + (add_state_to_state_graph): Port from region_svalue to + symbolic::pointer. + * sm-taint.cc (taint_diagnostic::describe_state_change): + Bulletproof against null change.m_expr. + (region_model::check_memory_range_for_taint): New. + (region_model::check_region_for_taint): Drop casts in RK_OFFSET + case. + * state-purge.cc (same_binding_p): Replace store_manager param + with region_model_manager. Reimplement from binding_key to + symbolic::memory_range. + (fully_overwrites_p): Update for above change. + * store.cc (dump_svalue_set): Delete. + (uncertainty_t::on_maybe_bound_value): New. + (uncertainty_t::dump_to_pp): Delete. + (uncertainty_t::on_mutable_value_at_unknown_call): New. + (uncertainty_t::unknown_sm_state_p): New. + (uncertainty_t::add_bit_contents): New. + (uncertainty_t::dump): Reimplement using dump widget. + (uncertainty_t::dump_to_logger): New. + (binding_key::make): Delete. + (binding_key::dump): Delete. + (binding_key::get_desc): Delete. + (binding_key::cmp_ptrs): Delete. + (binding_key::cmp): Delete. + (bit_range::from_mask): Delete. + (concrete_binding::dump_to_pp): Delete. + (concrete_binding::overlaps_p): Delete. + (concrete_binding::get_byte_range): Delete. + (concrete_binding::cmp_ptr_ptr): Delete. + (symbolic_binding::dump_to_pp): Delete. + (symbolic_binding::cmp_ptr_ptr): Delete. + (concrete_binding_map::dump_to_pp): Delete. + (concrete_binding_map::dump): Delete. + (concrete_binding_map::add_to_tree_widget): Delete. + (concrete_binding_map::validate): Delete. + (concrete_binding_map::cmp): Delete. + (concrete_binding_map::get_any_exact_binding): Delete. + (concrete_binding_map::calc_complexity): Delete. + (concrete_binding_map::remove_overlapping_binding): Delete. + (concrete_binding_map::remove_overlapping_bindings): Delete. + (concrete_binding_map::get_overlapping_bindings): Delete. + (binding_map::const_iterator::operator==): Delete. + (binding_map::const_iterator::operator++): Delete. + (binding_map::const_iterator::operator*): Delete. + (binding_map::const_iterator::get_svalue): Delete. + (binding_map::iterator::operator==): Delete. + (binding_map::iterator::operator++): Delete. + (binding_map::iterator::operator*): Delete. + (binding_map::binding_map): Delete. + (binding_map::binding_map): Delete. + (binding_map::operator=): Delete. + (binding_map::operator==): Delete. + (binding_map::hash): Delete. + (binding_map::get): Delete. + (binding_map::put): Delete. + (binding_map::overwrite): Delete. + (binding_map::remove): Delete. + (binding_map::begin): Delete. + (binding_map::end): Delete. + (binding_map::begin): Delete. + (binding_map::end): Delete. + (binding_map::elements): Delete. + (binding_map::dump_to_pp): Delete. + (binding_map::dump): Delete. + (binding_map::validate): Delete. + (binding_map::to_json): Delete. + (add_binding_to_tree_widget): Delete. + (binding_map::add_to_tree_widget): Delete. + (get_subregion_within_ctor): Move to initializers.cc. + (get_subregion_within_ctor_for_ctor_pair): Likewise. + (get_svalue_for_ctor_val): Delete, reusing in implementation of + initializers.cc. + (concrete_binding_map::apply_ctor_to_region): Likewise. + (concrete_binding_map::apply_ctor_val_to_range): Likewise. + (concrete_binding_map::apply_ctor_pair_to_child_region): Likewise. + (binding_map::get_overlapping_bindings): Delete. + (binding_map::remove_overlapping_bindings): Delete. + (binding_cluster::binding_cluster): Reimplement, adding + assertions. + (binding_cluster::to_json): New. + (binding_cluster::make_dump_widget): New. + (binding_cluster::get_bits): New. + (binding_cluster::set_bits): New. + (binding_cluster::mark_as_untracked): New. + (binding_cluster::operator=): Reimplement. + (binding_cluster::operator==): Reimplement. + (binding_cluster::hash): Reimplement. + (binding_cluster::dump_to_pp): Delete. + (binding_cluster::dump): Reimplement. + (binding_cluster::validate): Convert to nop-op + (binding_cluster::bind): Delete. + (binding_cluster::bind_key): Delete. + (binding_cluster::bind_compound_sval): Delete. + (binding_cluster::clobber_region): Delete. + (binding_cluster::purge_region): Delete. + (binding_cluster::fill_region): Delete. + (binding_cluster::zero_fill_region): Delete. + (binding_cluster::mark_region_as_unknown): Delete. + (binding_cluster::purge_state_involving): Delete. + (binding_cluster::get_binding): Delete. + (binding_cluster::get_binding_recursive): Delete. + (binding_cluster::get_any_binding): Delete. + (binding_cluster::maybe_get_compound_binding): Delete. + (binding_cluster::mark_as_untracked): New. + (binding_cluster::remove_overlapping_bindings): Delete. + (binding_cluster::purge_state_involving): New. + (binding_cluster::can_merge_p): Reimplement. + (class possibly_overwritten_values_visitor): New. + (binding_cluster::make_unknown_relative_to): Reimplement. + (binding_cluster::for_each_value): New. + (binding_cluster::on_unknown_fncall): Drop store_manager. + Delegate to... + (binding_cluster::mark_region_as_conjured): ...this new function. + (binding_cluster::on_unknown_fncall): Likewise. + (binding_cluster::on_asm): Reimplement. + (binding_cluster::escaped_p): Treat symbolic regions arising from + dereferencing a conjured pointer as having escaped. + (binding_cluster::redundant_p): Add store and baseline_state + params, and use them to compare against the implicit contents. + (append_pathvar_with_type): Make non-static. Handle type being + null. + (binding_cluster::get_representative_path_vars): Reimplement, + delegating to m_contents. + (binding_cluster::get_any_value): Delete. + (binding_cluster::maybe_get_simple_value): Delete. + (binding_cluster::poison_any_pointers_to_descendents): New. + (binding_cluster::bits_live_p): New. + (store_manager::get_logger): Delete. + (store_manager::get_concrete_binding): Delete. + (store_manager::get_symbolic_binding): Delete. + (store::store): Initialize m_node_mgr. + (store::dump_to_pp): Delete. + (store::dump): Reimplement using dump widget. + (get_string_for_baseline_state): New. + (store::make_dump_widget): Update for new signature. + (store::get_bits): New. + (store::get_any_binding): Delete. + (store::get_bit_contents): New. + (store::set_bits): New. + (store::set_value): Delete. + (store::set_bit_contents_raw): New. + (store::eval_alias_1): Use derived_from_initial_value_p rather + than comparing against SK_INITIAL. + (store::get_baseline_contents): New. + (store::get_implicit_contents): New. + (store::on_maybe_live_values): Drop store_manager. Add + baseline_state. + (store::bits_live_p): New. + (store::fill_region): Delete. + (store::zero_fill_region): Delete. + (store::clobber_region): Reimplement. + (store::purge_region): Reimplement. + (store::mark_region_as_unknown): Reimplement. + (store::purge_state_involving): Generalize from svalue + to symbolic::node. + (store::get_or_create_cluster): Drop store_manager param. + Add baseline_state param and use it to get the implicit contents + of the cluster and pass it to the binding_cluster ctor. + (store::can_merge_p): Drop store_manager param. Update for + changes to get_or_create_cluster and binding_cluster::can_merge_p. + (store::mark_as_escaped): Drop store_manager param. Add + baseline_state param and pass it to get_or_create_cluster. + (store::on_unknown_fncall): Drop store_manager param. + (store::mark_region_as_conjured): New. + (store::get_representative_path_vars): Use value_set rather + than svalue_set. + (store::remove_overlapping_bindings): Delete. + (struct region_finder): Delete. + (store::canonicalize): Convert to no-op. + (needs_loop_replay_fixup_p): Generalize from svalue to + symbolic::node. + (store::loop_replay_fixup): Add baseline_state. Port to new + implementation. + (store::replay_call_summary): Drop store_manager. Convert return + type to bool and support failure. + (store::replay_call_summary_cluster): Likewise. Port to new + implementation. + (store::replay_call_summary_bit_contents): New. + (selftest::assert_bit_range_from_mask_eq): Delete. + (ASSERT_BIT_RANGE_FROM_MASK_EQ): Delete. + (selftest::assert_no_bit_range_from_mask_eq): Delete. + (ASSERT_NO_BIT_RANGE_FROM_MASK): Delete. + (selftest::test_bit_range_from_mask): Delete. + (selftest::assert_overlap): Delete. + (selftest::assert_disjoint): Delete. + (ASSERT_OVERLAP): Delete. + (ASSERT_DISJOINT): Delete. + (selftest::test_binding_key_overlap): Delete. + (selftest::test_binding_map_ops): Delete. + (selftest::analyzer_store_cc_tests): Drop calls to deleted tests. + * store.h: Add includes of "analyzer/concrete-ranges.h", + "analyzer/symbolic-ranges.h", "analyzer/symbolic-bit-contents.h", + and "analyzer/symbolic-memory-ranges.h". Rewrite the introductory + comment. + (class uncertainty_t): Convert from svalue to symbolic::value_node + throughout. + (class binding_key): Delete. + (bit_range::from_mask): Delete. + (convert_from_bit_range): New. + (convert_to_bit_range): New. + (class concrete_binding): Delete. + (is_a_helper <const ana::concrete_binding *>::test): Delete. + (struct default_hash_traits<ana::concrete_binding>): Delete. + (class symbolic_binding): Delete. + (struct default_hash_traits<ana::symbolic_binding>): Delete. + (class concrete_binding_map): Delete. + (class binding_map): Delete. + (class binding_cluster): Flesh out leading comment. + (binding_cluster::const_iterator_t): Delete. + (binding_cluster::iterator_t): Delete. + (binding_cluster::binding_cluster): Drop store_manager, add + node_manager and bit_contents. + (binding_cluster::dump_to_pp): Delete. + (binding_cluster::dump): Drop param. + (binding_cluster::make_dump_widget): Update signature. + (binding_cluster::bind): Delete. + (binding_cluster::clobber_region): Delete. + (binding_cluster::purge_region): Delete. + (binding_cluster::fill_region): Delete. + (binding_cluster::zero_fill_region): Delete. + (binding_cluster::mark_region_as_unknown): Delete. + (binding_cluster::purge_state_involving): Update signature. + (binding_cluster::get_binding): Delete. + (binding_cluster::get_binding_recursive): Delete. + (binding_cluster::get_any_binding): Delete. + (binding_cluster::maybe_get_compound_binding): Delete. + (binding_cluster::remove_overlapping_bindings): Delete. + (binding_cluster::for_each_value): Update signature. + (binding_cluster::get_bits): New. + (binding_cluster::set_bits): New. + (binding_cluster::get_bit_contents): New. + (binding_cluster::set_bit_contents): New. + (binding_cluster::mark_as_untracked): New. + (binding_cluster::can_merge_p): Drop store_manager. + (binding_cluster::make_unknown_relative_to): Likewise. Add + baseline_state. + (binding_cluster::on_unknown_fncall): Drop store_manager. + (binding_cluster::mark_region_as_conjured): New. + (binding_cluster::on_asm): Drop store_manager. + (binding_cluster::redundant_p): Add store and baseline_state + params. + (binding_cluster::empty_p): Delete. + (binding_cluster::get_representative_path_vars): Update from + svalue_set to value_set. + (binding_cluster::maybe_get_simple_value): Delete. + (binding_cluster::begin): Delete. + (binding_cluster::end): Delete. + (binding_cluster::poison_any_pointers_to_descendents): New. + (binding_cluster::get_map): Delete. + (binding_cluster::bits_live_p): New. + (binding_cluster::get_any_value): Delete. + (binding_cluster::bind_compound_sval): Delete. + (binding_cluster::bind_key): Delete. + (binding_cluster::m_node_mgr): New field. + (binding_cluster::m_map): Replace with.. + (binding_cluster::m_contents): ...this. + (store::store): Add node_mgr param. + (store::dump_to_pp): Delete. + (store::dump): Drop param. + (store::make_dump_widget): Update signature. + (store::get_any_binding): Delete. + (store::get_bits): New. + (store::get_bit_contents): New. + (store::set_value): Delete. + (store::clobber_region): Drop store_manager. Add baseline_state + and region_model_manager. + (store::purge_region): Drop store_manager. + (store::fill_region): Drop. + (store::zero_fill_region): Drop. + (store::void mark_region_as_unknown): Drop store_manager. Add + baseline_state. Drop maybe_live_values. + (store::set_bits): New. + (store::set_bit_contents_raw): New. + (store::purge_state_involving): Generalize to symbolic::node. + (store::get_or_create_cluster): Drop store manager. Add + baseline_state. + (store::can_merge_p): Drop store_manager. + (store::mark_as_escaped): Drop store_manager. Add baseline_state. + (store::on_unknown_fncall): Drop store_manager. + (store::mark_region_as_conjured): New. + (store::get_representative_path_vars): Use value_set. + (store::canonicalize): Drop store_manager. + (store::loop_replay_fixup): Add baseline_state. + (store::on_maybe_live_values): Drop store_manager. Add + baseline_state. + (store::replay_call_summary): Convert return type to bool. + (store::replay_call_summary_cluster): Likewise. + (store::replay_call_summary_bit_contents): New. + (store::bits_live_p): New. + (store::remove_overlapping_bindings): Delete. + (store::get_implicit_contents): New. + (store::get_baseline_contents): New. + (store::m_node_mgr): New field. + (store::m_called_unknown_fn): Update comment. + (class store_manager): Delete. + * string-scan.cc: New file. + * string-scan.h: New file. + * svalue.cc: Add includes of "diagnostics/markup.h" and + "analyzer/liveness-context.h". + (svalue::print_dump_widget_label): New. + (svalue::add_dump_widget_children): New. + (svalue::dump): Reimplement. + (svalue::to_json): Delete. + (svalue::make_json_obj): New. + (svalue::maybe_print_for_user): Handle SK_BIT_VECTOR. + (svalue::make_dump_widget): Delete in favor of + node::make_dump_widget. + (svalue::for_each_svalue): New. + (svalue::has_concrete_size_p): New. + (svalue::maybe_get_region): Replace with... + (svalue::maybe_get_symbolic_pointer): ...this. + (svalue::can_merge_p): Add early accept for equal svalues. + Port from region_svalue to symbolic::pointer. + (svalue::live_p): Drop. + (svalue::implicitly_live_p): Drop. + (cmp_csts_and_types): Make non-static. + (svalue::cmp_ptr): Reimplement in terms of ID comparison. + (class involvement_visitor): Reimplement in symbolic-nodes.cc. + (svalue::involves_p): Delete in favor of node::involves_p. + (svalue::extract_bit_range): Delete. + (svalue::maybe_fold_bits_within): Delete. + (svalue::maybe_get_deref_base_region): Port SK_REGION case + to SK_POINTER. + (svalue::maybe_get_type_from_typeinfo): Port to symbolic::pointer. + (svalue::conjured_p): New. + (svalue::derived_from_initial_value_p): New. + (region_svalue::key_t::operator<): Replace with... + (pointer_svalue::key_t::operator<): ...this. + (pointer_svalue::key_t::get_complexity): New. + (region_svalue::dump_to_pp): Replace with... + (pointer_svalue::dump_to_pp): ...this. + (region_svalue::print_dump_widget_label): Replace with... + (pointer_svalue::print_svalue_for_dump_widget_label): ...this. + (region_svalue::add_dump_widget_children): Replace with... + (pointer_svalue::add_dump_widget_children): ...this. + (region_svalue::accept): Replace with... + (pointer_svalue::accept): ...this. + (pointer_svalue::accept_node_visitor): New. + (pointer_svalue::to_json): New. + (region_svalue::implicitly_live_p): Replace with... + (pointer_svalue::implicitly_live_p): ...this. + (pointer_svalue::make_markup_node): New. + (region_svalue::eval_condition): Delete in favor of + symbolic::pointer::eval_condition. + (constant_svalue::print_dump_widget_label): Rename to... + (constant_svalue::print_svalue_for_dump_widget_label): ...this. + (constant_svalue::add_dump_widget_children): Delete. + (constant_svalue::accept_node_visitor): New. + (constant_svalue::to_json): New. + (constant_svalue::make_markup_node): New. + (constant_svalue::implicitly_live_p): Update signature. + (constant_svalue::maybe_fold_bits_within): Delete. + (unknown_svalue::print_dump_widget_label): Convert to... + (unknown_svalue::print_svalue_for_dump_widget_label): ...this. + (unknown_svalue::add_dump_widget_children): Delete. + (unknown_svalue::accept_node_visitor): New. + (unknown_svalue::make_markup_node): New. + (unknown_svalue::maybe_fold_bits_within): Delete. + (poisoned_svalue::print_dump_widget_label): Rename to... + (poisoned_svalue::print_svalue_for_dump_widget_label): ...this. + (poisoned_svalue::add_dump_widget_children): Update signature. + (poisoned_svalue::accept_node_visitor): New. + (poisoned_svalue::to_json): New. + (poisoned_svalue::make_markup_node): New. + (poisoned_svalue::maybe_fold_bits_within): Delete. + (initial_svalue::initial_svalue): Move here from svalue.h. + Add assertions that m_reg is non-null and a base region. + (initial_svalue::print_dump_widget_label): Convert to... + (initial_svalue::print_svalue_for_dump_widget_label): ...this. + (initial_svalue::add_dump_widget_children): Update signature. + Chain up to base class. + (initial_svalue::accept_node_visitor): New. + (initial_svalue::to_json): New. + (initial_svalue::implicitly_live_p): Update for signature change. + (unaryop_svalue::print_dump_widget_label): Convert to... + (unaryop_svalue::print_svalue_for_dump_widget_label): ...this. + (unaryop_svalue::add_dump_widget_children): Update signature. + Chain up to base class. + (unaryop_svalue::accept_node_visitor): New. + (unaryop_svalue::to_json): New. + (unaryop_svalue::make_markup_node): New. + (unaryop_svalue::implicitly_live_p): Update for signature change. + (unaryop_svalue::maybe_fold_bits_within): Delete. + (binop_svalue::print_dump_widget_label): Convert to... + (binop_svalue::print_svalue_for_dump_widget_label): ...this. + (binop_svalue::add_dump_widget_children): Update signature. + Chain up to base class. + (binop_svalue::accept_node_visitor): New. + (binop_svalue::to_json): New. + (binop_svalue::make_markup_node): New. + (binop_svalue::implicitly_live_p): Update for signature change. + (sub_svalue::key_t::operator<): Delete. + (sub_svalue::sub_svalue): Delete. + (sub_svalue::dump_to_pp): Delete. + (sub_svalue::print_dump_widget_label): Delete. + (sub_svalue::add_dump_widget_children): Delete. + (sub_svalue::accept): Delete. + (sub_svalue::implicitly_live_p): Delete. + (repeated_svalue::key_t::operator<): Delete. + (repeated_svalue::repeated_svalue): Delete. + (repeated_svalue::dump_to_pp): Delete. + (repeated_svalue::print_dump_widget_label): Delete. + (repeated_svalue::add_dump_widget_children): Delete. + (repeated_svalue::accept): Delete. + (repeated_svalue::all_zeroes_p): Delete. + (repeated_svalue::maybe_fold_bits_within): Delete. + (bits_within_svalue::key_t::operator<): Delete. + (bits_within_svalue::bits_within_svalue): Delete. + (bits_within_svalue::dump_to_pp): Delete. + (bits_within_svalue::print_dump_widget_label): Delete. + (bits_within_svalue::add_dump_widget_children): Delete. + (bits_within_svalue::maybe_fold_bits_within): Delete. + (bits_within_svalue::accept): Delete. + (bits_within_svalue::implicitly_live_p): Delete. + (svalue_from_bit_vector::key_t::operator<): New. + (svalue_from_bit_vector::svalue_from_bit_vector): New. + (svalue_from_bit_vector::dump_to_pp): New. + (svalue_from_bit_vector::print_svalue_for_dump_widget_label): New. + (svalue_from_bit_vector::add_dump_widget_children): New. + (svalue_from_bit_vector::accept_node_visitor): New. + (svalue_from_bit_vector::to_json): New. + (svalue_from_bit_vector::make_markup_node): New. + (svalue_from_bit_vector::accept): New. + (svalue_from_bit_vector::implicitly_live_p): New. + (svalue_from_bit_vector::all_zeroes_p): New. + (svalue_from_bit_vector::maybe_get_value_range_1): New. + (svalue_from_bit_vector::conjured_p): New. + (widening_svalue::print_dump_widget_label): Rename to... + (widening_svalue::print_svalue_for_dump_widget_label): ...this. + (widening_svalue::add_dump_widget_children): Update for signature + change. Chain up to svalue implementation. + (widening_svalue::accept_node_visitor): New. + (widening_svalue::to_json): New. + (widening_svalue::make_markup_node): New. + (placeholder_svalue::print_dump_widget_label): Rename to... + (placeholder_svalue::print_svalue_for_dump_widget_label): ...this. + (placeholder_svalue::add_dump_widget_children): Delete. + (placeholder_svalue::accept_node_visitor): New. + (placeholder_svalue::to_json): New. + (placeholder_svalue::make_markup_node): New. + (unmergeable_svalue::print_dump_widget_label): Rename to... + (unmergeable_svalue::print_svalue_for_dump_widget_label): ...this. + (unmergeable_svalue::add_dump_widget_children): Update for + signature change Chain up to svalue implementation. + (unmergeable_svalue::implicitly_live_p): Update for signature + change. + (unmergeable_svalue::accept_node_visitor): New. + (unmergeable_svalue::to_json): New. + (unmergeable_svalue::make_markup_node): New. + (compound_svalue::key_t::operator<): Delete. + (compound_svalue::compound_svalue): Delete. + (compound_svalue::dump_to_pp): Delete. + (compound_svalue::print_dump_widget_label): Delete. + (compound_svalue::add_dump_widget_children): Delete. + (compound_svalue::accept): Delete. + (compound_svalue::maybe_fold_bits_within): Delete. + (conjured_svalue::key_t::operator<): Delete. + (conjured_svalue::dump_to_pp): Delete. + (conjured_svalue::print_dump_widget_label): Delete. + (conjured_svalue::add_dump_widget_children): Delete. + (conjured_svalue::accept): Delete. + (conjured_svalue::lhs_value_p): Delete. + (asm_output_svalue::print_dump_widget_label): Rename to... + (asm_output_svalue::print_svalue_for_dump_widget_label): ...this. + (asm_output_svalue::add_dump_widget_children): Update for + signature change. Chain up to svalue implementation. + (asm_output_svalue::accept_node_visitor): New. + (asm_output_svalue::to_json): New. + (make_markup_node): New. + (const_fn_result_svalue::dump_to_pp): Likewise. + (const_fn_result_svalue::print_dump_widget_label): Rename to... + (const_fn_result_svalue::print_svalue_for_dump_widget_label): + ...this. + (const_fn_result_svalue::add_dump_widget_children): Update for + signature change. Chain up to svalue implementation. + (const_fn_result_svalue::accept_node_visitor): New. + (const_fn_result_svalue::to_json): New. + (const_fn_result_svalue::make_markup_node): New. + * svalue.h: Drop include of "text-art/widget.h". Add include of + "analyzer/symbolic-pointers.h. Drop + "using text_art::dump_widget_info;" + (enum svalue_kind): Replace SK_REGION with SK_POINTER. + Drop SK_SUB, SK_REPEATED, SK_BITS_WITHIN, SK_COMPOUND, and + SK_CONJURED. Add SK_BIT_VECTOR. + (class svalue): Update leading comment to show changes to subclass + hierarchy. Inherit from symbolic::value_node rather than directly + from symbolic::node. + (svalue::dyn_cast_svalue): New. + (svalue::to_json): Delete in favor of node::to_json. + (svalue::make_dump_widget): Delete in favor of + node::make_dump_widget. + (svalue::print_dump_widget_label): New. + (svalue::print_svalue_for_dump_widget_label): New. + (svalue::add_dump_widget_children): New. + (svalue::get_any_dump_color): New vfunc implementation. + (svalue::dyn_cast_region_svalue): Delete in favor of... + (svalue::dyn_cast_pointer_svalue): ...this. + (svalue::dyn_cast_sub_svalue): Delete vfunc. + (svalue::dyn_cast_repeated_svalue): Delete vfunc. + (svalue::dyn_cast_bits_within_svalue): Delete vfunc. + (svalue::dyn_cast_compound_svalue): Delete vfunc. + (svalue::dyn_cast_conjured_svalue): Delete vfunc. + (svalue::dyn_cast_svalue_from_bit_vector): New vfunc. + (svalue::for_each_svalue): New decl. + (svalue::has_concrete_size_p): New decl. + (svalue::maybe_get_region): Replace with... + (svalue::maybe_get_symbolic_pointer): ...this. + (svalue::live_p): Drop. + (svalue::implicitly_live_p): New. + (svalue::involves_p): Drop in favor of node::involves_p. + (svalue::extract_bit_range): Drop. + (svalue::maybe_fold_bits_within): Drop. + (svalue::conjured_p): New vfunc decl. + (svalue::derived_from_initial_value_p): New decl. + (svalue::svalue): Update for inheriting from value_node. + (svalue::make_json_obj): New decl. + (svalue::print_dump_widget_label): Drop in favor of + node::print_dump_widget_label. + (svalue::add_dump_widget_children): Drop in favor of + node::add_dump_widget_children. + (class region_svalue): Replace with... + (class pointer_svalue): ...this. + (is_a_helper <const region_svalue *>::test): Replace with... + (is_a_helper <const pointer_svalue *>::test): ...this. + (constant_svalue::key_t): Fix copy&paste error in leading comment. + (constant_svalue::print_dump_widget_label): Rename to... + (constant_svalue::print_svalue_for_dump_widget_label): ...this. + (constant_svalue::add_dump_widget_children): Update signature. + (constant_svalue::accept_node_visitor): New decl. + (constant_svalue::to_json): New decl. + (constant_svalue::make_markup_node): New decl. + (constant_svalue::implicitly_live_p): Update signature. + (constant_svalue::maybe_fold_bits_within): Delete. + (unknown_svalue::print_dump_widget_label): Rename to... + (unknown_svalue::print_svalue_for_dump_widget_label): ...this. + (unknown_svalue::add_dump_widget_children): Update signature. + (unknown_svalue::accept_node_visitor): New decl. + (unknown_svalue::to_json): New decl. + (unknown_svalue::make_markup_node): New decl. + (unknown_svalue::maybe_fold_bits_within): Delete. + (enum class poison_kind): Move to common.h. + (poison_kind_to_str): Likewise. + (poisoned_svalue::print_dump_widget_label): Rename to... + (poisoned_svalue::print_svalue_for_dump_widget_label): ...this. + (poisoned_svalue::add_dump_widget_children): Update signature. + (poisoned_svalue::accept_node_visitor): New decl. + (poisoned_svalue::to_json): New decl. + (poisoned_svalue::make_markup_node): New decl. + (poisoned_svalue::maybe_fold_bits_within): Delete. + (setjmp_svalue::print_dump_widget_label): Rename to... + (setjmp_svalue::print_svalue_for_dump_widget_label): ...this. + (setjmp_svalue::add_dump_widget_children): Update signature. + (setjmp_svalue::accept_node_visitor): New decl. + (setjmp_svalue::to_json): New decl. + (setjmp_svalue::make_markup_node): New decl. + (class initial_svalue): Flesh out leading comment. + (initial_svalue::initial_svalue): Move ctor implementation to + svalue.cc. + (initial_svalue::print_dump_widget_label): Rename to... + (initial_svalue::print_svalue_for_dump_widget_label): ...this. + (initial_svalue::add_dump_widget_children): Update signature. + (initial_svalue::accept_node_visitor): New decl. + (initial_svalue::to_json): New decl. + (initial_svalue::make_markup_node): New decl. + (initial_svalue::implicitly_live_p): Update signature. + (class unaryop_svalue): Flesh out leading comment. + (unaryop_svalue::print_dump_widget_label): Rename to... + (unaryop_svalue::print_svalue_for_dump_widget_label): ...this. + (unaryop_svalue::add_dump_widget_children): Update signature. + (unaryop_svalue::accept_node_visitor): New decl. + (unaryop_svalue::to_json): New decl. + (unaryop_svalue::make_markup_node): New decl. + (unaryop_svalue::implicitly_live_p): Update signature. + (unaryop_svalue::maybe_fold_bits_within): Delete. + (class binop_svalue): Flesh out leading comment. + (binop_svalue::print_dump_widget_label): Rename to... + (binop_svalue::print_svalue_for_dump_widget_label): ...this. + (binop_svalue::add_dump_widget_children): Update signature. + (binop_svalue::accept_node_visitor): New decl. + (binop_svalue::to_json): New decl. + (binop_svalue::make_markup_node): New decl. + (binop_svalue::implicitly_live_p): Update signature. + (class sub_svalue): Delete. + (is_a_helper <const sub_svalue *>::test): Delete. + (class repeated_svalue): Delete. + (is_a_helper <const repeated_svalue *>::test): Delete. + (class bits_within_svalue): Delete. + (is_a_helper <const bits_within_svalue *>::test): Delete. + (class svalue_from_bit_vector): New. + (is_a_helper <const svalue_from_bit_vector *>::test): New. + (class unmergeable_svalue): Flesh out leading comment. + (unmergeable_svalue::print_dump_widget_label): Rename to... + (unmergeable_svalue::print_svalue_for_dump_widget_label): ...this. + (unmergeable_svalue::add_dump_widget_children): Update signature. + (unmergeable_svalue::accept_node_visitor): New decl. + (unmergeable_svalue::to_json): New decl. + (unmergeable_svalue::make_markup_node): New decl. + (unmergeable_svalue::implicitly_live_p): Update signature. + (placeholder_svalue::print_dump_widget_label): Rename to... + (placeholder_svalue::print_svalue_for_dump_widget_label): ...this. + (placeholder_svalue::add_dump_widget_children): Update signature. + (placeholder_svalue::accept_node_visitor): New decl. + (placeholder_svalue::to_json): New decl. + (placeholder_svalue::make_markup_node): New decl. + (class widening_svalue): Flesh out leading comment. + (widening_svalue::print_dump_widget_label): Rename to... + (widening_svalue::print_svalue_for_dump_widget_label): ...this. + (widening_svalue::add_dump_widget_children): Update signature. + (widening_svalue::accept_node_visitor): New decl. + (widening_svalue::to_json): New decl. + (widening_svalue::make_markup_node): New decl. + (class compound_svalue): Delete. + (is_a_helper <const compound_svalue *>::test): Delete. + (class conjured_purge): Move to symbolic-nodes.h. + (class conjured_svalue): Delete. + (is_a_helper <const conjured_svalue *>::test): Delete. + (class asm_output_svalue): Flesh out leading comment. + (asm_output_svalue::print_dump_widget_label): Rename to... + (asm_output_svalue::print_svalue_for_dump_widget_label): ...this. + (asm_output_svalue::add_dump_widget_children): Update signature. + (asm_output_svalue::accept_node_visitor): New decl. + (asm_output_svalue::to_json): New decl. + (asm_output_svalue::make_markup_node): New decl. + (const_fn_result_svalue::print_dump_widget_label): Rename to... + (const_fn_result_svalue::print_svalue_for_dump_widget_label): ...this. + (const_fn_result_svalue::add_dump_widget_children): Update signature. + (const_fn_result_svalue::accept_node_visitor): New decl. + (const_fn_result_svalue::to_json): New decl. + (const_fn_result_svalue::make_markup_node): New decl. + * symbolic-bit-contents.cc: New file. + * symbolic-bit-contents.h: New file. + * symbolic-bit-vectors.cc: New file. + * symbolic-bit-vectors.h: New file. + * symbolic-memory-offsets.h: New file. + * symbolic-memory-ranges.cc: New file. + * symbolic-memory-ranges.h: New file. + * symbolic-nodes.cc: Include "selftest.h", "diagnostics/markup.h", + "analyzer/symbolic-scalars.h", "analyzer/symbolic-bit-vectors.h", + and "analyzer/analyzer-selftests.h". + (symbolic::node::cmp_ids): Cast to int rarther than long. + (symbolic::node::cmp_ptr_ptr): New. + (symbolic::node::dump_to_pp): New. + (symbolic::node::dump): New. + (symbolic::node::dump_to_logger): New. + (symbolic::node::make_dump_widget): New. + (symbolic::node::make_json_obj): New. + (symbolic::node::start_any_dump_color): New. + (symbolic::node::end_any_dump_color): New. + (symbolic::node::get_text_art_tree_style): New. + (symbolic::node::involves_p): New. + (symbolic::value_node::implicitly_live_p): New. + (symbolic::pp_element_for_node::add_to_phase_2): New. + (symbolic::node_set<NodeClass>::contains): New. + (symbolic::node_set<NodeClass>::make_dump_widget): New. + (symbolic::node_set<NodeClass>::dump_to_pp): New. + (symbolic::node_set<NodeClass>::dump): New. + (symbolic::node_manager::node_manager): Create m_scalar_managers, + m_bit_contents_manager, and m_bit_vector_manager. + (symbolic::node_manager::log_stats): Add comment. + (symbolic::node_visitor::visit_bit_contents): New. + (symbolic::node_visitor::visit_bit_vector): New. + (symbolic::node_visitor::visit_region): New. + (symbolic::node_visitor::visit_scalar_unitless): New. + (symbolic::node_visitor::visit_scalar_bit): New. + (symbolic::node_visitor::visit_scalar_byte): New. + (symbolic::node_visitor::visit_svalue): New. + (symbolic::value_node_visitor::visit_bit_vector): New. + (symbolic::value_node_visitor::visit_svalue): New. + (selftest::assert_symbolic_node_dump_eq): New. + (selftest::assert_same_symbolic_node): New. + (selftest::assert_different_symbolic_node): New. + (selftest::assert_symbolic_node_markup_text_eq): New. + (selftest::test_node_visitor): New. + (selftest::analyzer_symbolic_nodes_cc_tests): New. + * symbolic-nodes.h: Include "pretty-print-markup.h", + "analyzer/analyzer-logging.h", "analyzer/units.h", + "analyzer/integer-with-unit.h", "text-art/tree-widget.h", and + "text-art/dump.h". + (node_manager::get_bit_contents_manager): New accessor. + (node_manager::get_bit_vector_manager): New accessor. + (node_manager::get_scalars): New accessor. + (node_manager::m_scalar_managers): New field. + (node_manager::m_bit_contents_manager): New field. + (node_manager::m_bit_vector_manager): New field. + (struct markup_context): New. + (class node): Expand leading comment. Delete copy/move + constructors/assignment operators. + (node::cmp): New. + (node::cmp_ptr_ptr): New decl. + (node::dump_to_pp): New decl. + (node::dump_to_logger): New decl. + (node::dump): New decl. + (node::make_dump_widget): New decl. + (node::get_any_dump_color): New vfunc decl. + (node::accept_node_visitor): New vfunc decl. + (node::to_json): New vfunc decl. + (node::make_markup_node): New vfunc decl. + (node::involves_p): New decl. + (node::start_any_dump_color): New decl. + (node::end_any_dump_color): New decl. + (node::get_text_art_tree_style): New decl. + (node::make_json_obj): New decl. + (node::print_dump_widget_label): New decl. + (node::add_dump_widget_children): New decl. + (struct CompareNodeIds): New. + (class pp_element_for_node): New. + (class node_set): New. + (node_set<NodeClass>::union_): New. + (node_set<NodeClass>::operator<): New. + (struct node_dump_state): New. + (dump_node_tree_to_pp): New. + (dump_node_tree_to_file): New. + (dump_node_tree_to_stderr): New. + (dump_node_tree_to_logger): New. + (value_set): New. + (class value_node): New. + (class node_visitor): New. + (class value_node_visitor): New. + (struct baseline_key): New. + (class conjured_purge): New. + (selftest::assert_symbolic_node_dump_eq): New decl. + (ASSERT_SYMBOLIC_NODE_DUMP_EQ): New. + (selftest::assert_same_symbolic_node): New. + (ASSERT_SAME_SYMBOLIC_NODE): New. + (ASSERT_SAME_SYMBOLIC_NODE_AT): New. + (selftest::assert_different_symbolic_node): New. + (ASSERT_DIFFERENT_SYMBOLIC_NODE): New. + (selftest::assert_symbolic_node_markup_text_eq): New. + (ASSERT_SYMBOLIC_NODE_MARKUP_TEXT_EQ): New. + * symbolic-pointers.cc: New file. + * symbolic-pointers.h: New file. + * symbolic-ranges.cc: New file, partly adapted from ranges.cc. + * symbolic-ranges.h: New file. + * symbolic-scalars.cc: New file. + * symbolic-scalars.h: New file. + * type.h: New file. + * varargs.cc: (get_va_copy_arg): Update leading comment to reflect + that this is just a pointer extracted from va_list, not the + va_list itself. Port to new implementation. Drop get_store_value + call in favor of get_rvalue. Unify some logic between the two + branches. + (get_stateful_arg): Add cast to ptr_type_node. + (kf_va_start::impl_call_pre): Use ptr_type_node. Port to new + implementation when marking region as unknown. + (kf_va_copy::impl_call_pre): Use ptr_type_node. Rename + "in_va_list" to "in_impl_ptr" as it's not necessarily a va_list. + Port from maybe_get_region to deref_rvalue. + (maybe_get_var_arg_region): Port from maybe_get_region to + deref_rvalue. + (maybe_get_var_arg_svalue): New. + (kf_va_arg::impl_call_pre): Port from maybe_get_region to + deref_rvalue, and use maybe_get_var_arg_svalue. + * write-to-const-diagnostics.cc: Rename "reg" to base_reg" throughout. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * access-diagram.cc: Update for introduction of + symbolic::node_manager, creating node_manager and + accessing its region_model_manager rather than creating + the latter directly. + * common.h (class symbolic::node_manager): New forward decl. + (class call_string): Likewise. + * constraint-manager.cc: Update for introduction of + symbolic::node_manager, creating node_manager instances and + accessing their region_model_manager rather than creating + instances of the latter directly. Update for region_model ctor + taking a node_manager & rather than a region_model_manager *. + * diagnostic-manager.cc: Likewise. + * engine.cc: Likewise. + * program-point.cc: Likewise. + * program-state.cc: Likewise. + * program-state.h: Likewise. + * ranges.cc: Likewise. + * region-model-manager.cc + (region_model_manager::region_model_manager): Add "node_mgr" param + and use it to initialize m_node_mgr. Update for move of + m_next_node_id into node_manager. + (region_model_manager::log_stats): Drop logging of m_next_node_id. + * region-model-manager.h + (region_model_manager::region_model_manager): Add "node_mgr" + param. + (region_model_manager::get_num_nodes): Move to node_manager. + (region_model_manager::alloc_node_id): Delegate to m_node_mgr. + (region_model_manager::get_node_manager): New accessor. + (region_model_manager::m_node_mgr): New field. + (region_model_manager::m_next_node_id): Move to node_manager. + * region-model.cc (region_model::region_model): Update param from + region_model_manager * to symbolic::node_manager &. + (engine::engine): Update for introduction of node_manager. + (engine::log_stats): Likewise. + (selftest) Update selftests for introduction of + symbolic::node_manager, creating node_manager instances and + accessing their region_model_manager rather than creating + instances of the latter directly. Update for region_model ctor + taking a node_manager & rather than a region_model_manager *. + * region-model.h (region_model::region_model): Change param from + region_model_manager * to symbolic::node_manager &. + (region_model::get_node_manager): New accessor. + (region_model::m_node_mgr): New field. + (engine::engine): Change param from region_model_manager & to + symbolic::node_manager &. + (engine::get_node_manager): New. + (engine::get_model_manager): New. + (engine::get_known_function_manager): Update. + (engine::m_mgr): Replace field with... + (engine::m_node_mgr): ...this. + * region.cc: Update for region_model ctor taking a node_manager & + rather than a region_model_manager *. + * sm-signal.cc (update_model_for_signal_handler): Likewise. + * state-purge.cc (state_purge_per_decl::process_worklists): + Likewise. + * store.cc (get_svalue_for_ctor_val): Likewise. + (selftest::test_binding_key_overlap): Update for introduction of + symbolic::node_manager + * symbolic-nodes.cc: Include "analyzer/analyzer-logging.h", + "analyzer/region-model.h", and "analyzer/region-model-manager.h". + (symbolic::node_manager::node_manager): New. + (ymbolic::node_manager::~node_manager): New. + (symbolic::node_manager::log_stats): New. + * symbolic-nodes.h (class node_manager): New. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * analyzer-selftests.cc (run_analyzer_selftests): Call + analyzer_complexity_cc_tests. + * analyzer-selftests.h (analyzer_complexity_cc_tests): New decl. + * complexity.cc: Include "selftest.h". + (complexity::complexity): New ctor. + (complexity::from_child_complexities): New. + (complexity::operator+): New. + (complexity::operator+=): New. + (selftest::analyzer_complexity_cc_tests): New. + * complexity.h (complexity::complexity): New ctor decl. + (complexity::from_child_complexities): New decl. + (complexity::operator+): New decl. + (complexity::operator+=): New decl. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * common.h (class symbolic::node): New forward decl. + * complexity.cc: Update comment. + * complexity.h: Likewise. + * kf.cc: Update for renaming of + region_model_manager::alloc_symbol_id to + region_model_manager::alloc_node_id. + * region-model-manager.cc: Update for renaming of + region_model_manager::alloc_symbol_id to + region_model_manager::alloc_node_id, and m_next_symbol_id to + m_next_node_id. + * region-model-manager.h (region_model_manager::get_num_symbols): + Rename to... + (region_model_manager::get_num_nodes): ...this. + (region_model_manager::alloc_symbol_id): Rename to... + (region_model_manager::alloc_node_id): ...this. + (region_model_manager::m_next_symbol_id): Rename to... + (region_model_manager::m_next_node_id): ...this. + * region-model.cc: Update for renaming of + region_model_manager::alloc_symbol_id to + region_model_manager::alloc_node_id. + * region.cc: Likewise. Rename "symbol" to "symbolic::node" + throughout. + * region.h: Likewise. Replace include of "analyzer/symbol.h" with + "analyzer/symbolic-nodes.h". + * svalue.cc: Likewise. + * svalue.h: Likewise. + * symbol.cc: Rename to... + * symbolic-nodes.cc: .. .this. Replace include of + "analyzer/symbol.h" with "analyzer/symbolic-nodes.h". Rename + "symbol" to "symbolic::node" throughout. + * symbol.h: Rename to... + * symbolic-nodes.h: ...this, updating include guards. + (class symbol): Rename to... + (symbolic::node): ...this. Flesh out leading comment somewhat. + Modernize "id_t" to Use "using" rather than "typedef". Add + virtual dtor. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * analyzer-selftests.cc (run_analyzer_selftests): Call + analyzer_concrete_ranges_cc_tests. + * analyzer-selftests.h (analyzer_concrete_ranges_cc_tests): New + decl. + * concrete-ranges.cc: New file, based in parts on material from + ranges.cc + * concrete-ranges.h: New file. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * analyzer-selftests.cc (run_analyzer_selftests): Call + analyzer_integer_with_unit_cc_tests. + * analyzer-selftests.h (analyzer_integer_with_unit_cc_tests): New + decl. + * integer-with-unit.cc: New file. + * integer-with-unit.h: New file. + * units.h: New file. + +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * analyzer-selftests.cc (run_analyzer_selftests): Call + analyzer_integer_cc_tests. + * analyzer-selftests.h (analyzer_integer_cc_tests): New decl. + * integer.cc: New file. + * integer.h: New file. + 2026-10-28 David Malcolm <dmalcolm@redhat.com> * common.h (cmp_types): New decl.
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index ec3821c..c76e3d0 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog
@@ -1,3 +1,10 @@ +2026-11-13 Christopher Bazley <chris.bazley@arm.com> + + PR c/128606 + * gimple-parser.cc (c_parser_gimple_postfix_expression): + Substitute a call to constant_lower_bound () in place of + to_constant (). + 2026-11-11 Matt Turner <mattst88@gmail.com> PR c/125418
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1bc8b3c..ece4b4b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@ +2026-11-13 Jason Merrill <jason@redhat.com> + + * decl2.cc (c_parse_final_cleanups): Build contract wrappers + after finish_module_processing. + 2026-11-12 Jason Merrill <jason@redhat.com> * contracts.cc (lookup_std_type): Set TREE_PUBLIC.
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog index 1ae3d57..c73a4d0 100644 --- a/gcc/d/ChangeLog +++ b/gcc/d/ChangeLog
@@ -1,3 +1,12 @@ +2026-11-13 Guillaume Gomez <contact@guillaume-gomez.fr> + + * d-attribs.cc (handle_noreturn_attribute, handle_malloc_attribute) + (handle_nonnull_attribute, handle_transaction_pure_attribute) + (handle_omp_declare_simd_attribute, d_handle_noreturn_attribute) + (d_handle_malloc_attribute, d_handle_nonnull_attribute) + (d_handle_transaction_pure_attribute) + (d_handle_omp_declare_simd_attribute): Prepend functions with `d_` + 2026-11-10 Arsen Arsenović <aarsenovic@baylibre.com> * d-codegen.cc (build_vthis_function): Update to use new
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2d2bf16..013f128 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,20 @@ +2026-11-13 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/82173 + * expr.cc (gfc_pdt_requires_hidden_arg): Change attr.pointer to + attr->class_pointer to obtain intended result. + * trans-expr.cc (gfc_conv_procedure_call): Extend result copying + for array transformational functions to include parameterized as + well as allocatable components. For function calls that are not + direct_byref, deallocate the temporary paramterized components + to prevent double frees of the argument components on leaving + scope. + (gfc_trans_arrayfunc_assign): For array transformational like- + wise deallocate paramterized components. + * trans-intrinsic.cc (copy_pdt_components): New function to + copy the result paramterized componts for the same reason. + (gfc_conv_intrinsic_merge, gfc_conv_intrinsic_transfer): Use it. + 2026-11-12 Harald Anlauf <anlauf@gmx.de> PR fortran/128656
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog index b2cc5dd..fc42436 100644 --- a/gcc/jit/ChangeLog +++ b/gcc/jit/ChangeLog
@@ -1,3 +1,16 @@ +2026-11-13 Guillaume Gomez <contact@guillaume-gomez.fr> + + * dummy-frontend.cc (handle_cold_attribute, handle_format_arg_attribute) + (handle_format_attribute, handle_nonnull_attribute) + (handle_noreturn_attribute, handle_patchable_function_entry_attribute) + (handle_sentinel_attribute, handle_transaction_pure_attribute) + (jit_handle_cold_attribute, jit_handle_format_arg_attribute) + (jit_handle_format_attribute, jit_handle_nonnull_attribute) + (jit_handle_noreturn_attribute) + (jit_handle_patchable_function_entry_attribute) + (jit_handle_sentinel_attribute, jit_handle_transaction_pure_attribute): + Prepend functions with `jit_` + 2026-11-10 Arsen Arsenović <aarsenovic@baylibre.com> * dummy-frontend.cc (tree_type_to_jit_type):Update to use new
diff --git a/gcc/rust/ChangeLog b/gcc/rust/ChangeLog index 44a18f5..f721bba 100644 --- a/gcc/rust/ChangeLog +++ b/gcc/rust/ChangeLog
@@ -1,3 +1,15 @@ +2026-11-13 Guillaume Gomez <contact@guillaume-gomez.fr> + + * rust-attribs.cc (handle_noreturn_attribute) + (rust_handle_noreturn_attribute, handle_malloc_attribute) + (rust_handle_malloc_attribute, handle_nonnull_attribute) + (rust_handle_nonnull_attribute, handle_transaction_pure_attribute) + (rust_handle_transaction_pure_attribute) + (handle_omp_declare_simd_attribute) + (rust_handle_omp_declare_simd_attribute, handle_cold_attribute) + (handle_hot_attribute, rust_handle_cold_attribute) + (rust_handle_hot_attribute): Prepend functions with `rust_` + 2026-11-10 Arsen Arsenović <aarsenovic@baylibre.com> * backend/rust-tree.cc (rs_type_quals): Update to use and return
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 42d682c..ba86f79 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,286 @@ +2026-11-13 David Malcolm <dmalcolm@redhat.com> + + * c-c++-common/analyzer/aliasing-6.c: New test. + * c-c++-common/analyzer/attr-const-3.c: Tweak depth param. + * c-c++-common/analyzer/call-summaries-malloc.c: Add xfails. + * c-c++-common/analyzer/call-summaries-pr107158-2.c: Drop xfails. + * c-c++-common/analyzer/call-summaries-pr107158.c: Likewise. + * c-c++-common/analyzer/capacity-1.c (test_4): Update expected + capacity message. + * c-c++-common/analyzer/compound-assignment-5.c: Drop comment. + * c-c++-common/analyzer/deref-before-check-3.c: New test. + * c-c++-common/analyzer/double-free-2.c: New test. + * c-c++-common/analyzer/flex-with-call-summaries.c: Drop xfail. + * c-c++-common/analyzer/flex-without-call-summaries.c: Update + expected results. + * c-c++-common/analyzer/infinite-loop-doom-d_main-IdentifyVersion.c: + Add dg-bogus for leak false positive seen whilst developing patch. + * c-c++-common/analyzer/large-constants.c: New test. + * c-c++-common/analyzer/leak-multiple-returns.c: New test. + * c-c++-common/analyzer/leak-pr108045-with-call-summaries.c: Drop + xfails. + * c-c++-common/analyzer/leak-pr126831.c: New test. + * c-c++-common/analyzer/leak-pr126832.c: New test. + * c-c++-common/analyzer/loop-0-up-to-n-by-1-with-iter-obj.c: Add + expected "UNKNOWN" in 2nd iteration. + * c-c++-common/analyzer/loop-2.c: Likewise. Update expected + constraint after loop. + * c-c++-common/analyzer/loop-2a.c: Likewise. + * c-c++-common/analyzer/maybe-live-1.c: New test. + * c-c++-common/analyzer/maybe-live-2.c: New test. + * c-c++-common/analyzer/null-compare.c: New test. + * c-c++-common/analyzer/null-terminated-strings-2.c: Drop xfails. + * c-c++-common/analyzer/out-of-bounds-bits.c: New test. + * c-c++-common/analyzer/out-of-bounds-diagram-11.c: Update + expected diagram to show simplication of + '(size * 16) - (size * 4)' to 'size * 12'. + (test_99): Add expected output now that new implementation is able + to create a diagram for this case. + * c-c++-common/analyzer/out-of-bounds-diagram-3.c: Update expected + diagram. + * c-c++-common/analyzer/out-of-bounds-diagram-pr110928.c: Update + comment and expected output. Fix missing "return". + * c-c++-common/analyzer/out-of-bounds-pr114472.c: Add expected + warnings from analyzer. + * c-c++-common/analyzer/paths-5.c: Tweak number of expected + exploded nodes. + * c-c++-common/analyzer/pointer-comparison-pr125304-eq.c + (test_pointer_eq): Drop xfails. + (test_string_literals): Likewise. + * c-c++-common/analyzer/pointer-comparison-pr125304-ge.c + (test_pointer_ge): Likewise. + * c-c++-common/analyzer/pointer-comparison-pr125304-gt.c + (test_pointer_gt): Likewise. + * c-c++-common/analyzer/pointer-comparison-pr125304-le.c + (test_pointer_le): Likewise. + * c-c++-common/analyzer/pointer-comparison-pr125304-lt.c + (test_pointer_lt): Likewise. + * c-c++-common/analyzer/strlen-pr113999.c: Include + "analyzer-decls.h" and use it to tighten up the expected results. + * c-c++-common/analyzer/strncpy-1.c (test_zero_fill): Remove + xfails. + * c-c++-common/analyzer/symbolic-1.c: Update comment referring to + store.h. + * c-c++-common/analyzer/symbolic-4.c: Update expected result. + * c-c++-common/analyzer/taint-inheritance.c: New test. + * c-c++-common/analyzer/uintptr-cast-double-free.c: New test. + * c-c++-common/analyzer/use-after-free-4.c: New test. + * c-c++-common/analyzer/use-after-free-5.c: New test. + * g++.dg/analyzer/fanalyzer-show-events-in-system-headers-default.C: + Update expected message. + * g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C: + Likewise. + * g++.dg/analyzer/initializers-with-RANGE_EXPR.C: New test. + * g++.dg/analyzer/out-of-bounds-placement-new.C: Add expected + warning about allocation size. + * g++.dg/analyzer/pr100244.C: Add -fno-sized-deallocation. + * g++.dg/analyzer/std-unique_ptr-3.C: New test. + * g++.dg/analyzer/torture/std-string-ctor-large-literal.C + (test_ctor_large): Remove xfail. + * g++.dg/analyzer/torture/std-string-ctor-small-literal.C + (test_ctor_small): Likewise. + * gcc.dg/analyzer/analyzer-decls.h (__analyzer_hexdump): New decl. + * gcc.dg/analyzer/boxed-malloc-1.c: Tweak expected messages. + * gcc.dg/analyzer/call-summaries-2.c: Update expected messages to + reflect improved precision of analysis; remove and add xfails. + * gcc.dg/analyzer/data-model-1.c: Include <stdint.h>. + (union u): Convert "i" from "int" to "intptr_t". + * gcc.dg/analyzer/doom-d_main-IdentifyVersion.c: Add dg-bogus for + leak false positive seen whilst developing patch. Drop xfails. + * gcc.dg/analyzer/ice-pr113496.c: Add warning about uninitialized + return value. + * gcc.dg/analyzer/leak-expressions-1.c: New test. + * gcc.dg/analyzer/leak-pr126832-macro.c: New test. + * gcc.dg/analyzer/mkdtemp-1.c (test_errno): Split into... + (test_errno_possibly_aliased): ...this and... + (test_errno_not_aliased): ...this. + * gcc.dg/analyzer/null-deref-pr102671-1.c: Add + -Wno-analyzer-too-complex. + * gcc.dg/analyzer/null-terminated-strings-1.c: Update expected + results. Rewrite tests to avoid use of __analyzer_describe. + * gcc.dg/analyzer/out-of-bounds-diagram-1-debug.c: Update expected + diagram for changes in how byte ranges are displayed. + * gcc.dg/analyzer/out-of-bounds-diagram-16.c: Update expected + diagram to show where write is from. + * gcc.dg/analyzer/out-of-bounds-diagram-2.c: Update expected + diagram for changes to size allocation. + * gcc.dg/analyzer/out-of-bounds-diagram-9.c: Update expected + diagram. + * gcc.dg/analyzer/pattern-test-2.c: Update expected messages. + * gcc.dg/analyzer/pipe-1.c: Drop tests of __analyzer_describe. + * gcc.dg/analyzer/pipe2-1.c: Likewise. + * gcc.dg/analyzer/pr104417.c (warn_realloc_extern_ptrarr_offset): + Add expected -Wanalyzer-free-of-non-heap warning. + * gcc.dg/analyzer/pr104434-nonconst.c (exit_level_0:): Drop + xfails. + * gcc.dg/analyzer/pr93355-localealias.c (read_alias_file): Drop + xfail. + * gcc.dg/analyzer/pr93382.c: Drop xfail. + * gcc.dg/analyzer/single-field.c: Update expected result of + __analyzer_describe. + * gcc.dg/analyzer/state-diagram-2.c (test_pointer_to_global): Add + xfail. + * gcc.dg/analyzer/state-diagram-5-sarif.py: Update for changes in + JSON output. + * gcc.dg/analyzer/stdarg-1-ms_abi.c: Tweak expected messages. + * gcc.dg/analyzer/stdarg-1.c: Tweak expected messages for + target-specific differences in whether the message reports what + leaked. + * gcc.dg/analyzer/stdarg-2.c: Likewise. + * gcc.dg/analyzer/strcpy-3.c: Drop test of __analyzer_describe. + * gcc.dg/analyzer/strlen-1.c (call_strlen_6a): New. + (test_memcpy_without_termination): New. + (call_strlen_6b): New. + (test_memcpy_with_manual_termination): New. + * gcc.dg/analyzer/taint-read-offset-1.c: Update expected messages. + Add xfail about false positive. + * gcc.dg/analyzer/torture/loop-inc-ptr-2.c: Tweak expected number + of exploded nodes. + * gcc.dg/analyzer/torture/pr59037.c: Add comment and + -Wno-analyzer-use-of-uninitialized-value. + * gcc.dg/analyzer/unknown-fns-5.c: New test. + * gcc.dg/analyzer/unknown-fns-6.c: New test. + * gcc.dg/analyzer/vla-1.c (test_1): Mark test as xfailing. + (test_vla_ptr): New test. + * gcc.dg/plugin/infoleak-CVE-2011-1078-1.c: Add + -Wno-analyzer-use-of-uninitialized-value. + * gcc.dg/plugin/infoleak-uninit-size-1.c (test_uninit_size): Add + expected warning. + * gcc.dg/plugin/infoleak-vfio_iommu_type1.c: Remove xfail. + * gcc.dg/plugin/taint-pr112850-too-complex.c: Tweak depth param. + +2026-11-13 Alexandre Oliva <oliva@adacore.com> + + * gcc.target/i386/pr92080-13.c: Add -no-pie. + +2026-11-13 Andrea Pinski <andrew.pinski@oss.qualcomm.com> + + * gcc.dg/tree-ssa/vrp-cmp-sub-ptr-1.c: New test. + +2026-11-13 Andrea Pinski <andrew.pinski@oss.qualcomm.com> + + * gcc.dg/tree-ssa/vrp-cmp-sub-4.c: New test. + * gcc.dg/tree-ssa/vrp-cmp-sub-5.c: New test. + +2026-11-13 Uros Bizjak <ubizjak@gmail.com> + + PR target/128662 + * gcc.target/i386/pr128662.c: New test. + * gcc.target/i386/pr78103-1.c (dg-options): Add + -mtune-ctrl=^avoid_false_dep_for_bsr. + * gcc.target/i386/pr78103-2.c: Ditto. + * gcc.target/i386/pr78103-3.c: Ditto. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * gcc.target/aarch64/neon/vshll_n.c: New test. + * gcc.target/aarch64/neon/shift_imm_range.c: Likewise. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * gcc.target/aarch64/neon/vshrn_n.c: New test. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * gcc.target/aarch64/neon/vsli_n.c: New test. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * gcc.target/aarch64/neon/vqshl_n.c: New test. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * gcc.target/aarch64/neon/vrshr_n.c: New test. + * gcc.target/aarch64/arg-type-diagnostics-1.c: Update the expected + message for a non-constant shift amount. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * gcc.target/aarch64/neon/vshl.c: New test. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * gcc.target/aarch64/neon/vshl_n.c: New test. + * gcc.target/aarch64/neon/vshr_n.c: Likewise. + * gcc.target/aarch64/neon/vsra_n.c: Likewise. + * gcc.target/aarch64/scalar_intrinsics.c: vsrad_n now folds to a + shifted add. + * gcc.target/aarch64/sshr64_1.c: Drop the shift-by-zero case, which + the ACLE does not allow. + * gcc.target/aarch64/ushr64_1.c: Likewise. + * gcc.target/aarch64/advsimd-intrinsics/vshl-opt-3.c: An arithmetic + shift right by the element width now folds. + +2026-11-13 Dhruv Chawla <dhruvc@nvidia.com> + + * gcc.target/aarch64/neon/arm_neon_test.h (TEST_UNARY_N, + TEST_UNIFORM_UNARY_N, TEST_BINARY_N, TEST_UNIFORM_BINARY_N): New + macros. + +2026-11-13 Karl Meakin <karl.meakin@arm.com> + + * gcc.target/aarch64/fmla_intrinsic_1.c: Rewrite `TEST_VMLA` + so the lane choice is always valid and doesn't cause a compiler + error when trying to call `vfma`. Also remove excessive + backslashes from dejagnu directives. + * gcc.target/aarch64/fmls_intrinsic_1.c: Likewise. + * gcc.target/aarch64/simd/pr99195_3.c: Add + `-fno-trapping-math` to prevent the optimization barrier being + introduced and generating unnecessary `fmov`s. + * gcc.target/aarch64/neon/vfma.c: New test. + * gcc.target/aarch64/neon/vfms.c: New test. + +2026-11-13 Karl Meakin <karl.meakin@arm.com> + + * gcc.target/aarch64/neon/vmla.c: New test. + * gcc.target/aarch64/neon/vmls.c: New test. + +2026-11-13 Christopher Bazley <chris.bazley@arm.com> + + PR c/128606 + * gcc.target/aarch64/sve/pr128606_1.c, + gcc.target/aarch64/sve/pr128606_10.c, + gcc.target/aarch64/sve/pr128606_11.c, + gcc.target/aarch64/sve/pr128606_2.c, + gcc.target/aarch64/sve/pr128606_3.c, + gcc.target/aarch64/sve/pr128606_4.c, + gcc.target/aarch64/sve/pr128606_5.c, + gcc.target/aarch64/sve/pr128606_6.c, + gcc.target/aarch64/sve/pr128606_7.c, + gcc.target/aarch64/sve/pr128606_8.c, + gcc.target/aarch64/sve/pr128606_9.c: New tests. + * gcc.target/aarch64/sve/pr128606_primes.h: Shared test code. + +2026-11-13 Suganya Thirumurthy <Suganya.Thirumurthy@amd.com> + + * gcc.target/i386/vectorize-aocl1.c: Also test amd_vrd2_acos, + amd_vrd4_acos, amd_vrd8_acos, amd_vrs8_acosf, amd_vrd2_asin, + amd_vrd4_asin, amd_vrd4_atan, amd_vrd2_atan2, amd_vrd4_atan2, + amd_vrd8_atan2, amd_vrd2_cbrt, amd_vrs4_cbrtf, amd_vrs8_cbrtf, + amd_vrd2_cosh, amd_vrd4_cosh, amd_vrd8_cosh, amd_vrs16_coshf, + amd_vrd2_erfc, amd_vrd4_erfc, amd_vrd8_erfc, amd_vrs4_erfcf, + amd_vrs8_erfcf, amd_vrs16_erfcf, amd_vrd4_exp10, amd_vrd8_exp10, + amd_vrs8_exp10f, amd_vrs16_exp10f, amd_vrs4_tanf, amd_vrs8_tanf, + amd_vrd2_tanh, amd_vrd4_tanh and amd_vrd8_tanh. Adjust + scan-assembler-times patterns with word boundaries (\m...\M). + Without them, names such as amd_vrd4_cos also matched + amd_vrd4_cosh, and similar collisions occurred for tan/tanh, + atan/atan2 and erf/erfc. + +2026-11-13 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/82173 + * gfortran.dg/pdt_bug26.f90: New test. + +2026-11-13 Jiawei <jiawei@iscas.ac.cn> + + * gcc.target/riscv/zbs-bext-3.c: New test. + +2026-11-13 Kael Andrew Franco <kaelfandrew@gmail.com> + + PR ipa/128491 + * gcc.dg/pr128491.c: New test. + 2026-11-12 Andrew MacLeod <amacleod@redhat.com> PR tree-optimization/127915
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index d82793c..7760f33 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog
@@ -1,3 +1,7 @@ +2026-11-13 LIU Hao <lh_mouse@126.com> + + * config/i386/cygwin.S: Fix a typo in `___chkstk`. + 2026-11-10 Pietro Monteiro <pietro@sociotechnical.xyz> * configure: Regenerate.
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c53c1a2..e8eaf0a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,86 @@ +2026-11-13 Jonathan Wakely <jwakely@redhat.com> + + * include/std/algorithm: Add comment to #endif. + * include/std/numeric: Use __cpp_lib_parallel_algorithm feature + test macro instead of __cplusplus and _GLIBCXX_HOSTED. + +2026-11-13 Jonathan Wakely <jwakely@redhat.com> + + * include/bits/regex.h (basic_regex::assign(I, I, * flag_type)): + Tweak comment to use T instead of _T. + +2026-11-13 Jonathan Wakely <jwakely@redhat.com> + + * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: + Replace references to namespace __pstl with std. + * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: + Likewise. + * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: Likewise. + * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: + Likewise. + * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: + Likewise. + * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: Likewise. + * testsuite/util/pstl/test_utils.h: Likewise. + +2026-11-13 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/128548 + * src/c++11/thread.cc (thread::join): Check for self-join. + * testsuite/30_threads/thread/members/128548.cc: New test. + +2026-11-13 Jonathan Wakely <jwakely@redhat.com> + + * include/std/type_traits (_GLIBCXX_HAS_NESTED_TYPE): Remove + macro. + * testsuite/20_util/reference_wrapper/typedefs-3.cc: Define + test traits without using _GLIBCXX_HAS_NESTED_TYPE. + +2026-11-13 Tomasz Kamiński <tkaminsk@redhat.com> + + * include/bits/stl_pair.h (std::get(const tuple<...>&)): Moved + from... + * include/std/tuple (std::get<_Int>): Move deleted overload for out + of bounds index to bits/stl_pair.h. Qualify remaining definitions. + * include/std/array (std::get<_Int>): Qualify definitions. + * include/std/complex (std::get<_Int>): Qualify definitions. + 2026-11-10 Jonathan Wakely <jwakely@redhat.com> * include/std/charconv (__to_chars_unsigned_type): Remove.