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

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by David Malcolm <dmalc...@gcc.gnu.org>:

https://gcc.gnu.org/g:ded2c2c068f6f2825474758cb03a05070a5837e8

commit r12-2749-gded2c2c068f6f2825474758cb03a05070a5837e8
Author: David Malcolm <dmalc...@redhat.com>
Date:   Wed Aug 4 18:21:21 2021 -0400

    analyzer: initial implementation of asm support [PR101570]

    gcc/ChangeLog:
            PR analyzer/101570
            * Makefile.in (ANALYZER_OBJS): Add analyzer/region-model-asm.o.

    gcc/analyzer/ChangeLog:
            PR analyzer/101570
            * analyzer.cc (maybe_reconstruct_from_def_stmt): Add GIMPLE_ASM
            case.
            * analyzer.h (class asm_output_svalue): New forward decl.
            (class reachable_regions): New forward decl.
            * complexity.cc (complexity::from_vec_svalue): New.
            * complexity.h (complexity::from_vec_svalue): New decl.
            * engine.cc (feasibility_state::maybe_update_for_edge): Handle
            asm stmts by calling on_asm_stmt.
            * region-model-asm.cc: New file.
            * region-model-manager.cc
            (region_model_manager::maybe_fold_asm_output_svalue): New.
            (region_model_manager::get_or_create_asm_output_svalue): New.
            (region_model_manager::log_stats): Log m_asm_output_values_map.
            * region-model.cc (region_model::on_stmt_pre): Handle GIMPLE_ASM.
            * region-model.h (visitor::visit_asm_output_svalue): New.
            (region_model_manager::get_or_create_asm_output_svalue): New decl.
            (region_model_manager::maybe_fold_asm_output_svalue): New decl.
            (region_model_manager::asm_output_values_map_t): New typedef.
            (region_model_manager::m_asm_output_values_map): New field.
            (region_model::on_asm_stmt): New.
            * store.cc (binding_cluster::on_asm): New.
            * store.h (binding_cluster::on_asm): New decl.
            * svalue.cc (svalue::cmp_ptr): Handle SK_ASM_OUTPUT.
            (asm_output_svalue::dump_to_pp): New.
            (asm_output_svalue::dump_input): New.
            (asm_output_svalue::input_idx_to_asm_idx): New.
            (asm_output_svalue::accept): New.
            * svalue.h (enum svalue_kind): Add SK_ASM_OUTPUT.
            (svalue::dyn_cast_asm_output_svalue): New.
            (class asm_output_svalue): New.
            (is_a_helper <const asm_output_svalue *>::test): New.
            (struct default_hash_traits<asm_output_svalue::key_t>): New.

    gcc/testsuite/ChangeLog:
            PR analyzer/101570
            * gcc.dg/analyzer/asm-x86-1.c: New test.
            * gcc.dg/analyzer/asm-x86-lp64-1.c: New test.
            * gcc.dg/analyzer/asm-x86-lp64-2.c: New test.
            * gcc.dg/analyzer/pr101570.c: New test.
            * gcc.dg/analyzer/torture/asm-x86-linux-array_index_mask_nospec.c:
            New test.
            * gcc.dg/analyzer/torture/asm-x86-linux-cpuid-paravirt-1.c: New
            test.
            * gcc.dg/analyzer/torture/asm-x86-linux-cpuid-paravirt-2.c: New
            test.
            * gcc.dg/analyzer/torture/asm-x86-linux-cpuid.c: New test.
            * gcc.dg/analyzer/torture/asm-x86-linux-rdmsr-paravirt.c: New
            test.
            * gcc.dg/analyzer/torture/asm-x86-linux-rdmsr.c: New test.
            * gcc.dg/analyzer/torture/asm-x86-linux-wfx_get_ps_timeout-full.c:
            New test.
            *
gcc.dg/analyzer/torture/asm-x86-linux-wfx_get_ps_timeout-reduced.c:
            New test.

    Signed-off-by: David Malcolm <dmalc...@redhat.com>

Reply via email to