Commit Graph

121 Commits

Author SHA1 Message Date
Marek Polacek ae36f83963 preprocessor: -Wbidi-chars and UCNs [PR104030]
Stephan Bergmann reported that our -Wbidi-chars breaks the build
of LibreOffice because we warn about UCNs even when their usage
is correct: LibreOffice constructs strings piecewise, as in:

  aText = u"\u202D" + aText;

and warning about that is overzealous.  Since no editor (AFAIK)
interprets UCNs to show them as Unicode characters, there's less
risk in misinterpreting them, and so perhaps we shouldn't warn
about them by default.  However, identifiers containing UCNs or
programs generating other programs could still cause confusion,
so I'm keeping the UCN checking.  To turn it on, you just need
to use -Wbidi-chars=unpaired,ucn or -Wbidi-chars=any,ucn.

The implementation is done by using the new EnumSet feature.

	PR preprocessor/104030

gcc/c-family/ChangeLog:

	* c.opt (Wbidi-chars): Mark as EnumSet.  Also accept =ucn.

gcc/ChangeLog:

	* doc/invoke.texi: Update documentation for -Wbidi-chars.

libcpp/ChangeLog:

	* include/cpplib.h (enum cpp_bidirectional_level): Add
	bidirectional_ucn.  Set values explicitly.
	* internal.h (cpp_reader): Adjust warn_bidi_p.
	* lex.cc (maybe_warn_bidi_on_close): Don't warn about UCNs
	unless UCN checking is on.
	(maybe_warn_bidi_on_char): Likewise.

gcc/testsuite/ChangeLog:

	* c-c++-common/Wbidi-chars-10.c: Turn on UCN checking.
	* c-c++-common/Wbidi-chars-11.c: Likewise.
	* c-c++-common/Wbidi-chars-14.c: Likewise.
	* c-c++-common/Wbidi-chars-16.c: Likewise.
	* c-c++-common/Wbidi-chars-17.c: Likewise.
	* c-c++-common/Wbidi-chars-4.c: Likewise.
	* c-c++-common/Wbidi-chars-5.c: Likewise.
	* c-c++-common/Wbidi-chars-6.c: Likewise.
	* c-c++-common/Wbidi-chars-7.c: Likewise.
	* c-c++-common/Wbidi-chars-8.c: Likewise.
	* c-c++-common/Wbidi-chars-9.c: Likewise.
	* c-c++-common/Wbidi-chars-ranges.c: Likewise.
	* c-c++-common/Wbidi-chars-18.c: New test.
	* c-c++-common/Wbidi-chars-19.c: New test.
	* c-c++-common/Wbidi-chars-20.c: New test.
	* c-c++-common/Wbidi-chars-21.c: New test.
	* c-c++-common/Wbidi-chars-22.c: New test.
	* c-c++-common/Wbidi-chars-23.c: New test.
2022-01-24 17:48:23 -05:00
Martin Liska e53b6e564a Change references of .c files to .cc files
ChangeLog:

	* MAINTAINERS: Rename .c names to .cc.

contrib/ChangeLog:

	* filter-clang-warnings.py: Rename .c names to .cc.
	* gcc_update: Likewise.
	* paranoia.cc: Likewise.

contrib/header-tools/ChangeLog:

	* README: Rename .c names to .cc.

gcc/ChangeLog:

	* Makefile.in: Rename .c names to .cc.
	* alias.h: Likewise.
	* asan.cc: Likewise.
	* auto-profile.h: Likewise.
	* basic-block.h (struct basic_block_d): Likewise.
	* btfout.cc: Likewise.
	* builtins.cc (expand_builtin_longjmp): Likewise.
	(validate_arg): Likewise.
	(access_ref::offset_bounded): Likewise.
	* caller-save.cc (reg_restore_code): Likewise.
	(setup_save_areas): Likewise.
	* calls.cc (initialize_argument_information): Likewise.
	(expand_call): Likewise.
	(emit_library_call_value_1): Likewise.
	* cfg-flags.def (RTL): Likewise.
	(SIBCALL): Likewise.
	(CAN_FALLTHRU): Likewise.
	* cfganal.cc (post_order_compute): Likewise.
	* cfgcleanup.cc (try_simplify_condjump): Likewise.
	(merge_blocks_move_predecessor_nojumps): Likewise.
	(merge_blocks_move_successor_nojumps): Likewise.
	(merge_blocks_move): Likewise.
	(old_insns_match_p): Likewise.
	(try_crossjump_bb): Likewise.
	* cfgexpand.cc (expand_gimple_stmt): Likewise.
	* cfghooks.cc (split_block_before_cond_jump): Likewise.
	(profile_record_check_consistency): Likewise.
	* cfghooks.h: Likewise.
	* cfgrtl.cc (pass_free_cfg::execute): Likewise.
	(rtl_can_merge_blocks): Likewise.
	(try_redirect_by_replacing_jump): Likewise.
	(make_pass_outof_cfg_layout_mode): Likewise.
	(cfg_layout_can_merge_blocks_p): Likewise.
	* cgraph.cc (release_function_body): Likewise.
	(cgraph_node::get_fun): Likewise.
	* cgraph.h (struct cgraph_node): Likewise.
	(asmname_hasher::equal): Likewise.
	(cgraph_inline_failed_type): Likewise.
	(thunk_adjust): Likewise.
	(dump_callgraph_transformation): Likewise.
	(record_references_in_initializer): Likewise.
	(ipa_discover_variable_flags): Likewise.
	* cgraphclones.cc (GTY): Likewise.
	* cgraphunit.cc (symbol_table::finalize_compilation_unit): Likewise.
	* collect-utils.h (GCC_COLLECT_UTILS_H): Likewise.
	* collect2-aix.h (GCC_COLLECT2_AIX_H): Likewise.
	* collect2.cc (maybe_run_lto_and_relink): Likewise.
	* combine-stack-adj.cc: Likewise.
	* combine.cc (setup_incoming_promotions): Likewise.
	(combine_simplify_rtx): Likewise.
	(count_rtxs): Likewise.
	* common.opt: Likewise.
	* common/config/aarch64/aarch64-common.cc: Likewise.
	* common/config/arm/arm-common.cc (arm_asm_auto_mfpu): Likewise.
	* common/config/avr/avr-common.cc: Likewise.
	* common/config/i386/i386-isas.h (struct _isa_names_table): Likewise.
	* conditions.h: Likewise.
	* config.gcc: Likewise.
	* config/aarch64/aarch64-builtins.cc (aarch64_resolve_overloaded_memtag): Likewise.
	* config/aarch64/aarch64-protos.h (aarch64_classify_address): Likewise.
	(aarch64_get_extension_string_for_isa_flags): Likewise.
	* config/aarch64/aarch64-sve-builtins.cc (function_builder::add_function): Likewise.
	* config/aarch64/aarch64.cc (aarch64_regmode_natural_size): Likewise.
	(aarch64_sched_first_cycle_multipass_dfa_lookahead): Likewise.
	(aarch64_option_valid_attribute_p): Likewise.
	(aarch64_short_vector_p): Likewise.
	(aarch64_float_const_representable_p): Likewise.
	* config/aarch64/aarch64.h (DBX_REGISTER_NUMBER): Likewise.
	(ASM_OUTPUT_POOL_EPILOGUE): Likewise.
	(GTY): Likewise.
	* config/aarch64/cortex-a57-fma-steering.cc: Likewise.
	* config/aarch64/driver-aarch64.cc (contains_core_p): Likewise.
	* config/aarch64/t-aarch64: Likewise.
	* config/aarch64/x-aarch64: Likewise.
	* config/aarch64/x-darwin: Likewise.
	* config/alpha/alpha-protos.h: Likewise.
	* config/alpha/alpha.cc (alpha_scalar_mode_supported_p): Likewise.
	* config/alpha/alpha.h (LONG_DOUBLE_TYPE_SIZE): Likewise.
	(enum reg_class): Likewise.
	* config/alpha/alpha.md: Likewise.
	* config/alpha/driver-alpha.cc (AMASK_LOCKPFTCHOK): Likewise.
	* config/alpha/x-alpha: Likewise.
	* config/arc/arc-protos.h (arc_eh_uses): Likewise.
	* config/arc/arc.cc (ARC_OPT): Likewise.
	(arc_ccfsm_advance): Likewise.
	(arc_arg_partial_bytes): Likewise.
	(conditionalize_nonjump): Likewise.
	* config/arc/arc.md: Likewise.
	* config/arc/builtins.def: Likewise.
	* config/arc/t-arc: Likewise.
	* config/arm/arm-c.cc (arm_resolve_overloaded_builtin): Likewise.
	(arm_pragma_target_parse): Likewise.
	* config/arm/arm-protos.h (save_restore_target_globals): Likewise.
	(arm_cpu_cpp_builtins): Likewise.
	* config/arm/arm.cc (vfp3_const_double_index): Likewise.
	(shift_op): Likewise.
	(thumb2_final_prescan_insn): Likewise.
	(arm_final_prescan_insn): Likewise.
	(arm_asm_output_labelref): Likewise.
	(arm_small_register_classes_for_mode_p): Likewise.
	* config/arm/arm.h: Likewise.
	* config/arm/arm.md: Likewise.
	* config/arm/driver-arm.cc: Likewise.
	* config/arm/symbian.h: Likewise.
	* config/arm/t-arm: Likewise.
	* config/arm/thumb1.md: Likewise.
	* config/arm/x-arm: Likewise.
	* config/avr/avr-c.cc (avr_register_target_pragmas): Likewise.
	* config/avr/avr-fixed.md: Likewise.
	* config/avr/avr-log.cc (avr_log_vadump): Likewise.
	* config/avr/avr-mcus.def: Likewise.
	* config/avr/avr-modes.def (FRACTIONAL_INT_MODE): Likewise.
	* config/avr/avr-passes.def (INSERT_PASS_BEFORE): Likewise.
	* config/avr/avr-protos.h (make_avr_pass_casesi): Likewise.
	* config/avr/avr.cc (avr_option_override): Likewise.
	(avr_build_builtin_va_list): Likewise.
	(avr_mode_dependent_address_p): Likewise.
	(avr_function_arg_advance): Likewise.
	(avr_asm_output_aligned_decl_common): Likewise.
	* config/avr/avr.h (RETURN_ADDR_RTX): Likewise.
	(SUPPORTS_INIT_PRIORITY): Likewise.
	* config/avr/avr.md: Likewise.
	* config/avr/builtins.def: Likewise.
	* config/avr/gen-avr-mmcu-specs.cc (IN_GEN_AVR_MMCU_TEXI): Likewise.
	* config/avr/gen-avr-mmcu-texi.cc (IN_GEN_AVR_MMCU_TEXI): Likewise.
	(main): Likewise.
	* config/avr/t-avr: Likewise.
	* config/bfin/bfin.cc (frame_related_constant_load): Likewise.
	* config/bpf/bpf-protos.h (GCC_BPF_PROTOS_H): Likewise.
	* config/bpf/bpf.h (enum reg_class): Likewise.
	* config/bpf/t-bpf: Likewise.
	* config/c6x/c6x-protos.h (GCC_C6X_PROTOS_H): Likewise.
	* config/cr16/cr16-protos.h: Likewise.
	* config/cris/cris.cc (cris_address_cost): Likewise.
	(cris_side_effect_mode_ok): Likewise.
	(cris_init_machine_status): Likewise.
	(cris_emit_movem_store): Likewise.
	* config/cris/cris.h (INDEX_REG_CLASS): Likewise.
	(enum reg_class): Likewise.
	(struct cum_args): Likewise.
	* config/cris/cris.opt: Likewise.
	* config/cris/sync.md: Likewise.
	* config/csky/csky.cc (csky_expand_prologue): Likewise.
	* config/darwin-c.cc: Likewise.
	* config/darwin-f.cc: Likewise.
	* config/darwin-sections.def (zobj_const_section): Likewise.
	* config/darwin.cc (output_objc_section_asm_op): Likewise.
	(fprintf): Likewise.
	* config/darwin.h (GTY): Likewise.
	* config/elfos.h: Likewise.
	* config/epiphany/epiphany-sched.md: Likewise.
	* config/epiphany/epiphany.cc (epiphany_function_value): Likewise.
	* config/epiphany/epiphany.h (GTY): Likewise.
	(NO_FUNCTION_CSE): Likewise.
	* config/epiphany/mode-switch-use.cc: Likewise.
	* config/epiphany/predicates.md: Likewise.
	* config/epiphany/t-epiphany: Likewise.
	* config/fr30/fr30-protos.h: Likewise.
	* config/frv/frv-protos.h: Likewise.
	* config/frv/frv.cc (TLS_BIAS): Likewise.
	* config/frv/frv.h (ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
	* config/ft32/ft32-protos.h: Likewise.
	* config/gcn/gcn-hsa.h (ASM_APP_OFF): Likewise.
	* config/gcn/gcn.cc (gcn_init_libfuncs): Likewise.
	* config/gcn/mkoffload.cc (copy_early_debug_info): Likewise.
	* config/gcn/t-gcn-hsa: Likewise.
	* config/gcn/t-omp-device: Likewise.
	* config/h8300/h8300-protos.h (GCC_H8300_PROTOS_H): Likewise.
	(same_cmp_following_p): Likewise.
	* config/h8300/h8300.cc (F): Likewise.
	* config/h8300/h8300.h (struct cum_arg): Likewise.
	(BRANCH_COST): Likewise.
	* config/i386/cygming.h (DEFAULT_PCC_STRUCT_RETURN): Likewise.
	* config/i386/djgpp.h (TARGET_ASM_LTO_END): Likewise.
	* config/i386/dragonfly.h (NO_PROFILE_COUNTERS): Likewise.
	* config/i386/driver-i386.cc (detect_caches_intel): Likewise.
	* config/i386/freebsd.h (NO_PROFILE_COUNTERS): Likewise.
	* config/i386/i386-c.cc (ix86_target_macros): Likewise.
	* config/i386/i386-expand.cc (get_mode_wider_vector): Likewise.
	* config/i386/i386-options.cc (ix86_set_func_type): Likewise.
	* config/i386/i386-protos.h (ix86_extract_perm_from_pool_constant): Likewise.
	(ix86_register_pragmas): Likewise.
	(ix86_d_has_stdcall_convention): Likewise.
	(i386_pe_seh_init_sections): Likewise.
	* config/i386/i386.cc (ix86_function_arg_regno_p): Likewise.
	(ix86_function_value_regno_p): Likewise.
	(ix86_compute_frame_layout): Likewise.
	(legitimize_pe_coff_symbol): Likewise.
	(output_pic_addr_const): Likewise.
	* config/i386/i386.h (defined): Likewise.
	(host_detect_local_cpu): Likewise.
	(CONSTANT_ADDRESS_P): Likewise.
	(DEFAULT_LARGE_SECTION_THRESHOLD): Likewise.
	(struct machine_frame_state): Likewise.
	* config/i386/i386.md: Likewise.
	* config/i386/lynx.h (ASM_OUTPUT_ALIGN): Likewise.
	* config/i386/mmx.md: Likewise.
	* config/i386/sse.md: Likewise.
	* config/i386/t-cygming: Likewise.
	* config/i386/t-djgpp: Likewise.
	* config/i386/t-gnu-property: Likewise.
	* config/i386/t-i386: Likewise.
	* config/i386/t-intelmic: Likewise.
	* config/i386/t-omp-device: Likewise.
	* config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Likewise.
	(i386_pe_adjust_class_at_definition): Likewise.
	* config/i386/winnt.cc (gen_stdcall_or_fastcall_suffix): Likewise.
	(i386_pe_mangle_decl_assembler_name): Likewise.
	(i386_pe_encode_section_info): Likewise.
	* config/i386/x-cygwin: Likewise.
	* config/i386/x-darwin: Likewise.
	* config/i386/x-i386: Likewise.
	* config/i386/x-mingw32: Likewise.
	* config/i386/x86-tune-sched-core.cc: Likewise.
	* config/i386/x86-tune.def: Likewise.
	* config/i386/xm-djgpp.h (STANDARD_STARTFILE_PREFIX_1): Likewise.
	* config/ia64/freebsd.h: Likewise.
	* config/ia64/hpux.h (REGISTER_TARGET_PRAGMAS): Likewise.
	* config/ia64/ia64-protos.h (ia64_except_unwind_info): Likewise.
	* config/ia64/ia64.cc (ia64_function_value_regno_p): Likewise.
	(ia64_secondary_reload_class): Likewise.
	(bundling): Likewise.
	* config/ia64/ia64.h: Likewise.
	* config/ia64/ia64.md: Likewise.
	* config/ia64/predicates.md: Likewise.
	* config/ia64/sysv4.h: Likewise.
	* config/ia64/t-ia64: Likewise.
	* config/iq2000/iq2000.h (FUNCTION_MODE): Likewise.
	* config/iq2000/iq2000.md: Likewise.
	* config/linux.h (TARGET_HAS_BIONIC): Likewise.
	(if): Likewise.
	* config/m32c/m32c.cc (m32c_function_needs_enter): Likewise.
	* config/m32c/m32c.h (MAX_REGS_PER_ADDRESS): Likewise.
	* config/m32c/t-m32c: Likewise.
	* config/m32r/m32r-protos.h: Likewise.
	* config/m32r/m32r.cc (m32r_print_operand): Likewise.
	* config/m32r/m32r.h: Likewise.
	* config/m32r/m32r.md: Likewise.
	* config/m68k/m68k-isas.def: Likewise.
	* config/m68k/m68k-microarchs.def: Likewise.
	* config/m68k/m68k-protos.h (strict_low_part_peephole_ok): Likewise.
	(m68k_epilogue_uses): Likewise.
	* config/m68k/m68k.cc (m68k_call_tls_get_addr): Likewise.
	(m68k_sched_adjust_cost): Likewise.
	(m68k_sched_md_init): Likewise.
	* config/m68k/m68k.h (__transfer_from_trampoline): Likewise.
	(enum m68k_function_kind): Likewise.
	* config/m68k/m68k.md: Likewise.
	* config/m68k/m68kemb.h: Likewise.
	* config/m68k/uclinux.h (ENDFILE_SPEC): Likewise.
	* config/mcore/mcore-protos.h: Likewise.
	* config/mcore/mcore.cc (mcore_expand_insv): Likewise.
	(mcore_expand_prolog): Likewise.
	* config/mcore/mcore.h (TARGET_MCORE): Likewise.
	* config/mcore/mcore.md: Likewise.
	* config/microblaze/microblaze-protos.h: Likewise.
	* config/microblaze/microblaze.cc (microblaze_legitimate_pic_operand): Likewise.
	(microblaze_function_prologue): Likewise.
	(microblaze_function_epilogue): Likewise.
	(microblaze_select_section): Likewise.
	(microblaze_asm_output_mi_thunk): Likewise.
	(microblaze_eh_return): Likewise.
	* config/microblaze/microblaze.h: Likewise.
	* config/microblaze/microblaze.md: Likewise.
	* config/microblaze/t-microblaze: Likewise.
	* config/mips/driver-native.cc: Likewise.
	* config/mips/loongson2ef.md: Likewise.
	* config/mips/mips-protos.h (mips_expand_vec_cmp_expr): Likewise.
	* config/mips/mips.cc (mips_rtx_costs): Likewise.
	(mips_output_filename): Likewise.
	(mips_output_function_prologue): Likewise.
	(mips_output_function_epilogue): Likewise.
	(mips_output_mi_thunk): Likewise.
	* config/mips/mips.h: Likewise.
	* config/mips/mips.md: Likewise.
	* config/mips/t-mips: Likewise.
	* config/mips/x-native: Likewise.
	* config/mmix/mmix-protos.h: Likewise.
	* config/mmix/mmix.cc (mmix_option_override): Likewise.
	(mmix_dbx_register_number): Likewise.
	(mmix_expand_prologue): Likewise.
	* config/mmix/mmix.h: Likewise.
	* config/mmix/mmix.md: Likewise.
	* config/mmix/predicates.md: Likewise.
	* config/mn10300/mn10300.cc (mn10300_symbolic_operand): Likewise.
	(mn10300_legitimate_pic_operand_p): Likewise.
	* config/mn10300/mn10300.h (enum reg_class): Likewise.
	(NO_FUNCTION_CSE): Likewise.
	* config/moxie/moxie-protos.h: Likewise.
	* config/moxie/uclinux.h (TARGET_LIBC_HAS_FUNCTION): Likewise.
	* config/msp430/msp430-devices.cc (extract_devices_dir_from_exec_prefix): Likewise.
	* config/msp430/msp430.cc (msp430_gimplify_va_arg_expr): Likewise.
	(msp430_incoming_return_addr_rtx): Likewise.
	* config/msp430/msp430.h (msp430_get_linker_devices_include_path): Likewise.
	* config/msp430/t-msp430: Likewise.
	* config/nds32/nds32-cost.cc (nds32_rtx_costs_speed_prefer): Likewise.
	(nds32_rtx_costs_size_prefer): Likewise.
	(nds32_init_rtx_costs): Likewise.
	* config/nds32/nds32-doubleword.md: Likewise.
	* config/nds32/nds32.cc (nds32_memory_move_cost): Likewise.
	(nds32_builtin_decl): Likewise.
	* config/nds32/nds32.h (enum nds32_16bit_address_type): Likewise.
	(enum nds32_isr_nested_type): Likewise.
	(enum reg_class): Likewise.
	* config/nds32/predicates.md: Likewise.
	* config/nds32/t-nds32: Likewise.
	* config/nios2/nios2.cc (nios2_pragma_target_parse): Likewise.
	* config/nvptx/nvptx-protos.h: Likewise.
	* config/nvptx/nvptx.cc (nvptx_goacc_expand_var_decl): Likewise.
	* config/nvptx/nvptx.h (TARGET_CPU_CPP_BUILTINS): Likewise.
	* config/nvptx/t-nvptx: Likewise.
	* config/nvptx/t-omp-device: Likewise.
	* config/pa/elf.h: Likewise.
	* config/pa/pa-linux.h (GLOBAL_ASM_OP): Likewise.
	* config/pa/pa-netbsd.h (GLOBAL_ASM_OP): Likewise.
	* config/pa/pa-openbsd.h (TARGET_ASM_GLOBALIZE_LABEL): Likewise.
	* config/pa/pa-protos.h (pa_eh_return_handler_rtx): Likewise.
	(pa_legitimize_reload_address): Likewise.
	(pa_can_use_return_insn): Likewise.
	* config/pa/pa.cc (mem_shadd_or_shadd_rtx_p): Likewise.
	(som_output_text_section_asm_op): Likewise.
	* config/pa/pa.h (PROFILE_BEFORE_PROLOGUE): Likewise.
	* config/pa/pa.md: Likewise.
	* config/pa/som.h: Likewise.
	* config/pa/t-pa: Likewise.
	* config/pdp11/pdp11.cc (decode_pdp11_d): Likewise.
	* config/pdp11/pdp11.h: Likewise.
	* config/pdp11/pdp11.md: Likewise.
	* config/pdp11/t-pdp11: Likewise.
	* config/pru/pru.md: Likewise.
	* config/pru/t-pru: Likewise.
	* config/riscv/riscv-protos.h (NUM_SYMBOL_TYPES): Likewise.
	(riscv_gpr_save_operation_p): Likewise.
	(riscv_d_register_target_info): Likewise.
	(riscv_init_builtins): Likewise.
	* config/riscv/riscv.cc (riscv_output_mi_thunk): Likewise.
	* config/riscv/riscv.h (CSW_MAX_OFFSET): Likewise.
	* config/riscv/t-riscv: Likewise.
	* config/rl78/rl78.cc (rl78_asm_ctor_dtor): Likewise.
	* config/rl78/t-rl78: Likewise.
	* config/rs6000/aix.h: Likewise.
	* config/rs6000/aix71.h (ASM_SPEC_COMMON): Likewise.
	* config/rs6000/aix72.h (ASM_SPEC_COMMON): Likewise.
	* config/rs6000/aix73.h (ASM_SPEC_COMMON): Likewise.
	* config/rs6000/darwin.h (TARGET_ASM_GLOBALIZE_LABEL): Likewise.
	* config/rs6000/driver-rs6000.cc: Likewise.
	* config/rs6000/freebsd.h: Likewise.
	* config/rs6000/freebsd64.h: Likewise.
	* config/rs6000/lynx.h (ASM_OUTPUT_ALIGN): Likewise.
	* config/rs6000/rbtree.cc: Likewise.
	* config/rs6000/rbtree.h: Likewise.
	* config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Likewise.
	* config/rs6000/rs6000-call.cc (rs6000_invalid_builtin): Likewise.
	(rs6000_expand_builtin): Likewise.
	(rs6000_init_builtins): Likewise.
	* config/rs6000/rs6000-cpus.def: Likewise.
	* config/rs6000/rs6000-gen-builtins.cc (write_init_ovld_table): Likewise.
	* config/rs6000/rs6000-internal.h (ALTIVEC_REG_BIT): Likewise.
	(quad_address_offset_p): Likewise.
	* config/rs6000/rs6000-logue.cc (interesting_frame_related_regno): Likewise.
	(rs6000_emit_epilogue): Likewise.
	* config/rs6000/rs6000-overload.def: Likewise.
	* config/rs6000/rs6000-p8swap.cc: Likewise.
	* config/rs6000/rs6000-protos.h (GCC_RS6000_PROTOS_H): Likewise.
	(rs6000_const_f32_to_i32): Likewise.
	* config/rs6000/rs6000.cc (legitimate_lo_sum_address_p): Likewise.
	(rs6000_debug_legitimize_address): Likewise.
	(rs6000_mode_dependent_address): Likewise.
	(rs6000_adjust_priority): Likewise.
	(rs6000_c_mode_for_suffix): Likewise.
	* config/rs6000/rs6000.h (defined): Likewise.
	(LONG_DOUBLE_TYPE_SIZE): Likewise.
	* config/rs6000/rs6000.md: Likewise.
	* config/rs6000/sysv4.h: Likewise.
	* config/rs6000/t-linux: Likewise.
	* config/rs6000/t-linux64: Likewise.
	* config/rs6000/t-rs6000: Likewise.
	* config/rs6000/x-darwin: Likewise.
	* config/rs6000/x-darwin64: Likewise.
	* config/rs6000/x-rs6000: Likewise.
	* config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Likewise.
	* config/rx/rx.cc (rx_expand_builtin): Likewise.
	* config/s390/constraints.md: Likewise.
	* config/s390/driver-native.cc: Likewise.
	* config/s390/htmxlintrin.h: Likewise.
	* config/s390/s390-builtins.def (B_DEF): Likewise.
	(OB_DEF_VAR): Likewise.
	* config/s390/s390-builtins.h: Likewise.
	* config/s390/s390-c.cc: Likewise.
	* config/s390/s390-opts.h: Likewise.
	* config/s390/s390-protos.h (s390_check_symref_alignment): Likewise.
	(s390_register_target_pragmas): Likewise.
	* config/s390/s390.cc (s390_init_builtins): Likewise.
	(s390_expand_plus_operand): Likewise.
	(s390_expand_atomic): Likewise.
	(s390_valid_target_attribute_inner_p): Likewise.
	* config/s390/s390.h (LONG_DOUBLE_TYPE_SIZE): Likewise.
	* config/s390/s390.md: Likewise.
	* config/s390/t-s390: Likewise.
	* config/s390/vx-builtins.md: Likewise.
	* config/s390/x-native: Likewise.
	* config/sh/divtab-sh4-300.cc (main): Likewise.
	* config/sh/divtab-sh4.cc (main): Likewise.
	* config/sh/divtab.cc (main): Likewise.
	* config/sh/elf.h: Likewise.
	* config/sh/sh-protos.h (sh_fsca_int2sf): Likewise.
	* config/sh/sh.cc (SYMBOL_FLAG_FUNCVEC_FUNCTION): Likewise.
	(sh_struct_value_rtx): Likewise.
	(sh_remove_reg_dead_or_unused_notes): Likewise.
	* config/sh/sh.h (MIN_UNITS_PER_WORD): Likewise.
	* config/sh/t-sh: Likewise.
	* config/sol2-protos.h (solaris_override_options): Likewise.
	* config/sol2.h: Likewise.
	* config/sparc/driver-sparc.cc: Likewise.
	* config/sparc/freebsd.h: Likewise.
	* config/sparc/sparc-protos.h (make_pass_work_around_errata): Likewise.
	* config/sparc/sparc.cc (sparc_output_mi_thunk): Likewise.
	(sparc_asan_shadow_offset): Likewise.
	* config/sparc/sparc.h: Likewise.
	* config/sparc/sparc.md: Likewise.
	* config/sparc/t-sparc: Likewise.
	* config/sparc/x-sparc: Likewise.
	* config/stormy16/stormy16.cc (xstormy16_mode_dependent_address_p): Likewise.
	* config/t-darwin: Likewise.
	* config/t-dragonfly: Likewise.
	* config/t-freebsd: Likewise.
	* config/t-glibc: Likewise.
	* config/t-linux: Likewise.
	* config/t-netbsd: Likewise.
	* config/t-openbsd: Likewise.
	* config/t-pnt16-warn: Likewise.
	* config/t-sol2: Likewise.
	* config/t-vxworks: Likewise.
	* config/t-winnt: Likewise.
	* config/tilegx/t-tilegx: Likewise.
	* config/tilegx/tilegx-c.cc: Likewise.
	* config/tilegx/tilegx-protos.h (tilegx_function_profiler): Likewise.
	* config/tilegx/tilegx.md: Likewise.
	* config/tilepro/t-tilepro: Likewise.
	* config/tilepro/tilepro-c.cc: Likewise.
	* config/v850/t-v850: Likewise.
	* config/v850/v850-protos.h: Likewise.
	* config/v850/v850.cc (F): Likewise.
	* config/v850/v850.h (enum reg_class): Likewise.
	(SLOW_BYTE_ACCESS): Likewise.
	* config/vax/vax.cc (vax_mode_dependent_address_p): Likewise.
	* config/vax/vax.h (enum reg_class): Likewise.
	* config/vax/vax.md: Likewise.
	* config/visium/visium.cc (visium_legitimate_address_p): Likewise.
	* config/visium/visium.h: Likewise.
	* config/vms/t-vms: Likewise.
	* config/vms/vms-crtlmap.map: Likewise.
	* config/vms/vms-protos.h (vms_c_get_vms_ver): Likewise.
	* config/vx-common.h: Likewise.
	* config/x-darwin: Likewise.
	* config/x-hpux: Likewise.
	* config/x-linux: Likewise.
	* config/x-netbsd: Likewise.
	* config/x-openbsd: Likewise.
	* config/x-solaris: Likewise.
	* config/xtensa/xtensa-protos.h (xtensa_mem_offset): Likewise.
	* config/xtensa/xtensa.cc (xtensa_option_override): Likewise.
	* config/xtensa/xtensa.h: Likewise.
	* configure.ac: Likewise.
	* context.cc: Likewise.
	* convert.h: Likewise.
	* coretypes.h: Likewise.
	* coverage.cc: Likewise.
	* coverage.h: Likewise.
	* cppdefault.h (struct default_include): Likewise.
	* cprop.cc (local_cprop_pass): Likewise.
	(one_cprop_pass): Likewise.
	* cse.cc (hash_rtx_cb): Likewise.
	(fold_rtx): Likewise.
	* ctfc.h (ctfc_get_num_vlen_bytes): Likewise.
	* data-streamer.h (bp_unpack_var_len_int): Likewise.
	(streamer_write_widest_int): Likewise.
	* dbgcnt.def: Likewise.
	* dbxout.cc (dbxout_early_global_decl): Likewise.
	(dbxout_common_check): Likewise.
	* dbxout.h: Likewise.
	* debug.h (struct gcc_debug_hooks): Likewise.
	(dump_go_spec_init): Likewise.
	* df-core.cc: Likewise.
	* df-scan.cc (df_insn_info_delete): Likewise.
	(df_insn_delete): Likewise.
	* df.h (debug_df_chain): Likewise.
	(can_move_insns_across): Likewise.
	* dfp.cc (decimal_from_binary): Likewise.
	* diagnostic-color.cc: Likewise.
	* diagnostic-event-id.h: Likewise.
	* diagnostic-show-locus.cc (test_one_liner_labels): Likewise.
	* diagnostic.cc (bt_callback): Likewise.
	(num_digits): Likewise.
	* doc/avr-mmcu.texi: Likewise.
	* doc/cfg.texi: Likewise.
	* doc/contrib.texi: Likewise.
	* doc/cppinternals.texi: Likewise.
	* doc/extend.texi: Likewise.
	* doc/generic.texi: Likewise.
	* doc/gimple.texi: Likewise.
	* doc/gty.texi: Likewise.
	* doc/invoke.texi: Likewise.
	* doc/loop.texi: Likewise.
	* doc/lto.texi: Likewise.
	* doc/match-and-simplify.texi: Likewise.
	* doc/md.texi: Likewise.
	* doc/optinfo.texi: Likewise.
	* doc/options.texi: Likewise.
	* doc/passes.texi: Likewise.
	* doc/plugins.texi: Likewise.
	* doc/rtl.texi: Likewise.
	* doc/sourcebuild.texi: Likewise.
	* doc/tm.texi: Likewise.
	* doc/tm.texi.in: Likewise.
	* doc/tree-ssa.texi: Likewise.
	* dojump.cc (do_jump): Likewise.
	* dojump.h: Likewise.
	* dumpfile.cc (test_impl_location): Likewise.
	(test_capture_of_dump_calls): Likewise.
	* dumpfile.h (enum dump_kind): Likewise.
	(class dump_location_t): Likewise.
	(dump_enabled_p): Likewise.
	(enable_rtl_dump_file): Likewise.
	(dump_combine_total_stats): Likewise.
	* dwarf2asm.cc (dw2_asm_output_delta_uleb128): Likewise.
	* dwarf2ctf.h (ctf_debug_finish): Likewise.
	* dwarf2out.cc (dwarf2out_begin_prologue): Likewise.
	(struct loc_descr_context): Likewise.
	(rtl_for_decl_location): Likewise.
	(gen_subprogram_die): Likewise.
	(gen_label_die): Likewise.
	(is_trivial_indirect_ref): Likewise.
	(dwarf2out_late_global_decl): Likewise.
	(dwarf_file_hasher::hash): Likewise.
	(dwarf2out_end_source_file): Likewise.
	(dwarf2out_define): Likewise.
	(dwarf2out_early_finish): Likewise.
	* dwarf2out.h (struct dw_fde_node): Likewise.
	(struct dw_discr_list_node): Likewise.
	(output_loc_sequence_raw): Likewise.
	* emit-rtl.cc (gen_raw_REG): Likewise.
	(maybe_set_max_label_num): Likewise.
	* emit-rtl.h (struct rtl_data): Likewise.
	* errors.cc (internal_error): Likewise.
	(trim_filename): Likewise.
	* et-forest.cc: Likewise.
	* except.cc (init_eh_for_function): Likewise.
	* explow.cc (promote_ssa_mode): Likewise.
	(get_dynamic_stack_size): Likewise.
	* explow.h: Likewise.
	* expmed.h: Likewise.
	* expr.cc (safe_from_p): Likewise.
	(expand_expr_real_2): Likewise.
	(expand_expr_real_1): Likewise.
	* file-prefix-map.cc (remap_filename): Likewise.
	* final.cc (app_enable): Likewise.
	(make_pass_compute_alignments): Likewise.
	(final_scan_insn_1): Likewise.
	(final_scan_insn): Likewise.
	* fixed-value.h (fixed_from_string): Likewise.
	* flag-types.h (NO_DEBUG): Likewise.
	(DWARF2_DEBUG): Likewise.
	(VMS_DEBUG): Likewise.
	(BTF_DEBUG): Likewise.
	(enum ctf_debug_info_levels): Likewise.
	* fold-const.cc (const_binop): Likewise.
	(fold_binary_loc): Likewise.
	(fold_checksum_tree): Likewise.
	* fp-test.cc: Likewise.
	* function.cc (expand_function_end): Likewise.
	* function.h (struct function): Likewise.
	* fwprop.cc (should_replace_address): Likewise.
	* gcc-main.cc: Likewise.
	* gcc-rich-location.h (class gcc_rich_location): Likewise.
	* gcc-symtab.h: Likewise.
	* gcc.cc (MIN_FATAL_STATUS): Likewise.
	(driver_handle_option): Likewise.
	(quote_spec_arg): Likewise.
	(driver::finalize): Likewise.
	* gcc.h (set_input): Likewise.
	* gcov-dump.cc: Likewise.
	* gcov.cc (solve_flow_graph): Likewise.
	* gcse-common.cc: Likewise.
	* gcse.cc (make_pass_rtl_hoist): Likewise.
	* genattr-common.cc: Likewise.
	* genattrtab.cc (min_fn): Likewise.
	(write_const_num_delay_slots): Likewise.
	* genautomata.cc: Likewise.
	* genconditions.cc (write_one_condition): Likewise.
	* genconstants.cc: Likewise.
	* genemit.cc (gen_exp): Likewise.
	* generic-match-head.cc: Likewise.
	* genextract.cc: Likewise.
	* gengenrtl.cc (always_void_p): Likewise.
	* gengtype-parse.cc (gtymarker_opt): Likewise.
	* gengtype-state.cc (state_writer::state_writer): Likewise.
	(write_state_trailer): Likewise.
	(equals_type_number): Likewise.
	(read_state): Likewise.
	* gengtype.cc (open_base_files): Likewise.
	(struct file_rule_st): Likewise.
	(header_dot_h_frul): Likewise.
	* gengtype.h: Likewise.
	* genmatch.cc (main): Likewise.
	* genmddeps.cc: Likewise.
	* genmodes.cc (emit_mode_inner): Likewise.
	(emit_mode_unit_size): Likewise.
	* genpeep.cc (gen_peephole): Likewise.
	* genpreds.cc (write_tm_preds_h): Likewise.
	* genrecog.cc (validate_pattern): Likewise.
	(write_header): Likewise.
	(main): Likewise.
	* gensupport.cc (change_subst_attribute): Likewise.
	(traverse_c_tests): Likewise.
	(add_predicate): Likewise.
	(init_predicate_table): Likewise.
	* gensupport.h (struct optab_pattern): Likewise.
	(get_num_insn_codes): Likewise.
	(maybe_eval_c_test): Likewise.
	(struct pred_data): Likewise.
	* ggc-internal.h: Likewise.
	* gimple-fold.cc (maybe_fold_reference): Likewise.
	(get_range_strlen_tree): Likewise.
	* gimple-fold.h (gimple_stmt_integer_valued_real_p): Likewise.
	* gimple-low.cc: Likewise.
	* gimple-match-head.cc (directly_supported_p): Likewise.
	* gimple-pretty-print.h: Likewise.
	* gimple-ssa-sprintf.cc (format_percent): Likewise.
	(adjust_range_for_overflow): Likewise.
	* gimple-streamer.h: Likewise.
	* gimple.h (struct GTY): Likewise.
	(is_gimple_resx): Likewise.
	* gimplify.cc (gimplify_expr): Likewise.
	(gimplify_init_constructor): Likewise.
	(omp_construct_selector_matches): Likewise.
	(gimplify_omp_target_update): Likewise.
	(gimplify_omp_ordered): Likewise.
	(gimplify_va_arg_expr): Likewise.
	* graphite-isl-ast-to-gimple.cc (should_copy_to_new_region): Likewise.
	* haifa-sched.cc (increase_insn_priority): Likewise.
	(try_ready): Likewise.
	(sched_create_recovery_edges): Likewise.
	* ifcvt.cc (find_if_case_1): Likewise.
	(find_if_case_2): Likewise.
	* inchash.h: Likewise.
	* incpath.cc (add_env_var_paths): Likewise.
	* input.cc (dump_location_info): Likewise.
	(assert_loceq): Likewise.
	(test_lexer_string_locations_concatenation_1): Likewise.
	(test_lexer_string_locations_concatenation_2): Likewise.
	(test_lexer_string_locations_concatenation_3): Likewise.
	* input.h (BUILTINS_LOCATION): Likewise.
	(class string_concat_db): Likewise.
	* internal-fn.cc (expand_MUL_OVERFLOW): Likewise.
	(expand_LOOP_VECTORIZED): Likewise.
	* ipa-cp.cc (make_pass_ipa_cp): Likewise.
	* ipa-fnsummary.cc (remap_freqcounting_preds_after_dup): Likewise.
	(ipa_fn_summary_t::duplicate): Likewise.
	(make_pass_ipa_fn_summary): Likewise.
	* ipa-fnsummary.h (enum ipa_hints_vals): Likewise.
	* ipa-free-lang-data.cc (fld_simplified_type): Likewise.
	(free_lang_data_in_decl): Likewise.
	* ipa-inline.cc (compute_inlined_call_time): Likewise.
	(inline_always_inline_functions): Likewise.
	* ipa-inline.h (free_growth_caches): Likewise.
	(inline_account_function_p): Likewise.
	* ipa-modref.cc (modref_access_analysis::analyze_stmt): Likewise.
	(modref_eaf_analysis::analyze_ssa_name): Likewise.
	* ipa-param-manipulation.cc (ipa_param_body_adjustments::mark_dead_statements): Likewise.
	(ipa_param_body_adjustments::remap_with_debug_expressions): Likewise.
	* ipa-prop.cc (ipa_set_node_agg_value_chain): Likewise.
	* ipa-prop.h (IPA_UNDESCRIBED_USE): Likewise.
	(unadjusted_ptr_and_unit_offset): Likewise.
	* ipa-reference.cc (make_pass_ipa_reference): Likewise.
	* ipa-reference.h (GCC_IPA_REFERENCE_H): Likewise.
	* ipa-split.cc (consider_split): Likewise.
	* ipa-sra.cc (isra_read_node_info): Likewise.
	* ipa-utils.h (struct ipa_dfs_info): Likewise.
	(recursive_call_p): Likewise.
	(ipa_make_function_pure): Likewise.
	* ira-build.cc (ira_create_allocno): Likewise.
	(ira_flattening): Likewise.
	* ira-color.cc (do_coloring): Likewise.
	(update_curr_costs): Likewise.
	* ira-conflicts.cc (process_regs_for_copy): Likewise.
	* ira-int.h (struct ira_emit_data): Likewise.
	(ira_prohibited_mode_move_regs): Likewise.
	(ira_get_dup_out_num): Likewise.
	(ira_destroy): Likewise.
	(ira_tune_allocno_costs): Likewise.
	(ira_implicitly_set_insn_hard_regs): Likewise.
	(ira_build_conflicts): Likewise.
	(ira_color): Likewise.
	* ira-lives.cc (process_bb_node_lives): Likewise.
	* ira.cc (class ira_spilled_reg_stack_slot): Likewise.
	(setup_uniform_class_p): Likewise.
	(def_dominates_uses): Likewise.
	* ira.h (ira_nullify_asm_goto): Likewise.
	* langhooks.cc (lhd_post_options): Likewise.
	* langhooks.h (class substring_loc): Likewise.
	(struct lang_hooks_for_tree_inlining): Likewise.
	(struct lang_hooks_for_types): Likewise.
	(struct lang_hooks): Likewise.
	* libfuncs.h (synchronize_libfunc): Likewise.
	* loop-doloop.cc (doloop_condition_get): Likewise.
	* loop-init.cc (fix_loop_structure): Likewise.
	* loop-invariant.cc: Likewise.
	* lower-subreg.h: Likewise.
	* lra-constraints.cc (curr_insn_transform): Likewise.
	* lra-int.h (struct lra_insn_reg): Likewise.
	(lra_undo_inheritance): Likewise.
	(lra_setup_reload_pseudo_preferenced_hard_reg): Likewise.
	(lra_split_hard_reg_for): Likewise.
	(lra_coalesce): Likewise.
	(lra_final_code_change): Likewise.
	* lra-spills.cc (lra_final_code_change): Likewise.
	* lra.cc (lra_process_new_insns): Likewise.
	* lto-compress.h (struct lto_compression_stream): Likewise.
	* lto-streamer-out.cc (DFS::DFS_write_tree_body): Likewise.
	(write_symbol): Likewise.
	* lto-streamer.h (enum LTO_tags): Likewise.
	(lto_value_range_error): Likewise.
	(lto_append_block): Likewise.
	(lto_streamer_hooks_init): Likewise.
	(stream_read_tree_ref): Likewise.
	(lto_prepare_function_for_streaming): Likewise.
	(select_what_to_stream): Likewise.
	(omp_lto_input_declare_variant_alt): Likewise.
	(cl_optimization_stream_in): Likewise.
	* lto-wrapper.cc (append_compiler_options): Likewise.
	* machmode.def: Likewise.
	* machmode.h (struct int_n_data_t): Likewise.
	* main.cc (main): Likewise.
	* match.pd: Likewise.
	* omp-builtins.def (BUILT_IN_GOMP_CRITICAL_NAME_END): Likewise.
	(BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): Likewise.
	* omp-expand.cc (expand_omp_atomic_fetch_op): Likewise.
	(make_pass_expand_omp_ssa): Likewise.
	* omp-low.cc (struct omp_context): Likewise.
	(struct omp_taskcopy_context): Likewise.
	(lower_omp): Likewise.
	* omp-oacc-neuter-broadcast.cc (omp_sese_active_worker_call): Likewise.
	(mask_name): Likewise.
	(omp_sese_dump_pars): Likewise.
	(worker_single_simple): Likewise.
	* omp-offload.cc (omp_finish_file): Likewise.
	(execute_oacc_loop_designation): Likewise.
	* optabs-query.cc (lshift_cheap_p): Likewise.
	* optc-gen.awk: Likewise.
	* optc-save-gen.awk: Likewise.
	* optinfo-emit-json.cc (optrecord_json_writer::optrecord_json_writer): Likewise.
	* opts-common.cc: Likewise.
	* output.h (app_enable): Likewise.
	(output_operand_lossage): Likewise.
	(insn_current_reference_address): Likewise.
	(get_insn_template): Likewise.
	(output_quoted_string): Likewise.
	* pass_manager.h (struct register_pass_info): Likewise.
	* plugin.cc: Likewise.
	* plugin.def (PLUGIN_ANALYZER_INIT): Likewise.
	* plugin.h (invoke_plugin_callbacks): Likewise.
	* pointer-query.cc (handle_mem_ref): Likewise.
	* postreload-gcse.cc (alloc_mem): Likewise.
	* predict.h (enum prediction): Likewise.
	(add_reg_br_prob_note): Likewise.
	* prefix.h: Likewise.
	* profile.h (get_working_sets): Likewise.
	* read-md.cc: Likewise.
	* read-md.h (struct mapping): Likewise.
	(class md_reader): Likewise.
	(class noop_reader): Likewise.
	* read-rtl-function.cc (function_reader::create_function): Likewise.
	(function_reader::extra_parsing_for_operand_code_0): Likewise.
	* read-rtl.cc (initialize_iterators): Likewise.
	* real.cc: Likewise.
	* real.h (struct real_value): Likewise.
	(format_helper::format_helper): Likewise.
	(real_hash): Likewise.
	(real_can_shorten_arithmetic): Likewise.
	* recog.cc (struct target_recog): Likewise.
	(offsettable_nonstrict_memref_p): Likewise.
	(constrain_operands): Likewise.
	* recog.h (MAX_RECOG_ALTERNATIVES): Likewise.
	(which_op_alt): Likewise.
	(struct insn_gen_fn): Likewise.
	* reg-notes.def (REG_NOTE): Likewise.
	* reg-stack.cc: Likewise.
	* regs.h (reg_is_parm_p): Likewise.
	* regset.h: Likewise.
	* reload.cc (push_reload): Likewise.
	(find_reloads): Likewise.
	(find_reloads_address_1): Likewise.
	(find_replacement): Likewise.
	(refers_to_regno_for_reload_p): Likewise.
	(refers_to_mem_for_reload_p): Likewise.
	* reload.h (push_reload): Likewise.
	(deallocate_reload_reg): Likewise.
	* reload1.cc (emit_input_reload_insns): Likewise.
	* reorg.cc (relax_delay_slots): Likewise.
	* rtl.def (UNKNOWN): Likewise.
	(SEQUENCE): Likewise.
	(BARRIER): Likewise.
	(ASM_OPERANDS): Likewise.
	(EQ_ATTR_ALT): Likewise.
	* rtl.h (struct GTY): Likewise.
	(LABEL_NAME): Likewise.
	(LABEL_ALT_ENTRY_P): Likewise.
	(SUBREG_BYTE): Likewise.
	(get_stack_check_protect): Likewise.
	(dump_rtx_statistics): Likewise.
	(unwrap_const_vec_duplicate): Likewise.
	(subreg_promoted_mode): Likewise.
	(gen_lowpart_common): Likewise.
	(operand_subword): Likewise.
	(immed_wide_int_const): Likewise.
	(decide_function_section): Likewise.
	(active_insn_p): Likewise.
	(delete_related_insns): Likewise.
	(try_split): Likewise.
	(val_signbit_known_clear_p): Likewise.
	(simplifiable_subregs): Likewise.
	(set_insn_deleted): Likewise.
	(subreg_get_info): Likewise.
	(remove_free_EXPR_LIST_node): Likewise.
	(finish_subregs_of_mode): Likewise.
	(get_mem_attrs): Likewise.
	(lookup_constant_def): Likewise.
	(rtx_to_tree_code): Likewise.
	(hash_rtx): Likewise.
	(condjump_in_parallel_p): Likewise.
	(validate_subreg): Likewise.
	(make_compound_operation): Likewise.
	(schedule_ebbs): Likewise.
	(print_inline_rtx): Likewise.
	(fixup_args_size_notes): Likewise.
	(expand_dec): Likewise.
	(prepare_copy_insn): Likewise.
	(mark_elimination): Likewise.
	(valid_mode_changes_for_regno): Likewise.
	(make_debug_expr_from_rtl): Likewise.
	(delete_vta_debug_insns): Likewise.
	(simplify_using_condition): Likewise.
	(set_insn_locations): Likewise.
	(fatal_insn_not_found): Likewise.
	(word_register_operation_p): Likewise.
	* rtlanal.cc (get_call_fndecl): Likewise.
	(side_effects_p): Likewise.
	(subreg_nregs): Likewise.
	(rtx_cost): Likewise.
	(canonicalize_condition): Likewise.
	* rtlanal.h (rtx_properties::try_to_add_note): Likewise.
	* run-rtl-passes.cc (run_rtl_passes): Likewise.
	* sanitizer.def (BUILT_IN_ASAN_VERSION_MISMATCH_CHECK): Likewise.
	* sched-deps.cc (add_dependence_1): Likewise.
	* sched-ebb.cc (begin_move_insn): Likewise.
	(add_deps_for_risky_insns): Likewise.
	(advance_target_bb): Likewise.
	* sched-int.h (reemit_notes): Likewise.
	(struct _haifa_insn_data): Likewise.
	(HID): Likewise.
	(DEP_CANCELLED): Likewise.
	(debug_ds): Likewise.
	(number_in_ready): Likewise.
	(schedule_ebbs_finish): Likewise.
	(find_modifiable_mems): Likewise.
	* sched-rgn.cc (debug_rgn_dependencies): Likewise.
	* sel-sched-dump.cc (dump_lv_set): Likewise.
	* sel-sched-dump.h: Likewise.
	* sel-sched-ir.cc (sel_insn_rtx_cost): Likewise.
	(setup_id_reg_sets): Likewise.
	(has_dependence_p): Likewise.
	(sel_num_cfg_preds_gt_1): Likewise.
	(bb_ends_ebb_p): Likewise.
	* sel-sched-ir.h (struct _list_node): Likewise.
	(struct idata_def): Likewise.
	(bb_next_bb): Likewise.
	* sel-sched.cc (vinsn_writes_one_of_regs_p): Likewise.
	(choose_best_pseudo_reg): Likewise.
	(verify_target_availability): Likewise.
	(can_speculate_dep_p): Likewise.
	(sel_rank_for_schedule): Likewise.
	* selftest-run-tests.cc (selftest::run_tests): Likewise.
	* selftest.h (class auto_fix_quotes): Likewise.
	* shrink-wrap.cc (handle_simple_exit): Likewise.
	* shrink-wrap.h: Likewise.
	* simplify-rtx.cc (simplify_context::simplify_associative_operation): Likewise.
	(simplify_context::simplify_gen_vec_select): Likewise.
	* spellcheck-tree.h: Likewise.
	* spellcheck.h: Likewise.
	* statistics.h (struct function): Likewise.
	* stmt.cc (conditional_probability): Likewise.
	* stmt.h: Likewise.
	* stor-layout.h: Likewise.
	* streamer-hooks.h: Likewise.
	* stringpool.h: Likewise.
	* symtab.cc (symbol_table::change_decl_assembler_name): Likewise.
	* target.def (HOOK_VECTOR_END): Likewise.
	(type.): Likewise.
	* target.h (union cumulative_args_t): Likewise.
	(by_pieces_ninsns): Likewise.
	(class predefined_function_abi): Likewise.
	* targhooks.cc (default_translate_mode_attribute): Likewise.
	* timevar.def: Likewise.
	* timevar.h (class timer): Likewise.
	* toplev.h (enable_rtl_dump_file): Likewise.
	* trans-mem.cc (collect_bb2reg): Likewise.
	* tree-call-cdce.cc (gen_conditions_for_pow): Likewise.
	* tree-cfg.cc (remove_bb): Likewise.
	(verify_gimple_debug): Likewise.
	(remove_edge_and_dominated_blocks): Likewise.
	(push_fndecl): Likewise.
	* tree-cfgcleanup.h (GCC_TREE_CFGCLEANUP_H): Likewise.
	* tree-complex.cc (expand_complex_multiplication): Likewise.
	(expand_complex_div_straight): Likewise.
	* tree-core.h (enum tree_index): Likewise.
	(enum operand_equal_flag): Likewise.
	* tree-eh.cc (honor_protect_cleanup_actions): Likewise.
	* tree-if-conv.cc (if_convertible_gimple_assign_stmt_p): Likewise.
	* tree-inline.cc (initialize_inlined_parameters): Likewise.
	* tree-inline.h (force_value_to_type): Likewise.
	* tree-nested.cc (get_chain_decl): Likewise.
	(walk_all_functions): Likewise.
	* tree-object-size.h: Likewise.
	* tree-outof-ssa.cc: Likewise.
	* tree-parloops.cc (create_parallel_loop): Likewise.
	* tree-pretty-print.cc (print_generic_expr_to_str): Likewise.
	(dump_generic_node): Likewise.
	* tree-profile.cc (tree_profiling): Likewise.
	* tree-sra.cc (maybe_add_sra_candidate): Likewise.
	* tree-ssa-address.cc: Likewise.
	* tree-ssa-alias.cc: Likewise.
	* tree-ssa-alias.h (ao_ref::max_size_known_p): Likewise.
	(dump_alias_stats): Likewise.
	* tree-ssa-ccp.cc: Likewise.
	* tree-ssa-coalesce.h: Likewise.
	* tree-ssa-live.cc (remove_unused_scope_block_p): Likewise.
	* tree-ssa-loop-manip.cc (copy_phi_node_args): Likewise.
	* tree-ssa-loop-unswitch.cc: Likewise.
	* tree-ssa-math-opts.cc: Likewise.
	* tree-ssa-operands.cc (class operands_scanner): Likewise.
	* tree-ssa-pre.cc: Likewise.
	* tree-ssa-reassoc.cc (optimize_ops_list): Likewise.
	(debug_range_entry): Likewise.
	* tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Likewise.
	* tree-ssa-sccvn.h (TREE_SSA_SCCVN_H): Likewise.
	* tree-ssa-scopedtables.cc (add_expr_commutative): Likewise.
	(equal_mem_array_ref_p): Likewise.
	* tree-ssa-strlen.cc (is_strlen_related_p): Likewise.
	* tree-ssa-strlen.h (get_range_strlen_dynamic): Likewise.
	* tree-ssa-tail-merge.cc (stmt_local_def): Likewise.
	* tree-ssa-ter.h: Likewise.
	* tree-ssa-threadupdate.h (enum bb_dom_status): Likewise.
	* tree-streamer-in.cc (lto_input_ts_block_tree_pointers): Likewise.
	* tree-streamer-out.cc (pack_ts_block_value_fields): Likewise.
	(write_ts_block_tree_pointers): Likewise.
	* tree-streamer.h (struct streamer_tree_cache_d): Likewise.
	(streamer_read_tree_bitfields): Likewise.
	(streamer_write_integer_cst): Likewise.
	* tree-vect-patterns.cc (apply_binop_and_append_stmt): Likewise.
	(vect_synth_mult_by_constant): Likewise.
	* tree-vect-stmts.cc (vectorizable_operation): Likewise.
	* tree-vectorizer.cc: Likewise.
	* tree-vectorizer.h (class auto_purge_vect_location): Likewise.
	(vect_update_inits_of_drs): Likewise.
	(vect_get_mask_type_for_stmt): Likewise.
	(vect_rgroup_iv_might_wrap_p): Likewise.
	(cse_and_gimplify_to_preheader): Likewise.
	(vect_free_slp_tree): Likewise.
	(vect_pattern_recog): Likewise.
	(vect_stmt_dominates_stmt_p): Likewise.
	* tree.cc (initialize_tree_contains_struct): Likewise.
	(need_assembler_name_p): Likewise.
	(type_with_interoperable_signedness): Likewise.
	* tree.def (SWITCH_EXPR): Likewise.
	* tree.h (TYPE_SYMTAB_ADDRESS): Likewise.
	(poly_int_tree_p): Likewise.
	(inlined_function_outer_scope_p): Likewise.
	(tree_code_for_canonical_type_merging): Likewise.
	* value-prof.cc: Likewise.
	* value-prof.h (get_nth_most_common_value): Likewise.
	(find_func_by_profile_id): Likewise.
	* value-range.cc (vrp_operand_equal_p): Likewise.
	* value-range.h: Likewise.
	* var-tracking.cc: Likewise.
	* varasm.cc (default_function_section): Likewise.
	(function_section_1): Likewise.
	(assemble_variable): Likewise.
	(handle_vtv_comdat_section): Likewise.
	* vec.h (struct vec_prefix): Likewise.
	* vmsdbgout.cc (full_name): Likewise.
	* vtable-verify.cc: Likewise.
	* vtable-verify.h (struct vtv_graph_node): Likewise.
	* xcoffout.cc: Likewise.
	* xcoffout.h (DEBUG_SYMS_TEXT): Likewise.

gcc/ada/ChangeLog:

	* Make-generated.in: Rename .c names to .cc.
	* adaint.c: Likewise.
	* ctrl_c.c (dummy_handler): Likewise.
	* gcc-interface/Makefile.in: Likewise.
	* gcc-interface/config-lang.in: Likewise.
	* gcc-interface/decl.cc (concat_name): Likewise.
	(init_gnat_decl): Likewise.
	* gcc-interface/gigi.h (concat_name): Likewise.
	(init_gnat_utils): Likewise.
	(build_call_raise_range): Likewise.
	(gnat_mark_addressable): Likewise.
	(gnat_protect_expr): Likewise.
	(gnat_rewrite_reference): Likewise.
	* gcc-interface/lang-specs.h (ADA_DUMPS_OPTIONS): Likewise.
	* gcc-interface/utils.cc (GTY): Likewise.
	(add_deferred_type_context): Likewise.
	(init_gnat_utils): Likewise.
	* gcc-interface/utils2.cc (gnat_stable_expr_p): Likewise.
	(gnat_protect_expr): Likewise.
	(gnat_stabilize_reference_1): Likewise.
	(gnat_rewrite_reference): Likewise.
	* gsocket.h: Likewise.
	* init.cc (__gnat_error_handler): Likewise.
	* libgnarl/s-intman.ads: Likewise.
	* libgnarl/s-osinte__android.ads: Likewise.
	* libgnarl/s-osinte__darwin.ads: Likewise.
	* libgnarl/s-osinte__hpux.ads: Likewise.
	* libgnarl/s-osinte__linux.ads: Likewise.
	* libgnarl/s-osinte__qnx.ads: Likewise.
	* libgnarl/s-taskin.ads: Likewise.
	* rtfinal.cc: Likewise.
	* s-oscons-tmplt.c (CND): Likewise.
	* set_targ.ads: Likewise.

gcc/analyzer/ChangeLog:

	* analyzer.cc (is_special_named_call_p): Rename .c names to .cc.
	(is_named_call_p): Likewise.
	* region-model-asm.cc (deterministic_p): Likewise.
	* region.cc (field_region::get_relative_concrete_offset): Likewise.
	* sm-malloc.cc (method_p): Likewise.
	* supergraph.cc (superedge::dump_dot): Likewise.

gcc/c-family/ChangeLog:

	* c-ada-spec.cc: Rename .c names to .cc.
	* c-ada-spec.h: Likewise.
	* c-common.cc (c_build_vec_convert): Likewise.
	(warning_candidate_p): Likewise.
	* c-common.h (enum rid): Likewise.
	(build_real_imag_expr): Likewise.
	(finish_label_address_expr): Likewise.
	(c_get_substring_location): Likewise.
	(c_build_bind_expr): Likewise.
	(conflict_marker_get_final_tok_kind): Likewise.
	(c_parse_error): Likewise.
	(check_missing_format_attribute): Likewise.
	(invalid_array_size_error): Likewise.
	(warn_for_multistatement_macros): Likewise.
	(build_attr_access_from_parms): Likewise.
	* c-cppbuiltin.cc (c_cpp_builtins): Likewise.
	* c-format.cc: Likewise.
	* c-gimplify.cc (c_gimplify_expr): Likewise.
	* c-indentation.h: Likewise.
	* c-objc.h (objc_prop_attr_kind_for_rid): Likewise.
	* c-omp.cc (c_omp_predetermined_mapping): Likewise.
	* c-opts.cc (c_common_post_options): Likewise.
	(set_std_cxx23): Likewise.
	* c-pragma.cc (handle_pragma_redefine_extname): Likewise.
	* c-pretty-print.h: Likewise.

gcc/c/ChangeLog:

	* Make-lang.in: Rename .c names to .cc.
	* c-convert.cc: Likewise.
	* c-decl.cc (struct lang_identifier): Likewise.
	(pop_scope): Likewise.
	(finish_decl): Likewise.
	* c-objc-common.h (GCC_C_OBJC_COMMON): Likewise.
	* c-parser.cc (c_parser_skip_to_end_of_block_or_statement): Likewise.
	* c-parser.h (GCC_C_PARSER_H): Likewise.
	* c-tree.h (c_keyword_starts_typename): Likewise.
	(finish_declspecs): Likewise.
	(c_get_alias_set): Likewise.
	(enum c_oracle_request): Likewise.
	(tag_exists_p): Likewise.
	(set_c_expr_source_range): Likewise.
	* c-typeck.cc (c_common_type): Likewise.
	(c_finish_omp_clauses): Likewise.
	* config-lang.in: Likewise.

gcc/cp/ChangeLog:

	* Make-lang.in: Rename .c names to .cc.
	* config-lang.in: Likewise.
	* constexpr.cc (cxx_eval_constant_expression): Likewise.
	* coroutines.cc (morph_fn_to_coro): Likewise.
	* cp-gimplify.cc (cp_gimplify_expr): Likewise.
	* cp-lang.cc (struct lang_hooks): Likewise.
	(get_template_argument_pack_elems_folded): Likewise.
	* cp-objcp-common.cc (cp_tree_size): Likewise.
	(cp_unit_size_without_reusable_padding): Likewise.
	(pop_file_scope): Likewise.
	(cp_pushdecl): Likewise.
	* cp-objcp-common.h (GCC_CP_OBJCP_COMMON): Likewise.
	(cxx_simulate_record_decl): Likewise.
	* cp-tree.h (struct named_label_entry): Likewise.
	(current_function_return_value): Likewise.
	(more_aggr_init_expr_args_p): Likewise.
	(get_function_version_dispatcher): Likewise.
	(common_enclosing_class): Likewise.
	(strip_fnptr_conv): Likewise.
	(current_decl_namespace): Likewise.
	(do_aggregate_paren_init): Likewise.
	(cp_check_const_attributes): Likewise.
	(qualified_name_lookup_error): Likewise.
	(generic_targs_for): Likewise.
	(mark_exp_read): Likewise.
	(is_global_friend): Likewise.
	(maybe_reject_flexarray_init): Likewise.
	(module_token_lang): Likewise.
	(handle_module_option): Likewise.
	(literal_integer_zerop): Likewise.
	(build_extra_args): Likewise.
	(build_if_nonnull): Likewise.
	(maybe_check_overriding_exception_spec): Likewise.
	(finish_omp_target_clauses): Likewise.
	(maybe_warn_zero_as_null_pointer_constant): Likewise.
	(cxx_print_error_function): Likewise.
	(decl_in_std_namespace_p): Likewise.
	(merge_exception_specifiers): Likewise.
	(mangle_module_global_init): Likewise.
	(cxx_block_may_fallthru): Likewise.
	(fold_builtin_source_location): Likewise.
	(enum cp_oracle_request): Likewise.
	(subsumes): Likewise.
	(cp_finish_injected_record_type): Likewise.
	(vtv_build_vtable_verify_fndecl): Likewise.
	(cp_tree_c_finish_parsing): Likewise.
	* cvt.cc (diagnose_ref_binding): Likewise.
	(convert_to_void): Likewise.
	(convert_force): Likewise.
	(type_promotes_to): Likewise.
	* decl.cc (make_unbound_class_template_raw): Likewise.
	(cxx_init_decl_processing): Likewise.
	(check_class_member_definition_namespace): Likewise.
	(cxx_maybe_build_cleanup): Likewise.
	* decl2.cc (maybe_emit_vtables): Likewise.
	* error.cc (dump_function_name): Likewise.
	* init.cc (is_class_type): Likewise.
	(build_new_1): Likewise.
	* lang-specs.h: Likewise.
	* method.cc (make_alias_for_thunk): Likewise.
	* module.cc (specialization_add): Likewise.
	(module_state::read_cluster): Likewise.
	* name-lookup.cc (check_extern_c_conflict): Likewise.
	* name-lookup.h (struct cxx_binding): Likewise.
	* parser.cc (cp_parser_identifier): Likewise.
	* parser.h (struct cp_parser): Likewise.
	* pt.cc (has_value_dependent_address): Likewise.
	(push_tinst_level_loc): Likewise.
	* semantics.cc (finish_omp_clauses): Likewise.
	(finish_omp_atomic): Likewise.
	* tree.cc (cp_save_expr): Likewise.
	(cp_free_lang_data): Likewise.
	* typeck.cc (cp_common_type): Likewise.
	(strip_array_domain): Likewise.
	(rationalize_conditional_expr): Likewise.
	(check_return_expr): Likewise.
	* vtable-class-hierarchy.cc: Likewise.

gcc/d/ChangeLog:

	* d-gimplify.cc: Rename .c names to .cc.
	* d-incpath.cc: Likewise.
	* lang-specs.h: Likewise.

gcc/fortran/ChangeLog:

	* check.cc (gfc_check_all_any): Rename .c names to .cc.
	* class.cc (find_intrinsic_vtab): Likewise.
	* config-lang.in: Likewise.
	* cpp.cc (cpp_define_builtins): Likewise.
	* data.cc (get_array_index): Likewise.
	* decl.cc (match_clist_expr): Likewise.
	(get_proc_name): Likewise.
	(gfc_verify_c_interop_param): Likewise.
	(gfc_get_pdt_instance): Likewise.
	(gfc_match_formal_arglist): Likewise.
	(gfc_get_type_attr_spec): Likewise.
	* dependency.cc: Likewise.
	* error.cc (gfc_format_decoder): Likewise.
	* expr.cc (check_restricted): Likewise.
	(gfc_build_default_init_expr): Likewise.
	* f95-lang.cc: Likewise.
	* gfc-internals.texi: Likewise.
	* gfortran.h (enum match): Likewise.
	(enum procedure_type): Likewise.
	(enum oacc_routine_lop): Likewise.
	(gfc_get_pdt_instance): Likewise.
	(gfc_end_source_files): Likewise.
	(gfc_mpz_set_hwi): Likewise.
	(gfc_get_option_string): Likewise.
	(gfc_find_sym_in_expr): Likewise.
	(gfc_errors_to_warnings): Likewise.
	(gfc_real_4_kind): Likewise.
	(gfc_free_finalizer): Likewise.
	(gfc_sym_get_dummy_args): Likewise.
	(gfc_check_intrinsic_standard): Likewise.
	(gfc_free_case_list): Likewise.
	(gfc_resolve_oacc_routines): Likewise.
	(gfc_check_vardef_context): Likewise.
	(gfc_free_association_list): Likewise.
	(gfc_implicit_pure_function): Likewise.
	(gfc_ref_dimen_size): Likewise.
	(gfc_compare_actual_formal): Likewise.
	(gfc_resolve_wait): Likewise.
	(gfc_dt_upper_string): Likewise.
	(gfc_generate_module_code): Likewise.
	(gfc_delete_bbt): Likewise.
	(debug): Likewise.
	(gfc_build_block_ns): Likewise.
	(gfc_dep_difference): Likewise.
	(gfc_invalid_null_arg): Likewise.
	(gfc_is_finalizable): Likewise.
	(gfc_fix_implicit_pure): Likewise.
	(gfc_is_size_zero_array): Likewise.
	(gfc_is_reallocatable_lhs): Likewise.
	* gfortranspec.cc: Likewise.
	* interface.cc (compare_actual_expr): Likewise.
	* intrinsic.cc (add_functions): Likewise.
	* iresolve.cc (gfc_resolve_matmul): Likewise.
	(gfc_resolve_alarm_sub): Likewise.
	* iso-c-binding.def: Likewise.
	* lang-specs.h: Likewise.
	* libgfortran.h (GFC_STDERR_UNIT_NUMBER): Likewise.
	* match.cc (gfc_match_label): Likewise.
	(gfc_match_symbol): Likewise.
	(match_derived_type_spec): Likewise.
	(copy_ts_from_selector_to_associate): Likewise.
	* match.h (gfc_match_call): Likewise.
	(gfc_get_common): Likewise.
	(gfc_match_omp_end_single): Likewise.
	(gfc_match_volatile): Likewise.
	(gfc_match_bind_c): Likewise.
	(gfc_match_literal_constant): Likewise.
	(gfc_match_init_expr): Likewise.
	(gfc_match_array_constructor): Likewise.
	(gfc_match_end_interface): Likewise.
	(gfc_match_print): Likewise.
	(gfc_match_expr): Likewise.
	* matchexp.cc (next_operator): Likewise.
	* mathbuiltins.def: Likewise.
	* module.cc (free_true_name): Likewise.
	* openmp.cc (gfc_resolve_omp_parallel_blocks): Likewise.
	(gfc_omp_save_and_clear_state): Likewise.
	* parse.cc (parse_union): Likewise.
	(set_syms_host_assoc): Likewise.
	* resolve.cc (resolve_actual_arglist): Likewise.
	(resolve_elemental_actual): Likewise.
	(check_host_association): Likewise.
	(resolve_typebound_function): Likewise.
	(resolve_typebound_subroutine): Likewise.
	(gfc_resolve_expr): Likewise.
	(resolve_assoc_var): Likewise.
	(resolve_typebound_procedures): Likewise.
	(resolve_equivalence_derived): Likewise.
	* simplify.cc (simplify_bound): Likewise.
	* symbol.cc (gfc_set_default_type): Likewise.
	(gfc_add_ext_attribute): Likewise.
	* target-memory.cc (gfc_target_interpret_expr): Likewise.
	* target-memory.h (gfc_target_interpret_expr): Likewise.
	* trans-array.cc (gfc_get_cfi_dim_sm): Likewise.
	(gfc_conv_shift_descriptor_lbound): Likewise.
	(gfc_could_be_alias): Likewise.
	(gfc_get_dataptr_offset): Likewise.
	* trans-const.cc: Likewise.
	* trans-decl.cc (trans_function_start): Likewise.
	(gfc_trans_deferred_vars): Likewise.
	(generate_local_decl): Likewise.
	(gfc_generate_function_code): Likewise.
	* trans-expr.cc (gfc_vptr_size_get): Likewise.
	(gfc_trans_class_array_init_assign): Likewise.
	(POWI_TABLE_SIZE): Likewise.
	(gfc_conv_procedure_call): Likewise.
	(gfc_trans_arrayfunc_assign): Likewise.
	* trans-intrinsic.cc (gfc_conv_intrinsic_len): Likewise.
	(gfc_conv_intrinsic_loc): Likewise.
	(conv_intrinsic_event_query): Likewise.
	* trans-io.cc (gfc_build_st_parameter): Likewise.
	* trans-openmp.cc (gfc_omp_check_optional_argument): Likewise.
	(gfc_omp_unshare_expr_r): Likewise.
	(gfc_trans_omp_array_section): Likewise.
	(gfc_trans_omp_clauses): Likewise.
	* trans-stmt.cc (trans_associate_var): Likewise.
	(gfc_trans_deallocate): Likewise.
	* trans-stmt.h (gfc_trans_class_init_assign): Likewise.
	(gfc_trans_deallocate): Likewise.
	(gfc_trans_oacc_declare): Likewise.
	* trans-types.cc: Likewise.
	* trans-types.h (enum gfc_packed): Likewise.
	* trans.cc (N_): Likewise.
	(trans_code): Likewise.
	* trans.h (gfc_build_compare_string): Likewise.
	(gfc_conv_expr_type): Likewise.
	(gfc_trans_deferred_vars): Likewise.
	(getdecls): Likewise.
	(gfc_get_array_descr_info): Likewise.
	(gfc_omp_firstprivatize_type_sizes): Likewise.
	(GTY): Likewise.

gcc/go/ChangeLog:

	* config-lang.in: Rename .c names to .cc.
	* go-backend.cc: Likewise.
	* go-lang.cc: Likewise.
	* gospec.cc: Likewise.
	* lang-specs.h: Likewise.

gcc/jit/ChangeLog:

	* config-lang.in: Rename .c names to .cc.
	* docs/_build/texinfo/libgccjit.texi: Likewise.
	* docs/internals/index.rst: Likewise.
	* jit-builtins.cc (builtins_manager::make_builtin_function): Likewise.
	* jit-playback.cc (fold_const_var): Likewise.
	(playback::context::~context): Likewise.
	(new_field): Likewise.
	(new_bitfield): Likewise.
	(new_compound_type): Likewise.
	(playback::compound_type::set_fields): Likewise.
	(global_set_init_rvalue): Likewise.
	(load_blob_in_ctor): Likewise.
	(new_global_initialized): Likewise.
	(double>): Likewise.
	(new_string_literal): Likewise.
	(as_truth_value): Likewise.
	(build_call): Likewise.
	(playback::context::build_cast): Likewise.
	(new_array_access): Likewise.
	(new_field_access): Likewise.
	(dereference): Likewise.
	(postprocess): Likewise.
	(add_jump): Likewise.
	(add_switch): Likewise.
	(build_goto_operands): Likewise.
	(playback::context::read_dump_file): Likewise.
	(init_types): Likewise.
	* jit-recording.cc (recording::context::get_int_type): Likewise.
	* jit-recording.h: Likewise.
	* libgccjit.cc (compatible_types): Likewise.
	(gcc_jit_context_acquire): Likewise.
	(gcc_jit_context_release): Likewise.
	(gcc_jit_context_new_child_context): Likewise.
	(gcc_jit_type_as_object): Likewise.
	(gcc_jit_context_get_type): Likewise.
	(gcc_jit_context_get_int_type): Likewise.
	(gcc_jit_type_get_pointer): Likewise.
	(gcc_jit_type_get_const): Likewise.
	(gcc_jit_type_get_volatile): Likewise.
	(gcc_jit_type_dyncast_array): Likewise.
	(gcc_jit_type_is_bool): Likewise.
	(gcc_jit_type_is_pointer): Likewise.
	(gcc_jit_type_is_integral): Likewise.
	(gcc_jit_type_dyncast_vector): Likewise.
	(gcc_jit_type_is_struct): Likewise.
	(gcc_jit_vector_type_get_num_units): Likewise.
	(gcc_jit_vector_type_get_element_type): Likewise.
	(gcc_jit_type_unqualified): Likewise.
	(gcc_jit_type_dyncast_function_ptr_type): Likewise.
	(gcc_jit_function_type_get_return_type): Likewise.
	(gcc_jit_function_type_get_param_count): Likewise.
	(gcc_jit_function_type_get_param_type): Likewise.
	(gcc_jit_context_new_array_type): Likewise.
	(gcc_jit_context_new_field): Likewise.
	(gcc_jit_field_as_object): Likewise.
	(gcc_jit_context_new_struct_type): Likewise.
	(gcc_jit_struct_as_type): Likewise.
	(gcc_jit_struct_set_fields): Likewise.
	(gcc_jit_struct_get_field_count): Likewise.
	(gcc_jit_context_new_union_type): Likewise.
	(gcc_jit_context_new_function_ptr_type): Likewise.
	(gcc_jit_param_as_rvalue): Likewise.
	(gcc_jit_context_new_function): Likewise.
	(gcc_jit_function_get_return_type): Likewise.
	(gcc_jit_function_dump_to_dot): Likewise.
	(gcc_jit_block_get_function): Likewise.
	(gcc_jit_global_set_initializer_rvalue): Likewise.
	(gcc_jit_rvalue_get_type): Likewise.
	(gcc_jit_context_new_rvalue_from_int): Likewise.
	(gcc_jit_context_one): Likewise.
	(gcc_jit_context_new_rvalue_from_double): Likewise.
	(gcc_jit_context_null): Likewise.
	(gcc_jit_context_new_string_literal): Likewise.
	(valid_binary_op_p): Likewise.
	(gcc_jit_context_new_binary_op): Likewise.
	(gcc_jit_context_new_comparison): Likewise.
	(gcc_jit_context_new_call): Likewise.
	(is_valid_cast): Likewise.
	(gcc_jit_context_new_cast): Likewise.
	(gcc_jit_object_get_context): Likewise.
	(gcc_jit_object_get_debug_string): Likewise.
	(gcc_jit_lvalue_access_field): Likewise.
	(gcc_jit_rvalue_access_field): Likewise.
	(gcc_jit_rvalue_dereference_field): Likewise.
	(gcc_jit_rvalue_dereference): Likewise.
	(gcc_jit_lvalue_get_address): Likewise.
	(gcc_jit_lvalue_set_tls_model): Likewise.
	(gcc_jit_lvalue_set_link_section): Likewise.
	(gcc_jit_function_new_local): Likewise.
	(gcc_jit_block_add_eval): Likewise.
	(gcc_jit_block_add_assignment): Likewise.
	(is_bool): Likewise.
	(gcc_jit_block_end_with_conditional): Likewise.
	(gcc_jit_block_add_comment): Likewise.
	(gcc_jit_block_end_with_jump): Likewise.
	(gcc_jit_block_end_with_return): Likewise.
	(gcc_jit_block_end_with_void_return): Likewise.
	(case_range_validator::case_range_validator): Likewise.
	(case_range_validator::validate): Likewise.
	(case_range_validator::get_wide_int): Likewise.
	(gcc_jit_block_end_with_switch): Likewise.
	(gcc_jit_context_set_str_option): Likewise.
	(gcc_jit_context_set_int_option): Likewise.
	(gcc_jit_context_set_bool_option): Likewise.
	(gcc_jit_context_set_bool_allow_unreachable_blocks): Likewise.
	(gcc_jit_context_set_bool_use_external_driver): Likewise.
	(gcc_jit_context_add_command_line_option): Likewise.
	(gcc_jit_context_add_driver_option): Likewise.
	(gcc_jit_context_enable_dump): Likewise.
	(gcc_jit_context_compile): Likewise.
	(gcc_jit_context_compile_to_file): Likewise.
	(gcc_jit_context_set_logfile): Likewise.
	(gcc_jit_context_dump_reproducer_to_file): Likewise.
	(gcc_jit_context_get_first_error): Likewise.
	(gcc_jit_context_get_last_error): Likewise.
	(gcc_jit_result_get_code): Likewise.
	(gcc_jit_result_get_global): Likewise.
	(gcc_jit_rvalue_set_bool_require_tail_call): Likewise.
	(gcc_jit_type_get_aligned): Likewise.
	(gcc_jit_type_get_vector): Likewise.
	(gcc_jit_function_get_address): Likewise.
	(gcc_jit_version_patchlevel): Likewise.
	(gcc_jit_block_add_extended_asm): Likewise.
	(gcc_jit_extended_asm_as_object): Likewise.
	(gcc_jit_extended_asm_set_volatile_flag): Likewise.
	(gcc_jit_extended_asm_set_inline_flag): Likewise.
	(gcc_jit_extended_asm_add_output_operand): Likewise.
	(gcc_jit_extended_asm_add_input_operand): Likewise.
	(gcc_jit_extended_asm_add_clobber): Likewise.
	* notes.txt: Likewise.

gcc/lto/ChangeLog:

	* config-lang.in: Rename .c names to .cc.
	* lang-specs.h: Likewise.
	* lto-common.cc (gimple_register_canonical_type_1): Likewise.
	* lto-common.h: Likewise.
	* lto-dump.cc (lto_main): Likewise.
	* lto-lang.cc (handle_fnspec_attribute): Likewise.
	(lto_getdecls): Likewise.
	(lto_init): Likewise.
	* lto.cc (lto_main): Likewise.
	* lto.h: Likewise.

gcc/objc/ChangeLog:

	* Make-lang.in: Rename .c names to .cc.
	* config-lang.in: Likewise.
	* lang-specs.h: Likewise.
	* objc-act.cc (objc_build_component_ref): Likewise.
	(objc_copy_binfo): Likewise.
	(lookup_method_in_hash_lists): Likewise.
	(objc_finish_foreach_loop): Likewise.
	* objc-act.h (objc_common_init_ts): Likewise.
	* objc-gnu-runtime-abi-01.cc: Likewise.
	* objc-lang.cc (struct lang_hooks): Likewise.
	* objc-map.cc: Likewise.
	* objc-next-runtime-abi-01.cc (generate_objc_symtab_decl): Likewise.
	* objc-runtime-shared-support.cc: Likewise.
	* objc-runtime-shared-support.h (build_protocol_initializer): Likewise.

gcc/objcp/ChangeLog:

	* Make-lang.in: Rename .c names to .cc.
	* config-lang.in: Likewise.
	* lang-specs.h: Likewise.
	* objcp-decl.cc (objcp_end_compound_stmt): Likewise.
	* objcp-lang.cc (struct lang_hooks): Likewise.

gcc/po/ChangeLog:

	* EXCLUDES: Rename .c names to .cc.

libcpp/ChangeLog:

	* Makefile.in: Rename .c names to .cc.
	* charset.cc (convert_escape): Likewise.
	* directives.cc (directive_diagnostics): Likewise.
	(_cpp_handle_directive): Likewise.
	(lex_macro_node): Likewise.
	* include/cpplib.h (struct _cpp_file): Likewise.
	(PURE_ZERO): Likewise.
	(cpp_defined): Likewise.
	(cpp_error_at): Likewise.
	(cpp_forall_identifiers): Likewise.
	(cpp_compare_macros): Likewise.
	(cpp_get_converted_source): Likewise.
	(cpp_read_state): Likewise.
	(cpp_directive_only_process): Likewise.
	(struct cpp_decoded_char): Likewise.
	* include/line-map.h (enum lc_reason): Likewise.
	(enum location_aspect): Likewise.
	* include/mkdeps.h: Likewise.
	* init.cc (cpp_destroy): Likewise.
	(cpp_finish): Likewise.
	* internal.h (struct cpp_reader): Likewise.
	(_cpp_defined_macro_p): Likewise.
	(_cpp_backup_tokens_direct): Likewise.
	(_cpp_destroy_hashtable): Likewise.
	(_cpp_has_header): Likewise.
	(_cpp_expand_op_stack): Likewise.
	(_cpp_commit_buff): Likewise.
	(_cpp_restore_special_builtin): Likewise.
	(_cpp_bracket_include): Likewise.
	(_cpp_replacement_text_len): Likewise.
	(ufputs): Likewise.
	* line-map.cc (linemap_macro_loc_to_exp_point): Likewise.
	(linemap_check_files_exited): Likewise.
	(line_map_new_raw): Likewise.
	* traditional.cc (enum ls): Likewise.
2022-01-17 22:12:07 +01:00
Jakub Jelinek 7adcbafe45 Update copyright years. 2022-01-03 10:42:10 +01:00
Jakub Jelinek a6e0d59370 libcpp: Fix _Pragma stringification [PR103165]
As the testcase show, sometimes _Pragma is turned into CPP_PRAGMA
.. CPP_PRAGMA_EOL tokens, even when it might still need to be
stringized later on.  We are then ICEing because we don't handle
stringification of CPP_PRAGMA or CPP_PRAGMA_EOL, but trying to
reconstruct the exact tokens with exact spacing after it has been
lowered is very hard.  So, instead this patch ensures we don't
lower _Pragma during expand_arg calls, but only later when
cpp_get_token_1 is called outside of expand_arg.

2021-11-22  Jakub Jelinek  <jakub@redhat.com>
	    Tobias Burnus  <tobias@codesourcery.com>

	PR preprocessor/103165
libcpp/
	* internal.h (struct lexer_state): Add ignore__Pragma field.
	* macro.c (builtin_macro): Don't interpret _Pragma if
	pfile->state.ignore__Pragma.
	(expand_arg): Temporarily set pfile->state.ignore__Pragma to 1.
gcc/testsuite/
	* c-c++-common/gomp/pragma-3.c: New test.
	* c-c++-common/gomp/pragma-4.c: New test.
	* c-c++-common/gomp/pragma-5.c: New test.

Co-Authored-By: Tobias Burnus <tobias@codesourcery.com>
2021-11-22 22:29:20 +01:00
Marek Polacek 51c500269b libcpp: Implement -Wbidi-chars for CVE-2021-42574 [PR103026]
From a link below:
"An issue was discovered in the Bidirectional Algorithm in the Unicode
Specification through 14.0. It permits the visual reordering of
characters via control sequences, which can be used to craft source code
that renders different logic than the logical ordering of tokens
ingested by compilers and interpreters. Adversaries can leverage this to
encode source code for compilers accepting Unicode such that targeted
vulnerabilities are introduced invisibly to human reviewers."

More info:
https://nvd.nist.gov/vuln/detail/CVE-2021-42574
https://trojansource.codes/

This is not a compiler bug.  However, to mitigate the problem, this patch
implements -Wbidi-chars=[none|unpaired|any] to warn about possibly
misleading Unicode bidirectional control characters the preprocessor may
encounter.

The default is =unpaired, which warns about improperly terminated
bidirectional control characters; e.g. a LRE without its corresponding PDF.
The level =any warns about any use of bidirectional control characters.

This patch handles both UCNs and UTF-8 characters.  UCNs designating
bidi characters in identifiers are accepted since r204886.  Then r217144
enabled -fextended-identifiers by default.  Extended characters in C/C++
identifiers have been accepted since r275979.  However, this patch still
warns about mixing UTF-8 and UCN bidi characters; there seems to be no
good reason to allow mixing them.

We warn in different contexts: comments (both C and C++-style), string
literals, character constants, and identifiers.  Expectedly, UCNs are ignored
in comments and raw string literals.  The bidirectional control characters
can nest so this patch handles that as well.

I have not included nor tested this at all with Fortran (which also has
string literals and line comments).

Dave M. posted patches improving diagnostic involving Unicode characters.
This patch does not make use of this new infrastructure yet.

	PR preprocessor/103026

gcc/c-family/ChangeLog:

	* c.opt (Wbidi-chars, Wbidi-chars=): New option.

gcc/ChangeLog:

	* doc/invoke.texi: Document -Wbidi-chars.

libcpp/ChangeLog:

	* include/cpplib.h (enum cpp_bidirectional_level): New.
	(struct cpp_options): Add cpp_warn_bidirectional.
	(enum cpp_warning_reason): Add CPP_W_BIDIRECTIONAL.
	* internal.h (struct cpp_reader): Add warn_bidi_p member
	function.
	* init.c (cpp_create_reader): Set cpp_warn_bidirectional.
	* lex.c (bidi): New namespace.
	(get_bidi_utf8): New function.
	(get_bidi_ucn): Likewise.
	(maybe_warn_bidi_on_close): Likewise.
	(maybe_warn_bidi_on_char): Likewise.
	(_cpp_skip_block_comment): Implement warning about bidirectional
	control characters.
	(skip_line_comment): Likewise.
	(forms_identifier_p): Likewise.
	(lex_identifier): Likewise.
	(lex_string): Likewise.
	(lex_raw_string): Likewise.

gcc/testsuite/ChangeLog:

	* c-c++-common/Wbidi-chars-1.c: New test.
	* c-c++-common/Wbidi-chars-2.c: New test.
	* c-c++-common/Wbidi-chars-3.c: New test.
	* c-c++-common/Wbidi-chars-4.c: New test.
	* c-c++-common/Wbidi-chars-5.c: New test.
	* c-c++-common/Wbidi-chars-6.c: New test.
	* c-c++-common/Wbidi-chars-7.c: New test.
	* c-c++-common/Wbidi-chars-8.c: New test.
	* c-c++-common/Wbidi-chars-9.c: New test.
	* c-c++-common/Wbidi-chars-10.c: New test.
	* c-c++-common/Wbidi-chars-11.c: New test.
	* c-c++-common/Wbidi-chars-12.c: New test.
	* c-c++-common/Wbidi-chars-13.c: New test.
	* c-c++-common/Wbidi-chars-14.c: New test.
	* c-c++-common/Wbidi-chars-15.c: New test.
	* c-c++-common/Wbidi-chars-16.c: New test.
	* c-c++-common/Wbidi-chars-17.c: New test.
2021-11-16 21:56:16 -05:00
David Malcolm bd5e882cf6 diagnostics: escape non-ASCII source bytes for certain diagnostics
This patch adds support to GCC's diagnostic subsystem for escaping certain
bytes and Unicode characters when quoting source code.

Specifically, this patch adds a new flag rich_location::m_escape_on_output
which is a hint from a diagnostic that non-ASCII bytes in the pertinent
lines of the user's source code should be escaped when printed.

The patch sets this for the following diagnostics:
- when complaining about stray bytes in the program (when these
are non-printable)
- when complaining about "null character(s) ignored");
- for -Wnormalized= (and generate source ranges for such warnings)

The escaping is controlled by a new option:
  -fdiagnostics-escape-format=[unicode|bytes]

For example, consider a diagnostic involing a source line containing the
string "before" followed by the Unicode character U+03C0 ("GREEK SMALL
LETTER PI", with UTF-8 encoding 0xCF 0x80) followed by the byte 0xBF
(a stray UTF-8 trailing byte), followed by the string "after", where the
diagnostic highlights the U+03C0 character.

By default, this line will be printed verbatim to the user when
reporting a diagnostic at it, as:

 beforeπXafter
       ^

(using X for the stray byte to avoid putting invalid UTF-8 in this
commit message)

If the diagnostic sets the "escape" flag, it will be printed as:

 before<U+03C0><BF>after
       ^~~~~~~~

with -fdiagnostics-escape-format=unicode (the default), or as:

  before<CF><80><BF>after
        ^~~~~~~~

if the user supplies -fdiagnostics-escape-format=bytes.

This only affects how the source is printed; it does not affect
how column numbers that are printed (as per -fdiagnostics-column-unit=
and -fdiagnostics-column-origin=).

gcc/c-family/ChangeLog:
	* c-lex.c (c_lex_with_flags): When complaining about non-printable
	CPP_OTHER tokens, set the "escape on output" flag.

gcc/ChangeLog:
	* common.opt (fdiagnostics-escape-format=): New.
	(diagnostics_escape_format): New enum.
	(DIAGNOSTICS_ESCAPE_FORMAT_UNICODE): New enum value.
	(DIAGNOSTICS_ESCAPE_FORMAT_BYTES): Likewise.
	* diagnostic-format-json.cc (json_end_diagnostic): Add
	"escape-source" attribute.
	* diagnostic-show-locus.c
	(exploc_with_display_col::exploc_with_display_col): Replace
	"tabstop" param with a cpp_char_column_policy and add an "aspect"
	param.  Use these to compute m_display_col accordingly.
	(struct char_display_policy): New struct.
	(layout::m_policy): New field.
	(layout::m_escape_on_output): New field.
	(def_policy): New function.
	(make_range): Update for changes to exploc_with_display_col ctor.
	(default_print_decoded_ch): New.
	(width_per_escaped_byte): New.
	(escape_as_bytes_width): New.
	(escape_as_bytes_print): New.
	(escape_as_unicode_width): New.
	(escape_as_unicode_print): New.
	(make_policy): New.
	(layout::layout): Initialize new fields.  Update m_exploc ctor
	call for above change to ctor.
	(layout::maybe_add_location_range): Update for changes to
	exploc_with_display_col ctor.
	(layout::calculate_x_offset_display): Update for change to
	cpp_display_width.
	(layout::print_source_line): Pass policy
	to cpp_display_width_computation. Capture cpp_decoded_char when
	calling process_next_codepoint.  Move printing of source code to
	m_policy.m_print_cb.
	(line_label::line_label): Pass in policy rather than context.
	(layout::print_any_labels): Update for change to line_label ctor.
	(get_affected_range): Pass in policy rather than context, updating
	calls to location_compute_display_column accordingly.
	(get_printed_columns): Likewise, also for cpp_display_width.
	(correction::correction): Pass in policy rather than tabstop.
	(correction::compute_display_cols): Pass m_policy rather than
	m_tabstop to cpp_display_width.
	(correction::m_tabstop): Replace with...
	(correction::m_policy): ...this.
	(line_corrections::line_corrections): Pass in policy rather than
	context.
	(line_corrections::m_context): Replace with...
	(line_corrections::m_policy): ...this.
	(line_corrections::add_hint): Update to use m_policy rather than
	m_context.
	(line_corrections::add_hint): Likewise.
	(layout::print_trailing_fixits): Likewise.
	(selftest::test_display_widths): New.
	(selftest::test_layout_x_offset_display_utf8): Update to use
	policy rather than tabstop.
	(selftest::test_one_liner_labels_utf8): Add test of escaping
	source lines.
	(selftest::test_diagnostic_show_locus_one_liner_utf8): Update to
	use policy rather than tabstop.
	(selftest::test_overlapped_fixit_printing): Likewise.
	(selftest::test_overlapped_fixit_printing_utf8): Likewise.
	(selftest::test_overlapped_fixit_printing_2): Likewise.
	(selftest::test_tab_expansion): Likewise.
	(selftest::test_escaping_bytes_1): New.
	(selftest::test_escaping_bytes_2): New.
	(selftest::diagnostic_show_locus_c_tests): Call the new tests.
	* diagnostic.c (diagnostic_initialize): Initialize
	context->escape_format.
	(convert_column_unit): Update to use default character width policy.
	(selftest::test_diagnostic_get_location_text): Likewise.
	* diagnostic.h (enum diagnostics_escape_format): New enum.
	(diagnostic_context::escape_format): New field.
	* doc/invoke.texi (-fdiagnostics-escape-format=): New option.
	(-fdiagnostics-format=): Add "escape-source" attribute to examples
	of JSON output, and document it.
	* input.c (location_compute_display_column): Pass in "policy"
	rather than "tabstop", passing to
	cpp_byte_column_to_display_column.
	(selftest::test_cpp_utf8): Update to use cpp_char_column_policy.
	* input.h (class cpp_char_column_policy): New forward decl.
	(location_compute_display_column): Pass in "policy" rather than
	"tabstop".
	* opts.c (common_handle_option): Handle
	OPT_fdiagnostics_escape_format_.
	* selftest.c (temp_source_file::temp_source_file): New ctor
	overload taking a size_t.
	* selftest.h (temp_source_file::temp_source_file): Likewise.

gcc/testsuite/ChangeLog:
	* c-c++-common/diagnostic-format-json-1.c: Add regexp to consume
	"escape-source" attribute.
	* c-c++-common/diagnostic-format-json-2.c: Likewise.
	* c-c++-common/diagnostic-format-json-3.c: Likewise.
	* c-c++-common/diagnostic-format-json-4.c: Likewise, twice.
	* c-c++-common/diagnostic-format-json-5.c: Likewise.
	* gcc.dg/cpp/warn-normalized-4-bytes.c: New test.
	* gcc.dg/cpp/warn-normalized-4-unicode.c: New test.
	* gcc.dg/encoding-issues-bytes.c: New test.
	* gcc.dg/encoding-issues-unicode.c: New test.
	* gfortran.dg/diagnostic-format-json-1.F90: Add regexp to consume
	"escape-source" attribute.
	* gfortran.dg/diagnostic-format-json-2.F90: Likewise.
	* gfortran.dg/diagnostic-format-json-3.F90: Likewise.

libcpp/ChangeLog:
	* charset.c (convert_escape): Use encoding_rich_location when
	complaining about nonprintable unknown escape sequences.
	(cpp_display_width_computation::::cpp_display_width_computation):
	Pass in policy rather than tabstop.
	(cpp_display_width_computation::process_next_codepoint): Add "out"
	param and populate *out if non-NULL.
	(cpp_display_width_computation::advance_display_cols): Pass NULL
	to process_next_codepoint.
	(cpp_byte_column_to_display_column): Pass in policy rather than
	tabstop.  Pass NULL to process_next_codepoint.
	(cpp_display_column_to_byte_column): Pass in policy rather than
	tabstop.
	* errors.c (cpp_diagnostic_get_current_location): New function,
	splitting out the logic from...
	(cpp_diagnostic): ...here.
	(cpp_warning_at): New function.
	(cpp_pedwarning_at): New function.
	* include/cpplib.h (cpp_warning_at): New decl for rich_location.
	(cpp_pedwarning_at): Likewise.
	(struct cpp_decoded_char): New.
	(struct cpp_char_column_policy): New.
	(cpp_display_width_computation::cpp_display_width_computation):
	Replace "tabstop" param with "policy".
	(cpp_display_width_computation::process_next_codepoint): Add "out"
	param.
	(cpp_display_width_computation::m_tabstop): Replace with...
	(cpp_display_width_computation::m_policy): ...this.
	(cpp_byte_column_to_display_column): Replace "tabstop" param with
	"policy".
	(cpp_display_width): Likewise.
	(cpp_display_column_to_byte_column): Likewise.
	* include/line-map.h (rich_location::escape_on_output_p): New.
	(rich_location::set_escape_on_output): New.
	(rich_location::m_escape_on_output): New.
	* internal.h (cpp_diagnostic_get_current_location): New decl.
	(class encoding_rich_location): New.
	* lex.c (skip_whitespace): Use encoding_rich_location when
	complaining about null characters.
	(warn_about_normalization): Generate a source range when
	complaining about improperly normalized tokens, rather than just a
	point, and use encoding_rich_location so that the source code
	is escaped on printing.
	* line-map.c (rich_location::rich_location): Initialize
	m_escape_on_output.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2021-11-01 09:35:46 -04:00
Nathan Sidwell 1f9db6929d c++: header-unit build capability [PR 99023]
This defect really required building header-units and include translation
of pieces of the standard library.  This adds smarts to the modules
test harness to do that -- accept .X files as the source file, but
provide '-x c++-system-header $HDR' in the options.  The .X file will
be considered by the driver to be a linker script and ignored (with a
warning).

Using this we can add 2 tests that end up building list_initializer
and iostream, along with a test that iostream's build
include-translates list_initializer's #include.  That discovered a set
of issues with the -flang-info-include-translate=HDR handling, also
fixed and documented here.

	PR c++/99023
	gcc/cp/
	* module.cc (canonicalize_header_name): Use
	cpp_probe_header_unit.
	(maybe_translate_include): Fix note_includes comparison.
	(init_modules): Fix note_includes string termination.
	libcpp/
	* include/cpplib.h (cpp_find_header_unit): Rename to ...
	(cpp_probe_header_unit): ... this.
	* internal.h (_cp_find_header_unit): Declare.
	* files.c (cpp_find_header_unit): Break apart to ..
	(test_header_unit): ... this, and ...
	(_cpp_find_header_unit): ... and, or and ...
	(cpp_probe_header_unit): ... this.
	* macro.c (cpp_get_token_1): Call _cpp_find_header_unit.
	gcc/
	* doc/invoke.texi (flang-info-include-translate): Document header
	lookup behaviour.
	gcc/testsuite/
	* g++.dg/modules/modules.exp: Bail on cross-testing.  Add support
	for .X files.
	* g++.dg/modules/pr99023_a.X: New.
	* g++.dg/modules/pr99023_b.X: New.
2021-02-18 13:22:48 -08:00
Jakub Jelinek 99dee82307 Update copyright years. 2021-01-04 10:26:59 +01:00
JeanHeyd Meneide eccec86841 Feature: Macros for identifying the wide and narrow execution string literal encoding
gcc/c-family
	* c-cppbuiltin.c (c_cpp_builtins): Add predefined
	{__GNUC_EXECUTION_CHARSET_NAME} and
	_WIDE_EXECUTION_CHARSET_NAME} macros.

gcc/
	* doc/cpp.texi: Document new macros.

gcc/testsuite/
	* c-c++-common/cpp/wide-narrow-predef-macros.c: New test.

libcpp/
	* charset.c (init_iconv_desc): Initialize "to" and "from" fields.
	* directives.c (cpp_get_narrow_charset_name): New function.
	(cpp_get_wide_charset_name): Likewise.
	* include/cpplib.h (cpp_get_narrow_charset_name): Prototype.
	(cpp_get_wide_charset_name): Likewise.
	* internal.h (cset_converter): Add "to" and "from" fields.
2020-12-01 14:46:51 -07:00
Nathan Sidwell 13f93cf533 preprocessor: Add deferred macros
Deferred macros are needed for C++ modules.  Header units may export
macro definitions and undefinitions.  These are resolved lazily at the
point of (potential) use.  (The language specifies that, it's not just
a useful optimization.)  Thus, identifier nodes grow a 'deferred'
field, which fortunately doesn't expand the structure on 64-bit
systems as there was padding there.  This is non-zero on NT_MACRO
nodes, if the macro is deferred.  When such an identifier is lexed, it
is resolved via a callback that I added recently.  That will either
provide the macro definition, or discover it there was an overriding
undef.  Either way the identifier is no longer a deferred macro.
Notice it is now possible for NT_MACRO nodes to have a NULL macro
expansion.

	libcpp/
	* include/cpplib.h (struct cpp_hashnode): Add deferred field.
	(cpp_set_deferred_macro): Define.
	(cpp_get_deferred_macro): Declare.
	(cpp_macro_definition): Reformat, add overload.
	(cpp_macro_definition_location): Deal with deferred macro.
	(cpp_alloc_token_string, cpp_compare_macro): Declare.
	* internal.h (_cpp_notify_macro_use): Return bool
	(_cpp_maybe_notify_macro_use): Likewise.
	* directives.c (do_undef): Check macro is not undef before
	warning.
	(do_ifdef, do_ifndef): Deal with deferred macro.
	* expr.c (parse_defined): Likewise.
	* lex.c (cpp_allocate_token_string): Break out of ...
	(create_literal): ... here.  Call it.
	(cpp_maybe_module_directive): Deal with deferred macro.
	* macro.c (cpp_get_token_1): Deal with deferred macro.
	(warn_of_redefinition): Deal with deferred macro.
	(compare_macros): Rename to ...
	(cpp_compare_macro): ... here.  Make extern.
	(cpp_get_deferred_macro): New.
	(_cpp_notify_macro_use): Deal with deferred macro, return bool
	indicating definedness.
	(cpp_macro_definition): Deal with deferred macro.
2020-11-24 08:31:03 -08:00
Nathan Sidwell 9844497a93 preprocessor: main file searching
This adds the capability to locate the main file on the user or system
include paths.  That's extremely useful to users building header
units.  Searching has to be requiested (plain header-unit compilation
will not search).  Also, to make include_next work as expected when
building a header unit, we add a mechanism to retrofit a non-searched
source file as one on the include path.

	libcpp/
	* include/cpplib.h (enum cpp_main_search): New.
	(struct cpp_options): Add main_search field.
	(cpp_main_loc): Declare.
	(cpp_retrofit_as_include): Declare.
	* internal.h (struct cpp_reader): Add main_loc field.
	(_cpp_in_main_source_file): Not main if main is a header.
	* init.c (cpp_read_main_file): Use main_search option to locate
	main file.  Set main_loc
	* files.c (cpp_retrofit_as_include): New.
2020-11-19 07:05:08 -08:00
Nathan Sidwell bf425849f1 preprocessor: main-file cleanup
In preparing module patch 7 I realized there was a cleanup I could
make to simplify it.  This is that cleanup.  Also, when doing the
cleanup I noticed some macros had been turned into inline functions,
but not renamed to the preprocessors internal namespace
(_cpp_$INTERNAL rather than cpp_$USER).  Thus, this renames those
functions, deletes an internal field of the file structure, and
determines whether we're in the main file by comparing to
pfile->main_file, the _cpp_file of the main file.

	libcpp/
	* internal.h (cpp_in_system_header): Rename to ...
	(_cpp_in_system_header): ... here.
	(cpp_in_primary_file): Rename to ...
	(_cpp_in_main_source_file): ... here.  Compare main_file equality
	and check main_search value.
	* lex.c (maybe_va_opt_error, _cpp_lex_direct): Adjust for rename.
	* macro.c (_cpp_builtin_macro_text): Likewise.
	(replace_args): Likewise.
	* directives.c (do_include_next): Likewise.
	(do_pragma_once, do_pragma_system_header): Likewise.
	* files.c (struct _cpp_file): Delete main_file field.
	(pch_open): Check pfile->main_file equality.
	(make_cpp_file): Drop cpp_reader parm, don't set main_file.
	(_cpp_find_file): Adjust.
	(_cpp_stack_file): Check pfile->main_file equality.
	(struct report_missing_guard_data): Add cpp_reader field.
	(report_missing_guard): Check pfile->main_file equality.
	(_cpp_report_missing_guards): Adjust.
2020-11-19 04:47:00 -08:00
Nathan Sidwell c9c3d5f28a preprocessor: C++ module-directives
C++20 modules introduces a new kind of preprocessor directive -- a
module directive.  These are directives but without the leading '#'.
We have to detect them by sniffing the start of a logical line.  When
detected we replace the initial identifiers with unspellable tokens
and pass them through to the language parser the same way deferred
pragmas are.  There's a PRAGMA_EOL at the logical end of line too.

One additional complication is that we have to do header-name lexing
after the initial tokens, and that requires changes in the macro-aware
piece of the preprocessor.  The above sniffer sets a counter in the
lexer state, and that triggers at the appropriate point.  We then do
the same header-name lexing that occurs on a #include directive or
has_include pseudo-macro.  Except that the header name ends up in the
token stream.

A couple of token emitters need to deal with the new token possibility.

	gcc/c-family/
	* c-lex.c (c_lex_with_flags): CPP_HEADER_NAMEs can now be seen.
	libcpp/
	* include/cpplib.h (struct cpp_options): Add module_directives
	option.
	(NODE_MODULE): New node flag.
	(struct cpp_hashnode): Make rid-code a bitfield, increase bits in
	flags and swap with type field.
	* init.c (post_options): Create module-directive identifier nodes.
	* internal.h (struct lexer_state): Add directive_file_token &
	n_modules fields.  Add module node enumerator.
	* lex.c (cpp_maybe_module_directive): New.
	(_cpp_lex_token): Call it.
	(cpp_output_token): Add '"' around CPP_HEADER_NAME token.
	(do_peek_ident, do_peek_module): New.
	(cpp_directives_only): Detect module-directive lines.
	* macro.c (cpp_get_token_1): Deal with directive_file_token
	triggering.
2020-11-18 10:24:12 -08:00
Nathan Sidwell 1f8ac75991 preprocessor: module line maps
This patch adds LC_MODULE as a map kind, used to indicate a c++
module.  Unlike a regular source file, it only contains a single
location, and the source locations in that module are represented by
ordinary locations whose 'included_from' location is the module.

It also exposes some entry points that modules will use to create
blocks of line maps.

In the original posting, I'd missed the deletion of the
linemap_enter_macro from internal.h.  That's included here.

	libcpp/
	* include/line-map.h (enum lc_reason): Add LC_MODULE.
	(MAP_MODULE_P): New.
	(line_map_new_raw): Declare.
	(linemap_enter_macro): Move declaration from internal.h
	(linemap_module_loc, linemap_module_reparent)
	(linemap_module_restore): Declare.
	(linemap_lookup_macro_indec): Declare.
	* internal.h (linemap_enter_macro): Moved to line-map.h.
	* line-map.c (linemap_new_raw): New, broken out of ...
	(new_linemap): ... here.  Call it.
	(LAST_SOURCE_LINE_LOCATION): New.
	(liemap_module_loc, linemap_module_reparent)
	(linemap_module_restore): New.
	(linemap_lookup_macro_index): New, broken out of ...
	(linemap_macro_map_lookup): ... here.  Call it.
	(linemap_dump): Add module dump.
2020-11-17 08:10:56 -08:00
Nathan Sidwell 4b5f564a5d libcpp: Provide date routine
Joseph pointed me at cb_get_source_date_epoch, which allows repeatable
builds and solves a FIXME I had on the modules branch.  Unfortunately
it's used exclusively to generate __DATE__ and __TIME__ values, which
fallback to using a time(2) call.  It'd be nicer if the preprocessor
made whatever time value it determined available to the rest of the
compiler.  So this patch adds a new cpp_get_date function, which
abstracts the call to the get_source_date_epoch hook, or uses time
directly.  The value is cached.  Thus the timestamp I end up putting
on CMI files matches __DATE__ and __TIME__ expansions.  That seems
worthwhile.

	libcpp/
	* include/cpplib.h (enum class CPP_time_kind): New.
	(cpp_get_date): Declare.
	* internal.h (struct cpp_reader): Replace source_date_epoch with
	time_stamp and time_stamp_kind.
	* init.c (cpp_create_reader): Initialize them.
	* macro.c (_cpp_builtin_macro_text): Use cpp_get_date.
	(cpp_get_date): Broken out from _cpp_builtin_macro_text and
	genericized.
2020-11-06 08:59:20 -08:00
Nathan Sidwell e9a2e208dd cpplib: Macro use location and comparison
Our macro use hook passes a location, but doesn't recieve it from the
using location.  This patch adds the extra location_t parameter and
passes it though.

A second cleanup is breaking out the macro comparison code from the
redefinition warning.  That;ll turn out useful for modules.

Finally, there's a filename comparison needed for the location
optimization of rewinding from line 2 (occurs during the emission of
builtin macros).

	libcpp/
	* internal.h (_cpp_notify_macro_use): Add location parm.
	(_cpp_maybe_notify_macro_use): Likewise.
	* directives.c (_cpp_do_file_change): Check we've not changed file
	when optimizing a rewind.
	(do_ifdef): Pass location to _cpp_maybe_notify_macro_use.
	(do_ifndef): Likewise.  Delete obsolete comment about powerpc.
	* expr.c (parse_defined): Pass location to
	_cpp_maybe_notify_macro_use.
	* macro.c (enter_macro_context): Likewise.
	(warn_of_redefinition): Break out helper function.  Call it.
	(compare_macros): New function broken out of warn_of_redefinition.
	(_cpp_new_macro): Zero all fields.
	(_cpp_notify_macro_use): Add location parameter.
2020-11-02 08:56:38 -08:00
Nathan Sidwell 5abe05b433 preprocessor: Fix non-fn fn-like macro at EOF [PR97471]
We inject EOF tokens between macro argument lists, but had
confused/stale logic in the non-fn invocation.  Renamed the magic
'eof' token, as it's now only used for macro argument termination.
Always rewind the non-OPEN_PAREN token.

	libcpp/
	* internal.h (struct cpp_reader): Rename 'eof' field to 'endarg'.
	* init.c (cpp_create_reader): Adjust.
	* macro.c (collect_args): Use endarg for separator.  Always rewind
	in the not-fn case.
	gcc/testsuite/
	* c-c++-common/cpp/pr97471.c: New.
2020-10-19 08:00:41 -07:00
Nathan Sidwell d1c566d72d libcpp: Directly peek for initial line marker
Using the tokenizer to sniff for an initial line marker for
preprocessed input is a little brittle, particularly with
-fdirectives-only.  If there is no marker we'll happily munch initial
comments.  This patch directly sniffs the buffer.  This is safe
because the initial line marker was machine generated and must be
right at the beginning of the file.  Anything else is not such a line
marker.  The same is true for the initial directory marker.  For that
tokenizing the string is simplest, but at that point it's either a
regular line marker or a directory marker.  If it's a regular marker,
unwinding tokens is fine.

	libcpp/
	* internal.h (enum include_type): Rename IT_MAIN_INJECT to
	IT_PRE_MAIN.
	* init.c (cpp_read_main_file): If there is no line marker, adjust
	the initial line marker.
	(read_original_filename): Return bool, peek the buffer directly
	before trying to tokenize.
	(read_original_directory): Likewise.  Directly prod the string
	literal.
	* files.c (_cpp_stack_file): Adjust for IT_PRE_MAIN change.
2020-10-08 12:16:21 -07:00
Nathan Sidwell 6bf2ff0d52 preprocessor: Better line info for <builtin> & <command-line>
With C++ module header units it becomes important to distinguish
between macros defined in forced headers (& commandline & builtins)
from those defined in the header file being processed.  We weren't
making that easy because we treated the builtins and command-line
locations somewhat file-like, with incrementing line numbers, and
showing them as included from line 1 of the main file.  This patch does
3 things:

0) extend the idiom that 'line 0' of a file means 'the file as a whole'

1) builtins and command-line macros are shown as-if included from line zero.

2) when emitting preprocessed output we keep resetting the line number
so that re-reading that preprocessed output will get the same set of
locations for the command line etc.

For instance the new c-c++-common/cpp/line-2.c test, now emits

In file included from <command-line>:
./line-2.h:4:2: error: #error wrong
    4 | #error wrong
      |  ^~~~~
line-2.c:3:11: error: macro "bill" passed 1 arguments, but takes just 0
    3 | int bill(1);
      |           ^
In file included from <command-line>:
./line-2.h:3: note: macro "bill" defined here
    3 | #define bill() 2
      |

Before it told you about including from <command-line>:31.

the preprocessed output looks like:
...

(There's a new optimization in do_line_marker to stop each of these
line markers causing a new line map.  We can simply rewind the
location, and keep using the same line map.)

	libcpp/
	* directives.c (do_linemarker): Optimize rewinding to line zero.
	* files.c (_cpp_stack_file): Start on line zero when about to inject
	headers.
	(cpp_push_include, cpp_push_default_include): Use highest_line as
	the location.
	* include/cpplib.h (cpp_read_main_file): Add injecting parm.
	* init.c (cpp_read_main_file): Likewise, inform _cpp_stack_file.
	* internal.h (enum include_type): Add IT_MAIN_INJECT.
	gcc/c-family/
	* c-opts.c (c_common_post_options): Add 'injecting' arg to
	cpp_read_main_file.
	(c_finish_options): Add linemap_line_start calls for builtin and cmd
	maps.  Force token position to line_table's highest line.
	* c-ppoutput.c (print_line_1): Refactor, print line zero.
	(cb_define): Always increment source line.
	gcc/testsuite/
	* c-c++-common/cpp/line-2.c: New.
	* c-c++-common/cpp/line-2.h: New.
	* c-c++-common/cpp/line-3.c: New.
	* c-c++-common/cpp/line-4.c: New.
	* c-c++-common/cpp/line-4.h: New.
2020-07-07 11:40:04 -07:00
Nathan Sidwell 4623a6f2d0 preprocessor: Replace some flags with a single enum
_cpp_find_file has 3 bool arguments, at most one of which is ever set.
Ripe for replacing with a 4-state enum.  Also, this is C++, so
'typedef struct Foo Foo' is unnecessary.

	* internal.h (typedef _cpp_file): Delete, unnecessary in C++.
	(enum _cpp_find_file_kind): New.
	(_cpp_find_file): Use it, not 3 bools.
	* files.c (_cpp_find_file): Use _cpp_find_file_kind enum, not
	bools.
	(cpp_make_system_header): Break overly long line.
	(_cpp_stack_include, _cpp_fake_include)
	(_cpp_do_file_change, _cpp_compare_file_date, _cpp_has_header): Adjust.
	* init.c (cpp_read_main): Adjust _cpp_find_file call.
2020-05-20 06:23:24 -07:00
Nathan Sidwell 7cf3f604fb preprocessor: Random cleanups
This fixes a bunch of poorly formatted decls, marks some getters as
PURE, deletes some C-relevant bool hackery, and finally uses a
passed-in location rather than deducing a closely-related but not
necessarily the same location.

	* include/cpplib.h (cpp_get_otions, cpp_get_callbacks)
	(cpp_get_deps): Mark as PURE.
	* include/line-map.h (get_combined_adhoc_loc)
	(get_location_from_adhoc_loc, get_pure_location): Reformat decls.
	* internal.h (struct lexer_state): Clarify comment.
	* system.h: Remove now-unneeded bool hackery.
	* files.c (_cpp_find_file): Store LOC not highest_location.
2020-05-19 13:23:47 -07:00
Nathan Sidwell b224c3763e preprocessor: Reimplement directives only processing, support raw literals.
The existing directives-only code (a) punched a hole through the
libcpp interface and (b) didn't support raw string literals.  This
reimplements this preprocessing mode.  I added a proper callback
interface, and adjusted c-ppoutput to use it.  Sadly I cannot get rid
of the libcpp/internal.h include for unrelated reasons.

The new scanner is in lex.x, and works doing some backwards scanning
when it finds a charater of interest.  This reduces the number of
cases one has to deal with in forward scanning.  It may have different
failure mode than forward scanning on bad tokenization.

Finally, Moved some cpp tests from the c-specific dg.gcc/cpp directory
to the c-c++-common/cpp shared directory,

	libcpp/
	* directives-only.c: Delete.
	* Makefile.in (libcpp_a_OBJS, libcpp_a_SOURCES): Remove it.
	* include/cpplib.h (enum CPP_DO_task): New enum.
	(cpp_directive_only_preprocess): Declare.
	* internal.h (_cpp_dir_only_callbacks): Delete.
	(_cpp_preprocess_dir_only): Delete.
	* lex.c (do_peek_backslask, do_peek_next, do_peek_prev): New.
	(cpp_directives_only_process): New implementation.

	gcc/c-family/
	Reimplement directives only processing.
	* c-ppoutput.c (token_streamer): Ne.
	(directives_only_cb): New.  Swallow ...
	(print_lines_directives_only): ... this.
	(scan_translation_unit_directives_only): Reimplment using the
	published interface.

	gcc/testsuite/
	* gcc.dg/cpp/counter-[23].c: Move to c-c+_-common/cpp.
	* gcc.dg/cpp/dir-only-*: Likewise.
	* c-c++-common/cpp/dir-only-[78].c: New.
2020-05-08 11:13:29 -07:00
Nathan Sidwell 3d056cbfb3 preprocessor: Make __has_include a builtin macro [PR93452]
The clever hack of '#define __has_include __has_include' breaks -dD
and -fdirectives-only, because that emits definitions.  This turns
__has_include into a proper builtin macro.  Thus it's never emitted
via -dD, and because use outside of directive processing is undefined,
we can just expand it anywhere.

	PR preprocessor/93452
	* internal.h (struct spec_nodes): Drop n__has_include{,_next}.
	* directives.c (lex_macro_node): Don't check __has_include redef.
	* expr.c (eval_token): Drop __has_include eval.
	(parse_has_include): Move to ...
	* macro.c (builtin_has_include): ... here.
	(_cpp_builtin_macro_text): Eval __has_include{,_next}.
	* include/cpplib.h (enum cpp_builtin_type): Add BT_HAS_INCLUDE{,_NEXT}.
	* init.c (builtin_array): Add them.
	(cpp_init_builtins): Drop __has_include{,_next} init here ...
	* pch.c (cpp_read_state): ... and here.
	* traditional.c (enum ls): Drop has_include states ...
	(_cpp_scan_out_logical_line): ... and here.
2020-01-28 08:02:17 -08:00
Nathan Sidwell ad1a3914ae [PR 80005] Fix __has_include
__has_include is funky in that it is macro-like from the POV of #ifdef and
friends, but lexes its parenthesize argument #include-like.  We were
failing the second part of that, because we used a forwarding macro to an
internal name, and hence always lexed the argument in macro-parameter
context.  We componded that by not setting the right flag when lexing, so
it didn't even know.  Mostly users got lucky.

This reimplements the handline.
1) Remove the forwarding, but declare object-like macros that
expand to themselves.  This satisfies the #ifdef requirement

2) Correctly set angled_brackets when lexing the parameter.  This tells
the lexer (a) <...> is a header name and (b) "..." is too (not a string).

3) Remove the in__has_include lexer state, just tell find_file that that's
what's happenning, so it doesn't emit an error.

We lose the (undocumented) ability to #undef __has_include.  That may well
have been an accident of implementation.  There are no tests for it.

We gain __has_include behaviour for all users of the preprocessors -- not
just the C-family ones that defined a forwarding macro.

	libcpp/
	PR preprocessor/80005
	* include/cpplib.h (BT_HAS_ATTRIBUTE): Fix comment.
	* internal.h (struct lexer_state): Delete in__has_include field.
	(struct spec_nodes): Rename n__has_include{,_next}__ fields.
	(_cpp_defined_macro_p): New.
	(_cpp_find_file): Add has_include parm.
	* directives.c (lex_macro_node): Combine defined,
	__has_inline{,_next} checking.
	(do_ifdef, do_ifndef): Use _cpp_defined_macro_p.
	(_cpp_init_directives): Refactor.
	* expr.c (parse_defined): Use _cpp_defined_macro_p.
	(eval_token): Adjust parse_has_include calls.
	(parse_has_include): Add OP parameter.  Reimplement.
	* files.c (_cpp_find_file): Add HAS_INCLUDE parm.  Use it to
	inhibit error message.
	(_cpp_stack_include): Adjust _cpp_find_file call.
	(_cpp_fake_include, _cpp_compare_file_date): Likewise.
	(open_file_failed): Remove in__has_include check.
	(_cpp_has_header): Adjust _cpp_find_file call.
	* identifiers.c (_cpp_init_hashtable): Don't init
	__has_include{,_next} here ...
	* init.c (cpp_init_builtins): ... init them here.  Define as
	macros.
	(cpp_read_main_file): Adjust _cpp_find_file call.
	* pch.c (cpp_read_state): Adjust __has_include{,_next} access.
	* traditional.c (_cpp_scan_out_locgical_line): Likewise.

	gcc/c-family/
	PR preprocessor/80005
	* c-cppbuiltins.c (c_cpp_builtins): Don't define __has_include{,_next}.

	gcc/testsuite/
	PR preprocessor/80005
	* g++.dg/cpp1y/feat-cxx14.C: Adjust.
	* g++.dg/cpp1z/feat-cxx17.C: Adjust.
	* g++.dg/cpp2a/feat-cxx2a.C: Adjust.
	* g++.dg/cpp/pr80005.C: New.
2020-01-20 05:39:59 -08:00
Jakub Jelinek 8d9254fc8a Update copyright years.
From-SVN: r279813
2020-01-01 12:51:42 +01:00
Jakub Jelinek aa23e73b1a re PR preprocessor/92296 (internal compiler error: Segmentation fault #pragma push_macro("__LINE__"))
PR preprocessor/92296
	* internal.h (struct def_pragma_macro): Add is_builtin bitfield.
	(_cpp_restore_special_builtin): Declare.
	* init.c (_cpp_restore_special_builtin): New function.
	* directives.c (do_pragma_push_macro): For NT_BUILTIN_MACRO
	set is_builtin and don't try to grab definition.
	(cpp_pop_definition): Use _cpp_restore_special_builtin to restore
	builtin macros.

	* c-c++-common/cpp/pr92296-1.c: New test.
	* c-c++-common/cpp/pr92296-2.c: New test.

From-SVN: r277685
2019-10-31 18:38:44 +01:00
Richard Biener 68710ac7da internal.h (enum include_type): Remove trailing comma.
2019-10-02  Richard Biener  <rguenther@suse.de>

	* internal.h (enum include_type): Remove trailing comma.

From-SVN: r276443
2019-10-02 10:22:05 +00:00
Lewis Hyatt 7d112d6670 Support extended characters in C/C++ identifiers (PR c/67224)
libcpp/ChangeLog
2019-09-19  Lewis Hyatt  <lhyatt@gmail.com>

	PR c/67224
	* charset.c (_cpp_valid_utf8): New function to help lex UTF-8 tokens.
	* internal.h (_cpp_valid_utf8): Declare.
	* lex.c (forms_identifier_p): Use it to recognize UTF-8 identifiers.
	(_cpp_lex_direct): Handle UTF-8 in identifiers and CPP_OTHER tokens.
	Do all work in "default" case to avoid slowing down typical code paths.
	Also handle $ and UCN in the default case for consistency.

gcc/Changelog
2019-09-19  Lewis Hyatt  <lhyatt@gmail.com>

	PR c/67224
	* doc/cpp.texi: Document support for extended characters in
	identifiers.
	* doc/cppopts.texi: Likewise.

gcc/testsuite/ChangeLog
2019-09-19  Lewis Hyatt  <lhyatt@gmail.com>

	PR c/67224
	* c-c++-common/cpp/ucnid-2011-1-utf8.c: New test.
	* g++.dg/cpp/ucnid-1-utf8.C: New test.
	* g++.dg/cpp/ucnid-2-utf8.C: New test.
	* g++.dg/cpp/ucnid-3-utf8.C: New test.
	* g++.dg/cpp/ucnid-4-utf8.C: New test.
	* g++.dg/other/ucnid-1-utf8.C: New test.
	* gcc.dg/cpp/ucnid-1-utf8.c: New test.
	* gcc.dg/cpp/ucnid-10-utf8.c: New test.
	* gcc.dg/cpp/ucnid-11-utf8.c: New test.
	* gcc.dg/cpp/ucnid-12-utf8.c: New test.
	* gcc.dg/cpp/ucnid-13-utf8.c: New test.
	* gcc.dg/cpp/ucnid-14-utf8.c: New test.
	* gcc.dg/cpp/ucnid-15-utf8.c: New test.
	* gcc.dg/cpp/ucnid-2-utf8.c: New test.
	* gcc.dg/cpp/ucnid-3-utf8.c: New test.
	* gcc.dg/cpp/ucnid-4-utf8.c: New test.
	* gcc.dg/cpp/ucnid-6-utf8.c: New test.
	* gcc.dg/cpp/ucnid-7-utf8.c: New test.
	* gcc.dg/cpp/ucnid-9-utf8.c: New test.
	* gcc.dg/ucnid-1-utf8.c: New test.
	* gcc.dg/ucnid-10-utf8.c: New test.
	* gcc.dg/ucnid-11-utf8.c: New test.
	* gcc.dg/ucnid-12-utf8.c: New test.
	* gcc.dg/ucnid-13-utf8.c: New test.
	* gcc.dg/ucnid-14-utf8.c: New test.
	* gcc.dg/ucnid-15-utf8.c: New test.
	* gcc.dg/ucnid-16-utf8.c: New test.
	* gcc.dg/ucnid-2-utf8.c: New test.
	* gcc.dg/ucnid-3-utf8.c: New test.
	* gcc.dg/ucnid-4-utf8.c: New test.
	* gcc.dg/ucnid-5-utf8.c: New test.
	* gcc.dg/ucnid-6-utf8.c: New test.
	* gcc.dg/ucnid-7-utf8.c: New test.
	* gcc.dg/ucnid-8-utf8.c: New test.
	* gcc.dg/ucnid-9-utf8.c: New test.

From-SVN: r275979
2019-09-19 20:56:11 +01:00
Nathan Sidwell 056f95ec95 [preprocessor/91639] #includes at EOF
https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00280.html
	libcpp/
	PR preprocessor/91639
	* directives.c (do_include_common): Tell lexer we're a #include.
	* files.c (_cpp_stack_file): Lexer will have always incremented.
	* internal.h (struct cpp_context): Extend in_directive's
	semantics.
	* lex.c (_cpp_lex_direct): Increment line for final \n when lexing
	for an ISO #include.
	* line-map.c (linemap_line_start): Remember if we overflowed.

	gcc/testsuite/
	PR preprocessor/91639
	* c-c++-common/cpp/pr91639.c: New.
	* c-c++-common/cpp/pr91639-one.h: New.
	* c-c++-common/cpp/pr91639-two.h: New.

From-SVN: r275402
2019-09-05 11:23:48 +00:00
Nathan Sidwell b0d11f1ed6 [preprocessor] Include stacking
https://gcc.gnu.org/ml/gcc-patches/2019-08/msg01971.html
	* internal.h (enum include_type): Add IT_MAIN, IT_DIRECTIVE_HWM,
	IT_HEADER_HWM.
	(_cpp_stack_file): Take include_type, not a bool.
	* files.c (_cpp_find_file): Refactor to not hide an if inside a
	for conditional.
	(should_stack_file): Break apart to ...
	(is_known_idempotent_file, has_unique_contents): ... these.
	(_cpp_stack_file): Replace IMPORT boolean with include_type enum.
	Refactor to use new predicates.  Do linemap compensation here ...
	(_cpp_stack_include): ... not here.
	* init.c (cpp_read_main_file): Pass IT_MAIN to _cpp_stack_file.

From-SVN: r275034
2019-08-29 14:06:32 +00:00
Nathan Sidwell a0be978a82 [Preprocessor] small cleanups
https://gcc.gnu.org/ml/gcc-patches/2019-08/msg01904.html
	* directives-only.c (_cpp_preprocess_dir_only): Use false, not
	zero for _cpp_handle_directive call.
	* directives.c (_cpp_handle_directive): Indented is bool.
	* files.c (struct _cpp_file): Make bools 1 bit bitfields.
	* internal.h (enum include_type): Reformat and comment.
	(struct cpp_buffer): Make flags 1 bit bitfields.
	(_cpp_handle_directive): Indented is bool.

From-SVN: r274999
2019-08-28 18:43:37 +00:00
Martin Sebor 99b1c316ec PR c++/61339 - add mismatch between struct and class [-Wmismatched-tags] to non-bugs
gcc/c/ChangeLog:

	PR c++/61339
	* c-decl.c (xref_tag): Change class-key of PODs to struct and others
	to class.
	(field_decl_cmp): Same.
	* c-parser.c (c_parser_struct_or_union_specifier): Same.
	* c-tree.h: Same.
	* gimple-parser.c (c_parser_gimple_compound_statement): Same.

gcc/c-family/ChangeLog:

	PR c++/61339
	* c-opts.c (handle_deferred_opts): : Change class-key of PODs to struct
	and others to class.
	* c-pretty-print.h: Same.

gcc/cp/ChangeLog:

	PR c++/61339
	* cp-tree.h: Change class-key of PODs to struct and others to class.
	* search.c: Same.
	* semantics.c (finalize_nrv_r): Same.

gcc/lto/ChangeLog:

	PR c++/61339
	* lto-common.c (lto_splay_tree_new): : Change class-key of PODs
	to struct and others to class.
	(mentions_vars_p): Same.
	(register_resolution): Same.
	(lto_register_var_decl_in_symtab): Same.
	(lto_register_function_decl_in_symtab): Same.
	(cmp_tree): Same.
	(lto_read_decls): Same.

gcc/ChangeLog:

	PR c++/61339
	* auto-profile.c: Change class-key of PODs to struct and others
	to class.
	* basic-block.h: Same.
	* bitmap.c (bitmap_alloc): Same.
	* bitmap.h: Same.
	* builtins.c (expand_builtin_prefetch): Same.
	(expand_builtin_interclass_mathfn): Same.
	(expand_builtin_strlen): Same.
	(expand_builtin_mempcpy_args): Same.
	(expand_cmpstr): Same.
	(expand_builtin___clear_cache): Same.
	(expand_ifn_atomic_bit_test_and): Same.
	(expand_builtin_thread_pointer): Same.
	(expand_builtin_set_thread_pointer): Same.
	* caller-save.c (setup_save_areas): Same.
	(replace_reg_with_saved_mem): Same.
	(insert_restore): Same.
	(insert_save): Same.
	(add_used_regs): Same.
	* cfg.c (get_bb_copy): Same.
	(set_loop_copy): Same.
	* cfg.h: Same.
	* cfganal.h: Same.
	* cfgexpand.c (alloc_stack_frame_space): Same.
	(add_stack_var): Same.
	(add_stack_var_conflict): Same.
	(add_scope_conflicts_1): Same.
	(update_alias_info_with_stack_vars): Same.
	(expand_used_vars): Same.
	* cfghooks.c (redirect_edge_and_branch_force): Same.
	(delete_basic_block): Same.
	(split_edge): Same.
	(make_forwarder_block): Same.
	(force_nonfallthru): Same.
	(duplicate_block): Same.
	(lv_flush_pending_stmts): Same.
	* cfghooks.h: Same.
	* cfgloop.c (flow_loops_cfg_dump): Same.
	(flow_loop_nested_p): Same.
	(superloop_at_depth): Same.
	(get_loop_latch_edges): Same.
	(flow_loop_dump): Same.
	(flow_loops_dump): Same.
	(flow_loops_free): Same.
	(flow_loop_nodes_find): Same.
	(establish_preds): Same.
	(flow_loop_tree_node_add): Same.
	(flow_loop_tree_node_remove): Same.
	(flow_loops_find): Same.
	(find_subloop_latch_edge_by_profile): Same.
	(find_subloop_latch_edge_by_ivs): Same.
	(mfb_redirect_edges_in_set): Same.
	(form_subloop): Same.
	(merge_latch_edges): Same.
	(disambiguate_multiple_latches): Same.
	(disambiguate_loops_with_multiple_latches): Same.
	(flow_bb_inside_loop_p): Same.
	(glb_enum_p): Same.
	(get_loop_body_with_size): Same.
	(get_loop_body): Same.
	(fill_sons_in_loop): Same.
	(get_loop_body_in_dom_order): Same.
	(get_loop_body_in_custom_order): Same.
	(release_recorded_exits): Same.
	(get_loop_exit_edges): Same.
	(num_loop_branches): Same.
	(remove_bb_from_loops): Same.
	(find_common_loop): Same.
	(delete_loop): Same.
	(cancel_loop): Same.
	(verify_loop_structure): Same.
	(loop_preheader_edge): Same.
	(loop_exit_edge_p): Same.
	(single_exit): Same.
	(loop_exits_to_bb_p): Same.
	(loop_exits_from_bb_p): Same.
	(get_loop_location): Same.
	(record_niter_bound): Same.
	(get_estimated_loop_iterations_int): Same.
	(max_stmt_executions_int): Same.
	(likely_max_stmt_executions_int): Same.
	(get_estimated_loop_iterations): Same.
	(get_max_loop_iterations): Same.
	(get_max_loop_iterations_int): Same.
	(get_likely_max_loop_iterations): Same.
	* cfgloop.h (simple_loop_desc): Same.
	(get_loop): Same.
	(loop_depth): Same.
	(loop_outer): Same.
	(loop_iterator::next): Same.
	(loop_outermost): Same.
	* cfgloopanal.c (mark_irreducible_loops): Same.
	(num_loop_insns): Same.
	(average_num_loop_insns): Same.
	(expected_loop_iterations_unbounded): Same.
	(expected_loop_iterations): Same.
	(mark_loop_exit_edges): Same.
	(single_likely_exit): Same.
	* cfgloopmanip.c (fix_bb_placement): Same.
	(fix_bb_placements): Same.
	(remove_path): Same.
	(place_new_loop): Same.
	(add_loop): Same.
	(scale_loop_frequencies): Same.
	(scale_loop_profile): Same.
	(create_empty_if_region_on_edge): Same.
	(create_empty_loop_on_edge): Same.
	(loopify): Same.
	(unloop): Same.
	(fix_loop_placements): Same.
	(copy_loop_info): Same.
	(duplicate_loop): Same.
	(duplicate_subloops): Same.
	(loop_redirect_edge): Same.
	(can_duplicate_loop_p): Same.
	(duplicate_loop_to_header_edge): Same.
	(mfb_keep_just): Same.
	(has_preds_from_loop): Same.
	(create_preheader): Same.
	(create_preheaders): Same.
	(lv_adjust_loop_entry_edge): Same.
	(loop_version): Same.
	* cfgloopmanip.h: Same.
	* cgraph.h: Same.
	* cgraphbuild.c: Same.
	* combine.c (make_extraction): Same.
	* config/i386/i386-features.c: Same.
	* config/i386/i386-features.h: Same.
	* config/i386/i386.c (ix86_emit_outlined_ms2sysv_save): Same.
	(ix86_emit_outlined_ms2sysv_restore): Same.
	(ix86_noce_conversion_profitable_p): Same.
	(ix86_init_cost): Same.
	(ix86_simd_clone_usable): Same.
	* configure.ac: Same.
	* coretypes.h: Same.
	* data-streamer-in.c (string_for_index): Same.
	(streamer_read_indexed_string): Same.
	(streamer_read_string): Same.
	(bp_unpack_indexed_string): Same.
	(bp_unpack_string): Same.
	(streamer_read_uhwi): Same.
	(streamer_read_hwi): Same.
	(streamer_read_gcov_count): Same.
	(streamer_read_wide_int): Same.
	* data-streamer.h (streamer_write_bitpack): Same.
	(bp_unpack_value): Same.
	(streamer_write_char_stream): Same.
	(streamer_write_hwi_in_range): Same.
	(streamer_write_record_start): Same.
	* ddg.c (create_ddg_dep_from_intra_loop_link): Same.
	(add_cross_iteration_register_deps): Same.
	(build_intra_loop_deps): Same.
	* df-core.c (df_analyze): Same.
	(loop_post_order_compute): Same.
	(loop_inverted_post_order_compute): Same.
	* df-problems.c (df_rd_alloc): Same.
	(df_rd_simulate_one_insn): Same.
	(df_rd_local_compute): Same.
	(df_rd_init_solution): Same.
	(df_rd_confluence_n): Same.
	(df_rd_transfer_function): Same.
	(df_rd_free): Same.
	(df_rd_dump_defs_set): Same.
	(df_rd_top_dump): Same.
	(df_lr_alloc): Same.
	(df_lr_reset): Same.
	(df_lr_local_compute): Same.
	(df_lr_init): Same.
	(df_lr_confluence_n): Same.
	(df_lr_free): Same.
	(df_lr_top_dump): Same.
	(df_lr_verify_transfer_functions): Same.
	(df_live_alloc): Same.
	(df_live_reset): Same.
	(df_live_init): Same.
	(df_live_confluence_n): Same.
	(df_live_finalize): Same.
	(df_live_free): Same.
	(df_live_top_dump): Same.
	(df_live_verify_transfer_functions): Same.
	(df_mir_alloc): Same.
	(df_mir_reset): Same.
	(df_mir_init): Same.
	(df_mir_confluence_n): Same.
	(df_mir_free): Same.
	(df_mir_top_dump): Same.
	(df_word_lr_alloc): Same.
	(df_word_lr_reset): Same.
	(df_word_lr_init): Same.
	(df_word_lr_confluence_n): Same.
	(df_word_lr_free): Same.
	(df_word_lr_top_dump): Same.
	(df_md_alloc): Same.
	(df_md_simulate_one_insn): Same.
	(df_md_reset): Same.
	(df_md_init): Same.
	(df_md_free): Same.
	(df_md_top_dump): Same.
	* df-scan.c (df_insn_delete): Same.
	(df_insn_rescan): Same.
	(df_notes_rescan): Same.
	(df_sort_and_compress_mws): Same.
	(df_install_mws): Same.
	(df_refs_add_to_chains): Same.
	(df_ref_create_structure): Same.
	(df_ref_record): Same.
	(df_def_record_1): Same.
	(df_find_hard_reg_defs): Same.
	(df_uses_record): Same.
	(df_get_conditional_uses): Same.
	(df_get_call_refs): Same.
	(df_recompute_luids): Same.
	(df_get_entry_block_def_set): Same.
	(df_entry_block_defs_collect): Same.
	(df_get_exit_block_use_set): Same.
	(df_exit_block_uses_collect): Same.
	(df_mws_verify): Same.
	(df_bb_verify): Same.
	* df.h (df_scan_get_bb_info): Same.
	* doc/tm.texi: Same.
	* dse.c (record_store): Same.
	* dumpfile.h: Same.
	* emit-rtl.c (const_fixed_hasher::equal): Same.
	(set_mem_attributes_minus_bitpos): Same.
	(change_address): Same.
	(adjust_address_1): Same.
	(offset_address): Same.
	* emit-rtl.h: Same.
	* except.c (dw2_build_landing_pads): Same.
	(sjlj_emit_dispatch_table): Same.
	* explow.c (allocate_dynamic_stack_space): Same.
	(emit_stack_probe): Same.
	(probe_stack_range): Same.
	* expmed.c (store_bit_field_using_insv): Same.
	(store_bit_field_1): Same.
	(store_integral_bit_field): Same.
	(extract_bit_field_using_extv): Same.
	(extract_bit_field_1): Same.
	(emit_cstore): Same.
	* expr.c (emit_block_move_via_cpymem): Same.
	(expand_cmpstrn_or_cmpmem): Same.
	(set_storage_via_setmem): Same.
	(emit_single_push_insn_1): Same.
	(expand_assignment): Same.
	(store_constructor): Same.
	(expand_expr_real_2): Same.
	(expand_expr_real_1): Same.
	(try_casesi): Same.
	* flags.h: Same.
	* function.c (try_fit_stack_local): Same.
	(assign_stack_local_1): Same.
	(assign_stack_local): Same.
	(cut_slot_from_list): Same.
	(insert_slot_to_list): Same.
	(max_slot_level): Same.
	(move_slot_to_level): Same.
	(temp_address_hasher::equal): Same.
	(remove_unused_temp_slot_addresses): Same.
	(assign_temp): Same.
	(combine_temp_slots): Same.
	(update_temp_slot_address): Same.
	(preserve_temp_slots): Same.
	* function.h: Same.
	* fwprop.c: Same.
	* gcc-rich-location.h: Same.
	* gcov.c: Same.
	* genattrtab.c (check_attr_test): Same.
	(check_attr_value): Same.
	(convert_set_attr_alternative): Same.
	(convert_set_attr): Same.
	(check_defs): Same.
	(copy_boolean): Same.
	(get_attr_value): Same.
	(expand_delays): Same.
	(make_length_attrs): Same.
	(min_fn): Same.
	(make_alternative_compare): Same.
	(simplify_test_exp): Same.
	(tests_attr_p): Same.
	(get_attr_order): Same.
	(clear_struct_flag): Same.
	(gen_attr): Same.
	(compares_alternatives_p): Same.
	(gen_insn): Same.
	(gen_delay): Same.
	(find_attrs_to_cache): Same.
	(write_test_expr): Same.
	(walk_attr_value): Same.
	(write_attr_get): Same.
	(eliminate_known_true): Same.
	(write_insn_cases): Same.
	(write_attr_case): Same.
	(write_attr_valueq): Same.
	(write_attr_value): Same.
	(write_dummy_eligible_delay): Same.
	(next_comma_elt): Same.
	(find_attr): Same.
	(make_internal_attr): Same.
	(copy_rtx_unchanging): Same.
	(gen_insn_reserv): Same.
	(check_tune_attr): Same.
	(make_automaton_attrs): Same.
	(handle_arg): Same.
	* genextract.c (gen_insn): Same.
	(VEC_char_to_string): Same.
	* genmatch.c (print_operand): Same.
	(lower): Same.
	(parser::parse_operation): Same.
	(parser::parse_capture): Same.
	(parser::parse_c_expr): Same.
	(parser::parse_simplify): Same.
	(main): Same.
	* genoutput.c (output_operand_data): Same.
	(output_get_insn_name): Same.
	(compare_operands): Same.
	(place_operands): Same.
	(process_template): Same.
	(validate_insn_alternatives): Same.
	(validate_insn_operands): Same.
	(gen_expand): Same.
	(note_constraint): Same.
	* genpreds.c (write_one_predicate_function): Same.
	(add_constraint): Same.
	(process_define_register_constraint): Same.
	(write_lookup_constraint_1): Same.
	(write_lookup_constraint_array): Same.
	(write_insn_constraint_len): Same.
	(write_reg_class_for_constraint_1): Same.
	(write_constraint_satisfied_p_array): Same.
	* genrecog.c (optimize_subroutine_group): Same.
	* gensupport.c (process_define_predicate): Same.
	(queue_pattern): Same.
	(remove_from_queue): Same.
	(process_rtx): Same.
	(is_predicable): Same.
	(change_subst_attribute): Same.
	(subst_pattern_match): Same.
	(alter_constraints): Same.
	(alter_attrs_for_insn): Same.
	(shift_output_template): Same.
	(alter_output_for_subst_insn): Same.
	(process_one_cond_exec): Same.
	(subst_dup): Same.
	(process_define_cond_exec): Same.
	(mnemonic_htab_callback): Same.
	(gen_mnemonic_attr): Same.
	(read_md_rtx): Same.
	* ggc-page.c: Same.
	* gimple-loop-interchange.cc (dump_reduction): Same.
	(dump_induction): Same.
	(loop_cand::~loop_cand): Same.
	(free_data_refs_with_aux): Same.
	(tree_loop_interchange::interchange_loops): Same.
	(tree_loop_interchange::map_inductions_to_loop): Same.
	(tree_loop_interchange::move_code_to_inner_loop): Same.
	(compute_access_stride): Same.
	(compute_access_strides): Same.
	(proper_loop_form_for_interchange): Same.
	(tree_loop_interchange_compute_ddrs): Same.
	(prune_datarefs_not_in_loop): Same.
	(prepare_data_references): Same.
	(pass_linterchange::execute): Same.
	* gimple-loop-jam.c (bb_prevents_fusion_p): Same.
	(unroll_jam_possible_p): Same.
	(fuse_loops): Same.
	(adjust_unroll_factor): Same.
	(tree_loop_unroll_and_jam): Same.
	* gimple-loop-versioning.cc (loop_versioning::~loop_versioning): Same.
	(loop_versioning::expensive_stmt_p): Same.
	(loop_versioning::version_for_unity): Same.
	(loop_versioning::dump_inner_likelihood): Same.
	(loop_versioning::find_per_loop_multiplication): Same.
	(loop_versioning::analyze_term_using_scevs): Same.
	(loop_versioning::record_address_fragment): Same.
	(loop_versioning::analyze_expr): Same.
	(loop_versioning::analyze_blocks): Same.
	(loop_versioning::prune_conditions): Same.
	(loop_versioning::merge_loop_info): Same.
	(loop_versioning::add_loop_to_queue): Same.
	(loop_versioning::decide_whether_loop_is_versionable): Same.
	(loop_versioning::make_versioning_decisions): Same.
	(loop_versioning::implement_versioning_decisions): Same.
	* gimple-ssa-evrp-analyze.c
	(evrp_range_analyzer::record_ranges_from_phis): Same.
	* gimple-ssa-store-merging.c (split_store::split_store): Same.
	(count_multiple_uses): Same.
	(split_group): Same.
	(imm_store_chain_info::output_merged_store): Same.
	(pass_store_merging::process_store): Same.
	* gimple-ssa-strength-reduction.c (slsr_process_phi): Same.
	* gimple-ssa-warn-alloca.c (adjusted_warn_limit): Same.
	(is_max): Same.
	(alloca_call_type): Same.
	(pass_walloca::execute): Same.
	* gimple-streamer-in.c (input_phi): Same.
	(input_gimple_stmt): Same.
	* gimple-streamer.h: Same.
	* godump.c (go_force_record_alignment): Same.
	(go_format_type): Same.
	(go_output_type): Same.
	(go_output_fndecl): Same.
	(go_output_typedef): Same.
	(keyword_hash_init): Same.
	(find_dummy_types): Same.
	* graph.c (draw_cfg_nodes_no_loops): Same.
	(draw_cfg_nodes_for_loop): Same.
	* hard-reg-set.h (hard_reg_set_iter_next): Same.
	* hsa-brig.c: Same.
	* hsa-common.h (hsa_internal_fn_hasher::equal): Same.
	* hsa-dump.c (dump_hsa_cfun): Same.
	* hsa-gen.c (gen_function_def_parameters): Same.
	* hsa-regalloc.c (dump_hsa_cfun_regalloc): Same.
	* input.c (dump_line_table_statistics): Same.
	(test_lexer): Same.
	* input.h: Same.
	* internal-fn.c (get_multi_vector_move): Same.
	(expand_load_lanes_optab_fn): Same.
	(expand_GOMP_SIMT_ENTER_ALLOC): Same.
	(expand_GOMP_SIMT_EXIT): Same.
	(expand_GOMP_SIMT_LAST_LANE): Same.
	(expand_GOMP_SIMT_ORDERED_PRED): Same.
	(expand_GOMP_SIMT_VOTE_ANY): Same.
	(expand_GOMP_SIMT_XCHG_BFLY): Same.
	(expand_GOMP_SIMT_XCHG_IDX): Same.
	(expand_addsub_overflow): Same.
	(expand_neg_overflow): Same.
	(expand_mul_overflow): Same.
	(expand_call_mem_ref): Same.
	(expand_mask_load_optab_fn): Same.
	(expand_scatter_store_optab_fn): Same.
	(expand_gather_load_optab_fn): Same.
	* ipa-cp.c (ipa_get_parm_lattices): Same.
	(print_all_lattices): Same.
	(ignore_edge_p): Same.
	(build_toporder_info): Same.
	(free_toporder_info): Same.
	(push_node_to_stack): Same.
	(ipcp_lattice<valtype>::set_contains_variable): Same.
	(set_agg_lats_to_bottom): Same.
	(ipcp_bits_lattice::meet_with): Same.
	(set_single_call_flag): Same.
	(initialize_node_lattices): Same.
	(ipa_get_jf_ancestor_result): Same.
	(ipcp_verify_propagated_values): Same.
	(propagate_scalar_across_jump_function): Same.
	(propagate_context_across_jump_function): Same.
	(propagate_bits_across_jump_function): Same.
	(ipa_vr_operation_and_type_effects): Same.
	(propagate_vr_across_jump_function): Same.
	(set_check_aggs_by_ref): Same.
	(set_chain_of_aglats_contains_variable): Same.
	(merge_aggregate_lattices): Same.
	(agg_pass_through_permissible_p): Same.
	(propagate_aggs_across_jump_function): Same.
	(call_passes_through_thunk_p): Same.
	(propagate_constants_across_call): Same.
	(devirtualization_time_bonus): Same.
	(good_cloning_opportunity_p): Same.
	(context_independent_aggregate_values): Same.
	(gather_context_independent_values): Same.
	(perform_estimation_of_a_value): Same.
	(estimate_local_effects): Same.
	(value_topo_info<valtype>::add_val): Same.
	(add_all_node_vals_to_toposort): Same.
	(value_topo_info<valtype>::propagate_effects): Same.
	(ipcp_propagate_stage): Same.
	(ipcp_discover_new_direct_edges): Same.
	(same_node_or_its_all_contexts_clone_p): Same.
	(cgraph_edge_brings_value_p): Same.
	(gather_edges_for_value): Same.
	(create_specialized_node): Same.
	(find_more_scalar_values_for_callers_subset): Same.
	(find_more_contexts_for_caller_subset): Same.
	(copy_plats_to_inter): Same.
	(intersect_aggregates_with_edge): Same.
	(find_aggregate_values_for_callers_subset): Same.
	(cgraph_edge_brings_all_agg_vals_for_node): Same.
	(decide_about_value): Same.
	(decide_whether_version_node): Same.
	(spread_undeadness): Same.
	(identify_dead_nodes): Same.
	(ipcp_store_vr_results): Same.
	* ipa-devirt.c (final_warning_record::grow_type_warnings): Same.
	* ipa-fnsummary.c (ipa_fn_summary::account_size_time): Same.
	(redirect_to_unreachable): Same.
	(edge_set_predicate): Same.
	(evaluate_conditions_for_known_args): Same.
	(evaluate_properties_for_edge): Same.
	(ipa_fn_summary_t::duplicate): Same.
	(ipa_call_summary_t::duplicate): Same.
	(dump_ipa_call_summary): Same.
	(ipa_dump_fn_summary): Same.
	(eliminated_by_inlining_prob): Same.
	(set_cond_stmt_execution_predicate): Same.
	(set_switch_stmt_execution_predicate): Same.
	(compute_bb_predicates): Same.
	(will_be_nonconstant_expr_predicate): Same.
	(phi_result_unknown_predicate): Same.
	(analyze_function_body): Same.
	(compute_fn_summary): Same.
	(estimate_edge_devirt_benefit): Same.
	(estimate_edge_size_and_time): Same.
	(estimate_calls_size_and_time): Same.
	(estimate_node_size_and_time): Same.
	(remap_edge_change_prob): Same.
	(remap_edge_summaries): Same.
	(ipa_merge_fn_summary_after_inlining): Same.
	(ipa_fn_summary_generate): Same.
	(inline_read_section): Same.
	(ipa_fn_summary_read): Same.
	(ipa_fn_summary_write): Same.
	* ipa-fnsummary.h: Same.
	* ipa-hsa.c (ipa_hsa_read_section): Same.
	* ipa-icf-gimple.c (func_checker::compare_loops): Same.
	* ipa-icf.c (sem_function::param_used_p): Same.
	* ipa-inline-analysis.c (do_estimate_edge_time): Same.
	* ipa-inline.c (edge_badness): Same.
	(inline_small_functions): Same.
	* ipa-polymorphic-call.c
	(ipa_polymorphic_call_context::stream_out): Same.
	* ipa-predicate.c (predicate::remap_after_duplication): Same.
	(predicate::remap_after_inlining): Same.
	(predicate::stream_out): Same.
	* ipa-predicate.h: Same.
	* ipa-profile.c (ipa_profile_read_summary): Same.
	* ipa-prop.c (ipa_get_param_decl_index_1): Same.
	(count_formal_params): Same.
	(ipa_dump_param): Same.
	(ipa_alloc_node_params): Same.
	(ipa_print_node_jump_functions_for_edge): Same.
	(ipa_print_node_jump_functions): Same.
	(ipa_load_from_parm_agg): Same.
	(get_ancestor_addr_info): Same.
	(ipa_compute_jump_functions_for_edge): Same.
	(ipa_analyze_virtual_call_uses): Same.
	(ipa_analyze_stmt_uses): Same.
	(ipa_analyze_params_uses_in_bb): Same.
	(update_jump_functions_after_inlining): Same.
	(try_decrement_rdesc_refcount): Same.
	(ipa_impossible_devirt_target): Same.
	(update_indirect_edges_after_inlining): Same.
	(combine_controlled_uses_counters): Same.
	(ipa_edge_args_sum_t::duplicate): Same.
	(ipa_write_jump_function): Same.
	(ipa_write_indirect_edge_info): Same.
	(ipa_write_node_info): Same.
	(ipa_read_edge_info): Same.
	(ipa_prop_read_section): Same.
	(read_replacements_section): Same.
	* ipa-prop.h (ipa_get_param_count): Same.
	(ipa_get_param): Same.
	(ipa_get_type): Same.
	(ipa_get_param_move_cost): Same.
	(ipa_set_param_used): Same.
	(ipa_get_controlled_uses): Same.
	(ipa_set_controlled_uses): Same.
	(ipa_get_cs_argument_count): Same.
	* ipa-pure-const.c (analyze_function): Same.
	(pure_const_read_summary): Same.
	* ipa-ref.h: Same.
	* ipa-reference.c (ipa_reference_read_optimization_summary): Same.
	* ipa-split.c (test_nonssa_use): Same.
	(dump_split_point): Same.
	(dominated_by_forbidden): Same.
	(split_part_set_ssa_name_p): Same.
	(find_split_points): Same.
	* ira-build.c (finish_loop_tree_nodes): Same.
	(low_pressure_loop_node_p): Same.
	* ira-color.c (ira_reuse_stack_slot): Same.
	* ira-int.h: Same.
	* ira.c (setup_reg_equiv): Same.
	(print_insn_chain): Same.
	(ira): Same.
	* loop-doloop.c (doloop_condition_get): Same.
	(add_test): Same.
	(record_reg_sets): Same.
	(doloop_optimize): Same.
	* loop-init.c (loop_optimizer_init): Same.
	(fix_loop_structure): Same.
	* loop-invariant.c (merge_identical_invariants): Same.
	(compute_always_reached): Same.
	(find_exits): Same.
	(may_assign_reg_p): Same.
	(find_invariants_bb): Same.
	(find_invariants_body): Same.
	(replace_uses): Same.
	(can_move_invariant_reg): Same.
	(free_inv_motion_data): Same.
	(move_single_loop_invariants): Same.
	(change_pressure): Same.
	(mark_ref_regs): Same.
	(calculate_loop_reg_pressure): Same.
	* loop-iv.c (biv_entry_hasher::equal): Same.
	(iv_extend_to_rtx_code): Same.
	(check_iv_ref_table_size): Same.
	(clear_iv_info): Same.
	(latch_dominating_def): Same.
	(iv_get_reaching_def): Same.
	(iv_constant): Same.
	(iv_subreg): Same.
	(iv_extend): Same.
	(iv_neg): Same.
	(iv_add): Same.
	(iv_mult): Same.
	(get_biv_step): Same.
	(record_iv): Same.
	(analyzed_for_bivness_p): Same.
	(record_biv): Same.
	(iv_analyze_biv): Same.
	(iv_analyze_expr): Same.
	(iv_analyze_def): Same.
	(iv_analyze_op): Same.
	(iv_analyze): Same.
	(iv_analyze_result): Same.
	(biv_p): Same.
	(eliminate_implied_conditions): Same.
	(simplify_using_initial_values): Same.
	(shorten_into_mode): Same.
	(canonicalize_iv_subregs): Same.
	(determine_max_iter): Same.
	(check_simple_exit): Same.
	(find_simple_exit): Same.
	(get_simple_loop_desc): Same.
	* loop-unroll.c (report_unroll): Same.
	(decide_unrolling): Same.
	(unroll_loops): Same.
	(loop_exit_at_end_p): Same.
	(decide_unroll_constant_iterations): Same.
	(unroll_loop_constant_iterations): Same.
	(compare_and_jump_seq): Same.
	(unroll_loop_runtime_iterations): Same.
	(decide_unroll_stupid): Same.
	(unroll_loop_stupid): Same.
	(referenced_in_one_insn_in_loop_p): Same.
	(reset_debug_uses_in_loop): Same.
	(analyze_iv_to_split_insn): Same.
	* lra-eliminations.c (lra_debug_elim_table): Same.
	(setup_can_eliminate): Same.
	(form_sum): Same.
	(lra_get_elimination_hard_regno): Same.
	(lra_eliminate_regs_1): Same.
	(eliminate_regs_in_insn): Same.
	(update_reg_eliminate): Same.
	(init_elimination): Same.
	(lra_eliminate): Same.
	* lra-int.h: Same.
	* lra-lives.c (initiate_live_solver): Same.
	* lra-remat.c (create_remat_bb_data): Same.
	* lra-spills.c (lra_spill): Same.
	* lra.c (lra_set_insn_recog_data): Same.
	(lra_set_used_insn_alternative_by_uid): Same.
	(init_reg_info): Same.
	(expand_reg_info): Same.
	* lto-cgraph.c (output_symtab): Same.
	(read_identifier): Same.
	(get_alias_symbol): Same.
	(input_node): Same.
	(input_varpool_node): Same.
	(input_ref): Same.
	(input_edge): Same.
	(input_cgraph_1): Same.
	(input_refs): Same.
	(input_symtab): Same.
	(input_offload_tables): Same.
	(output_cgraph_opt_summary): Same.
	(input_edge_opt_summary): Same.
	(input_cgraph_opt_section): Same.
	* lto-section-in.c (lto_free_raw_section_data): Same.
	(lto_create_simple_input_block): Same.
	(lto_free_function_in_decl_state_for_node): Same.
	* lto-streamer-in.c (lto_tag_check_set): Same.
	(lto_location_cache::revert_location_cache): Same.
	(lto_location_cache::input_location): Same.
	(lto_input_location): Same.
	(stream_input_location_now): Same.
	(lto_input_tree_ref): Same.
	(lto_input_eh_catch_list): Same.
	(input_eh_region): Same.
	(lto_init_eh): Same.
	(make_new_block): Same.
	(input_cfg): Same.
	(fixup_call_stmt_edges): Same.
	(input_struct_function_base): Same.
	(input_function): Same.
	(lto_read_body_or_constructor): Same.
	(lto_read_tree_1): Same.
	(lto_read_tree): Same.
	(lto_input_scc): Same.
	(lto_input_tree_1): Same.
	(lto_input_toplevel_asms): Same.
	(lto_input_mode_table): Same.
	(lto_reader_init): Same.
	(lto_data_in_create): Same.
	* lto-streamer-out.c (output_cfg): Same.
	* lto-streamer.h: Same.
	* modulo-sched.c (duplicate_insns_of_cycles): Same.
	(generate_prolog_epilog): Same.
	(mark_loop_unsched): Same.
	(dump_insn_location): Same.
	(loop_canon_p): Same.
	(sms_schedule): Same.
	* omp-expand.c (expand_omp_for_ordered_loops): Same.
	(expand_omp_for_generic): Same.
	(expand_omp_for_static_nochunk): Same.
	(expand_omp_for_static_chunk): Same.
	(expand_omp_simd): Same.
	(expand_omp_taskloop_for_inner): Same.
	(expand_oacc_for): Same.
	(expand_omp_atomic_pipeline): Same.
	(mark_loops_in_oacc_kernels_region): Same.
	* omp-offload.c (oacc_xform_loop): Same.
	* omp-simd-clone.c (simd_clone_adjust): Same.
	* optabs-query.c (get_traditional_extraction_insn): Same.
	* optabs.c (expand_vector_broadcast): Same.
	(expand_binop_directly): Same.
	(expand_twoval_unop): Same.
	(expand_twoval_binop): Same.
	(expand_unop_direct): Same.
	(emit_indirect_jump): Same.
	(emit_conditional_move): Same.
	(emit_conditional_neg_or_complement): Same.
	(emit_conditional_add): Same.
	(vector_compare_rtx): Same.
	(expand_vec_perm_1): Same.
	(expand_vec_perm_const): Same.
	(expand_vec_cond_expr): Same.
	(expand_vec_series_expr): Same.
	(maybe_emit_atomic_exchange): Same.
	(maybe_emit_sync_lock_test_and_set): Same.
	(expand_atomic_compare_and_swap): Same.
	(expand_atomic_load): Same.
	(expand_atomic_store): Same.
	(maybe_emit_op): Same.
	(valid_multiword_target_p): Same.
	(create_integer_operand): Same.
	(maybe_legitimize_operand_same_code): Same.
	(maybe_legitimize_operand): Same.
	(create_convert_operand_from_type): Same.
	(can_reuse_operands_p): Same.
	(maybe_legitimize_operands): Same.
	(maybe_gen_insn): Same.
	(maybe_expand_insn): Same.
	(maybe_expand_jump_insn): Same.
	(expand_insn): Same.
	* optabs.h (create_expand_operand): Same.
	(create_fixed_operand): Same.
	(create_output_operand): Same.
	(create_input_operand): Same.
	(create_convert_operand_to): Same.
	(create_convert_operand_from): Same.
	* optinfo.h: Same.
	* poly-int.h: Same.
	* predict.c (optimize_insn_for_speed_p): Same.
	(optimize_loop_for_size_p): Same.
	(optimize_loop_for_speed_p): Same.
	(optimize_loop_nest_for_speed_p): Same.
	(get_base_value): Same.
	(predicted_by_loop_heuristics_p): Same.
	(predict_extra_loop_exits): Same.
	(predict_loops): Same.
	(predict_paths_for_bb): Same.
	(predict_paths_leading_to): Same.
	(propagate_freq): Same.
	(pass_profile::execute): Same.
	* predict.h: Same.
	* profile-count.c (profile_count::differs_from_p): Same.
	(profile_probability::differs_lot_from_p): Same.
	* profile-count.h: Same.
	* profile.c (branch_prob): Same.
	* regrename.c (free_chain_data): Same.
	(mark_conflict): Same.
	(create_new_chain): Same.
	(merge_overlapping_regs): Same.
	(init_rename_info): Same.
	(merge_chains): Same.
	(regrename_analyze): Same.
	(regrename_do_replace): Same.
	(scan_rtx_reg): Same.
	(record_out_operands): Same.
	(build_def_use): Same.
	* regrename.h: Same.
	* reload.h: Same.
	* reload1.c (init_reload): Same.
	(maybe_fix_stack_asms): Same.
	(copy_reloads): Same.
	(count_pseudo): Same.
	(count_spilled_pseudo): Same.
	(find_reg): Same.
	(find_reload_regs): Same.
	(select_reload_regs): Same.
	(spill_hard_reg): Same.
	(fixup_eh_region_note): Same.
	(set_reload_reg): Same.
	(allocate_reload_reg): Same.
	(compute_reload_subreg_offset): Same.
	(reload_adjust_reg_for_icode): Same.
	(emit_input_reload_insns): Same.
	(emit_output_reload_insns): Same.
	(do_input_reload): Same.
	(inherit_piecemeal_p): Same.
	* rtl.h: Same.
	* sanopt.c (maybe_get_dominating_check): Same.
	(maybe_optimize_ubsan_ptr_ifn): Same.
	(can_remove_asan_check): Same.
	(maybe_optimize_asan_check_ifn): Same.
	(sanopt_optimize_walker): Same.
	* sched-deps.c (add_dependence_list): Same.
	(chain_to_prev_insn): Same.
	(add_insn_mem_dependence): Same.
	(create_insn_reg_set): Same.
	(maybe_extend_reg_info_p): Same.
	(sched_analyze_reg): Same.
	(sched_analyze_1): Same.
	(get_implicit_reg_pending_clobbers): Same.
	(chain_to_prev_insn_p): Same.
	(deps_analyze_insn): Same.
	(deps_start_bb): Same.
	(sched_free_deps): Same.
	(init_deps): Same.
	(init_deps_reg_last): Same.
	(free_deps): Same.
	* sched-ebb.c: Same.
	* sched-int.h: Same.
	* sched-rgn.c (add_branch_dependences): Same.
	(concat_insn_mem_list): Same.
	(deps_join): Same.
	(sched_rgn_compute_dependencies): Same.
	* sel-sched-ir.c (reset_target_context): Same.
	(copy_deps_context): Same.
	(init_id_from_df): Same.
	(has_dependence_p): Same.
	(change_loops_latches): Same.
	(bb_top_order_comparator): Same.
	(make_region_from_loop_preheader): Same.
	(sel_init_pipelining): Same.
	(get_loop_nest_for_rgn): Same.
	(make_regions_from_the_rest): Same.
	(sel_is_loop_preheader_p): Same.
	* sel-sched-ir.h (inner_loop_header_p): Same.
	(get_all_loop_exits): Same.
	* selftest.h: Same.
	* sese.c (sese_build_liveouts): Same.
	(sese_insert_phis_for_liveouts): Same.
	* sese.h (defined_in_sese_p): Same.
	* sreal.c (sreal::stream_out): Same.
	* sreal.h: Same.
	* streamer-hooks.h: Same.
	* target-globals.c (save_target_globals): Same.
	* target-globals.h: Same.
	* target.def: Same.
	* target.h: Same.
	* targhooks.c (default_has_ifunc_p): Same.
	(default_empty_mask_is_expensive): Same.
	(default_init_cost): Same.
	* targhooks.h: Same.
	* toplev.c: Same.
	* tree-affine.c (aff_combination_mult): Same.
	(aff_combination_expand): Same.
	(aff_combination_constant_multiple_p): Same.
	* tree-affine.h: Same.
	* tree-cfg.c (build_gimple_cfg): Same.
	(replace_loop_annotate_in_block): Same.
	(replace_uses_by): Same.
	(remove_bb): Same.
	(dump_cfg_stats): Same.
	(gimple_duplicate_sese_region): Same.
	(gimple_duplicate_sese_tail): Same.
	(move_block_to_fn): Same.
	(replace_block_vars_by_duplicates): Same.
	(move_sese_region_to_fn): Same.
	(print_loops_bb): Same.
	(print_loop): Same.
	(print_loops): Same.
	(debug): Same.
	(debug_loops): Same.
	* tree-cfg.h: Same.
	* tree-chrec.c (chrec_fold_plus_poly_poly): Same.
	(chrec_fold_multiply_poly_poly): Same.
	(chrec_evaluate): Same.
	(chrec_component_in_loop_num): Same.
	(reset_evolution_in_loop): Same.
	(is_multivariate_chrec): Same.
	(chrec_contains_symbols): Same.
	(nb_vars_in_chrec): Same.
	(chrec_convert_1): Same.
	(chrec_convert_aggressive): Same.
	* tree-chrec.h: Same.
	* tree-core.h: Same.
	* tree-data-ref.c (dump_data_dependence_relation): Same.
	(canonicalize_base_object_address): Same.
	(data_ref_compare_tree): Same.
	(prune_runtime_alias_test_list): Same.
	(get_segment_min_max): Same.
	(create_intersect_range_checks): Same.
	(conflict_fn_no_dependence): Same.
	(object_address_invariant_in_loop_p): Same.
	(analyze_ziv_subscript): Same.
	(analyze_siv_subscript_cst_affine): Same.
	(analyze_miv_subscript): Same.
	(analyze_overlapping_iterations): Same.
	(build_classic_dist_vector_1): Same.
	(add_other_self_distances): Same.
	(same_access_functions): Same.
	(build_classic_dir_vector): Same.
	(subscript_dependence_tester_1): Same.
	(subscript_dependence_tester): Same.
	(access_functions_are_affine_or_constant_p): Same.
	(get_references_in_stmt): Same.
	(loop_nest_has_data_refs): Same.
	(graphite_find_data_references_in_stmt): Same.
	(find_data_references_in_bb): Same.
	(get_base_for_alignment): Same.
	(find_loop_nest_1): Same.
	(find_loop_nest): Same.
	* tree-data-ref.h (dr_alignment): Same.
	(ddr_dependence_level): Same.
	* tree-if-conv.c (fold_build_cond_expr): Same.
	(add_to_predicate_list): Same.
	(add_to_dst_predicate_list): Same.
	(phi_convertible_by_degenerating_args): Same.
	(idx_within_array_bound): Same.
	(all_preds_critical_p): Same.
	(pred_blocks_visited_p): Same.
	(predicate_bbs): Same.
	(build_region): Same.
	(if_convertible_loop_p_1): Same.
	(is_cond_scalar_reduction): Same.
	(predicate_scalar_phi): Same.
	(remove_conditions_and_labels): Same.
	(combine_blocks): Same.
	(version_loop_for_if_conversion): Same.
	(versionable_outer_loop_p): Same.
	(ifcvt_local_dce): Same.
	(tree_if_conversion): Same.
	(pass_if_conversion::gate): Same.
	* tree-if-conv.h: Same.
	* tree-inline.c (maybe_move_debug_stmts_to_successors): Same.
	* tree-loop-distribution.c (bb_top_order_cmp): Same.
	(free_rdg): Same.
	(stmt_has_scalar_dependences_outside_loop): Same.
	(copy_loop_before): Same.
	(create_bb_after_loop): Same.
	(const_with_all_bytes_same): Same.
	(generate_memset_builtin): Same.
	(generate_memcpy_builtin): Same.
	(destroy_loop): Same.
	(build_rdg_partition_for_vertex): Same.
	(compute_access_range): Same.
	(data_ref_segment_size): Same.
	(latch_dominated_by_data_ref): Same.
	(compute_alias_check_pairs): Same.
	(fuse_memset_builtins): Same.
	(finalize_partitions): Same.
	(find_seed_stmts_for_distribution): Same.
	(prepare_perfect_loop_nest): Same.
	* tree-parloops.c (lambda_transform_legal_p): Same.
	(loop_parallel_p): Same.
	(reduc_stmt_res): Same.
	(add_field_for_name): Same.
	(create_call_for_reduction_1): Same.
	(replace_uses_in_bb_by): Same.
	(transform_to_exit_first_loop_alt): Same.
	(try_transform_to_exit_first_loop_alt): Same.
	(transform_to_exit_first_loop): Same.
	(num_phis): Same.
	(gen_parallel_loop): Same.
	(gather_scalar_reductions): Same.
	(get_omp_data_i_param): Same.
	(try_create_reduction_list): Same.
	(oacc_entry_exit_single_gang): Same.
	(parallelize_loops): Same.
	* tree-pass.h: Same.
	* tree-predcom.c (determine_offset): Same.
	(last_always_executed_block): Same.
	(split_data_refs_to_components): Same.
	(suitable_component_p): Same.
	(valid_initializer_p): Same.
	(find_looparound_phi): Same.
	(insert_looparound_copy): Same.
	(add_looparound_copies): Same.
	(determine_roots_comp): Same.
	(predcom_tmp_var): Same.
	(initialize_root_vars): Same.
	(initialize_root_vars_store_elim_1): Same.
	(initialize_root_vars_store_elim_2): Same.
	(finalize_eliminated_stores): Same.
	(initialize_root_vars_lm): Same.
	(remove_stmt): Same.
	(determine_unroll_factor): Same.
	(execute_pred_commoning_cbck): Same.
	(base_names_in_chain_on): Same.
	(combine_chains): Same.
	(pcom_stmt_dominates_stmt_p): Same.
	(try_combine_chains): Same.
	(prepare_initializers_chain_store_elim): Same.
	(prepare_initializers_chain): Same.
	(prepare_initializers): Same.
	(prepare_finalizers_chain): Same.
	(prepare_finalizers): Same.
	(insert_init_seqs): Same.
	* tree-scalar-evolution.c (loop_phi_node_p): Same.
	(compute_overall_effect_of_inner_loop): Same.
	(add_to_evolution_1): Same.
	(add_to_evolution): Same.
	(follow_ssa_edge_binary): Same.
	(follow_ssa_edge_expr): Same.
	(backedge_phi_arg_p): Same.
	(follow_ssa_edge_in_condition_phi_branch): Same.
	(follow_ssa_edge_in_condition_phi): Same.
	(follow_ssa_edge_inner_loop_phi): Same.
	(follow_ssa_edge): Same.
	(analyze_evolution_in_loop): Same.
	(analyze_initial_condition): Same.
	(interpret_loop_phi): Same.
	(interpret_condition_phi): Same.
	(interpret_rhs_expr): Same.
	(interpret_expr): Same.
	(interpret_gimple_assign): Same.
	(analyze_scalar_evolution_1): Same.
	(analyze_scalar_evolution): Same.
	(analyze_scalar_evolution_for_address_of): Same.
	(get_instantiated_value_entry): Same.
	(loop_closed_phi_def): Same.
	(instantiate_scev_name): Same.
	(instantiate_scev_poly): Same.
	(instantiate_scev_binary): Same.
	(instantiate_scev_convert): Same.
	(instantiate_scev_not): Same.
	(instantiate_scev_r): Same.
	(instantiate_scev): Same.
	(resolve_mixers): Same.
	(initialize_scalar_evolutions_analyzer): Same.
	(scev_reset_htab): Same.
	(scev_reset): Same.
	(derive_simple_iv_with_niters): Same.
	(simple_iv_with_niters): Same.
	(expression_expensive_p): Same.
	(final_value_replacement_loop): Same.
	* tree-scalar-evolution.h (block_before_loop): Same.
	* tree-ssa-address.h: Same.
	* tree-ssa-dce.c (find_obviously_necessary_stmts): Same.
	* tree-ssa-dom.c (edge_info::record_simple_equiv): Same.
	(record_edge_info): Same.
	* tree-ssa-live.c (var_map_base_fini): Same.
	(remove_unused_locals): Same.
	* tree-ssa-live.h: Same.
	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Same.
	(pass_ch_vect::execute): Same.
	(pass_ch::process_loop_p): Same.
	* tree-ssa-loop-im.c (mem_ref_hasher::hash): Same.
	(movement_possibility): Same.
	(outermost_invariant_loop): Same.
	(stmt_cost): Same.
	(determine_max_movement): Same.
	(invariantness_dom_walker::before_dom_children): Same.
	(move_computations): Same.
	(may_move_till): Same.
	(force_move_till_op): Same.
	(force_move_till): Same.
	(memref_free): Same.
	(record_mem_ref_loc): Same.
	(set_ref_stored_in_loop): Same.
	(mark_ref_stored): Same.
	(sort_bbs_in_loop_postorder_cmp): Same.
	(sort_locs_in_loop_postorder_cmp): Same.
	(analyze_memory_references): Same.
	(mem_refs_may_alias_p): Same.
	(find_ref_loc_in_loop_cmp): Same.
	(rewrite_mem_ref_loc::operator): Same.
	(first_mem_ref_loc_1::operator): Same.
	(sm_set_flag_if_changed::operator): Same.
	(execute_sm_if_changed_flag_set): Same.
	(execute_sm): Same.
	(hoist_memory_references): Same.
	(ref_always_accessed::operator): Same.
	(refs_independent_p): Same.
	(record_dep_loop): Same.
	(ref_indep_loop_p_1): Same.
	(ref_indep_loop_p): Same.
	(can_sm_ref_p): Same.
	(find_refs_for_sm): Same.
	(loop_suitable_for_sm): Same.
	(store_motion_loop): Same.
	(store_motion): Same.
	(fill_always_executed_in): Same.
	* tree-ssa-loop-ivcanon.c (constant_after_peeling): Same.
	(estimated_unrolled_size): Same.
	(loop_edge_to_cancel): Same.
	(remove_exits_and_undefined_stmts): Same.
	(remove_redundant_iv_tests): Same.
	(unloop_loops): Same.
	(estimated_peeled_sequence_size): Same.
	(try_peel_loop): Same.
	(canonicalize_loop_induction_variables): Same.
	(canonicalize_induction_variables): Same.
	* tree-ssa-loop-ivopts.c (iv_inv_expr_hasher::equal): Same.
	(name_info): Same.
	(stmt_after_inc_pos): Same.
	(contains_abnormal_ssa_name_p): Same.
	(niter_for_exit): Same.
	(find_bivs): Same.
	(mark_bivs): Same.
	(find_givs_in_bb): Same.
	(find_induction_variables): Same.
	(find_interesting_uses_cond): Same.
	(outermost_invariant_loop_for_expr): Same.
	(idx_find_step): Same.
	(add_candidate_1): Same.
	(add_iv_candidate_derived_from_uses): Same.
	(alloc_use_cost_map): Same.
	(prepare_decl_rtl): Same.
	(generic_predict_doloop_p): Same.
	(computation_cost): Same.
	(determine_common_wider_type): Same.
	(get_computation_aff_1): Same.
	(get_use_type): Same.
	(determine_group_iv_cost_address): Same.
	(iv_period): Same.
	(difference_cannot_overflow_p): Same.
	(may_eliminate_iv): Same.
	(determine_set_costs): Same.
	(cheaper_cost_pair): Same.
	(compare_cost_pair): Same.
	(iv_ca_cand_for_group): Same.
	(iv_ca_recount_cost): Same.
	(iv_ca_set_remove_invs): Same.
	(iv_ca_set_no_cp): Same.
	(iv_ca_set_add_invs): Same.
	(iv_ca_set_cp): Same.
	(iv_ca_add_group): Same.
	(iv_ca_cost): Same.
	(iv_ca_compare_deps): Same.
	(iv_ca_delta_reverse): Same.
	(iv_ca_delta_commit): Same.
	(iv_ca_cand_used_p): Same.
	(iv_ca_delta_free): Same.
	(iv_ca_new): Same.
	(iv_ca_free): Same.
	(iv_ca_dump): Same.
	(iv_ca_extend): Same.
	(iv_ca_narrow): Same.
	(iv_ca_prune): Same.
	(cheaper_cost_with_cand): Same.
	(iv_ca_replace): Same.
	(try_add_cand_for): Same.
	(get_initial_solution): Same.
	(try_improve_iv_set): Same.
	(find_optimal_iv_set_1): Same.
	(create_new_iv): Same.
	(rewrite_use_compare): Same.
	(remove_unused_ivs): Same.
	(determine_scaling_factor): Same.
	* tree-ssa-loop-ivopts.h: Same.
	* tree-ssa-loop-manip.c (create_iv): Same.
	(compute_live_loop_exits): Same.
	(add_exit_phi): Same.
	(add_exit_phis): Same.
	(find_uses_to_rename_use): Same.
	(find_uses_to_rename_def): Same.
	(find_uses_to_rename_in_loop): Same.
	(rewrite_into_loop_closed_ssa): Same.
	(check_loop_closed_ssa_bb): Same.
	(split_loop_exit_edge): Same.
	(ip_end_pos): Same.
	(ip_normal_pos): Same.
	(copy_phi_node_args): Same.
	(gimple_duplicate_loop_to_header_edge): Same.
	(can_unroll_loop_p): Same.
	(determine_exit_conditions): Same.
	(scale_dominated_blocks_in_loop): Same.
	(niter_for_unrolled_loop): Same.
	(tree_transform_and_unroll_loop): Same.
	(rewrite_all_phi_nodes_with_iv): Same.
	* tree-ssa-loop-manip.h: Same.
	* tree-ssa-loop-niter.c (number_of_iterations_ne_max): Same.
	(number_of_iterations_ne): Same.
	(assert_no_overflow_lt): Same.
	(assert_loop_rolls_lt): Same.
	(number_of_iterations_lt): Same.
	(adjust_cond_for_loop_until_wrap): Same.
	(tree_simplify_using_condition): Same.
	(simplify_using_initial_conditions): Same.
	(simplify_using_outer_evolutions): Same.
	(loop_only_exit_p): Same.
	(ssa_defined_by_minus_one_stmt_p): Same.
	(number_of_iterations_popcount): Same.
	(number_of_iterations_exit): Same.
	(find_loop_niter): Same.
	(finite_loop_p): Same.
	(chain_of_csts_start): Same.
	(get_val_for): Same.
	(loop_niter_by_eval): Same.
	(derive_constant_upper_bound_ops): Same.
	(do_warn_aggressive_loop_optimizations): Same.
	(record_estimate): Same.
	(get_cst_init_from_scev): Same.
	(record_nonwrapping_iv): Same.
	(idx_infer_loop_bounds): Same.
	(infer_loop_bounds_from_ref): Same.
	(infer_loop_bounds_from_array): Same.
	(infer_loop_bounds_from_pointer_arith): Same.
	(infer_loop_bounds_from_signedness): Same.
	(bound_index): Same.
	(discover_iteration_bound_by_body_walk): Same.
	(maybe_lower_iteration_bound): Same.
	(estimate_numbers_of_iterations): Same.
	(estimated_loop_iterations): Same.
	(estimated_loop_iterations_int): Same.
	(max_loop_iterations): Same.
	(max_loop_iterations_int): Same.
	(likely_max_loop_iterations): Same.
	(likely_max_loop_iterations_int): Same.
	(estimated_stmt_executions_int): Same.
	(max_stmt_executions): Same.
	(likely_max_stmt_executions): Same.
	(estimated_stmt_executions): Same.
	(stmt_dominates_stmt_p): Same.
	(nowrap_type_p): Same.
	(loop_exits_before_overflow): Same.
	(scev_var_range_cant_overflow): Same.
	(scev_probably_wraps_p): Same.
	(free_numbers_of_iterations_estimates): Same.
	* tree-ssa-loop-niter.h: Same.
	* tree-ssa-loop-prefetch.c (release_mem_refs): Same.
	(idx_analyze_ref): Same.
	(analyze_ref): Same.
	(gather_memory_references_ref): Same.
	(mark_nontemporal_store): Same.
	(emit_mfence_after_loop): Same.
	(may_use_storent_in_loop_p): Same.
	(mark_nontemporal_stores): Same.
	(should_unroll_loop_p): Same.
	(volume_of_dist_vector): Same.
	(add_subscript_strides): Same.
	(self_reuse_distance): Same.
	(insn_to_prefetch_ratio_too_small_p): Same.
	* tree-ssa-loop-split.c (split_at_bb_p): Same.
	(patch_loop_exit): Same.
	(find_or_create_guard_phi): Same.
	(easy_exit_values): Same.
	(connect_loop_phis): Same.
	(connect_loops): Same.
	(compute_new_first_bound): Same.
	(split_loop): Same.
	(tree_ssa_split_loops): Same.
	* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Same.
	(is_maybe_undefined): Same.
	(tree_may_unswitch_on): Same.
	(simplify_using_entry_checks): Same.
	(tree_unswitch_single_loop): Same.
	(tree_unswitch_loop): Same.
	(tree_unswitch_outer_loop): Same.
	(empty_bb_without_guard_p): Same.
	(used_outside_loop_p): Same.
	(get_vop_from_header): Same.
	(hoist_guard): Same.
	* tree-ssa-loop.c (gate_oacc_kernels): Same.
	(get_lsm_tmp_name): Same.
	* tree-ssa-loop.h: Same.
	* tree-ssa-reassoc.c (add_repeat_to_ops_vec): Same.
	(build_and_add_sum): Same.
	(no_side_effect_bb): Same.
	(get_ops): Same.
	(linearize_expr): Same.
	(should_break_up_subtract): Same.
	(linearize_expr_tree): Same.
	* tree-ssa-scopedtables.c: Same.
	* tree-ssa-scopedtables.h: Same.
	* tree-ssa-structalias.c (condense_visit): Same.
	(label_visit): Same.
	(dump_pred_graph): Same.
	(perform_var_substitution): Same.
	(move_complex_constraints): Same.
	(remove_preds_and_fake_succs): Same.
	* tree-ssa-threadupdate.c (dbds_continue_enumeration_p): Same.
	(determine_bb_domination_status): Same.
	(duplicate_thread_path): Same.
	(thread_through_all_blocks): Same.
	* tree-ssa-threadupdate.h: Same.
	* tree-streamer-in.c (streamer_read_string_cst): Same.
	(input_identifier): Same.
	(unpack_ts_type_common_value_fields): Same.
	(unpack_ts_block_value_fields): Same.
	(unpack_ts_translation_unit_decl_value_fields): Same.
	(unpack_ts_omp_clause_value_fields): Same.
	(streamer_read_tree_bitfields): Same.
	(streamer_alloc_tree): Same.
	(lto_input_ts_common_tree_pointers): Same.
	(lto_input_ts_vector_tree_pointers): Same.
	(lto_input_ts_poly_tree_pointers): Same.
	(lto_input_ts_complex_tree_pointers): Same.
	(lto_input_ts_decl_minimal_tree_pointers): Same.
	(lto_input_ts_decl_common_tree_pointers): Same.
	(lto_input_ts_decl_non_common_tree_pointers): Same.
	(lto_input_ts_decl_with_vis_tree_pointers): Same.
	(lto_input_ts_field_decl_tree_pointers): Same.
	(lto_input_ts_function_decl_tree_pointers): Same.
	(lto_input_ts_type_common_tree_pointers): Same.
	(lto_input_ts_type_non_common_tree_pointers): Same.
	(lto_input_ts_list_tree_pointers): Same.
	(lto_input_ts_vec_tree_pointers): Same.
	(lto_input_ts_exp_tree_pointers): Same.
	(lto_input_ts_block_tree_pointers): Same.
	(lto_input_ts_binfo_tree_pointers): Same.
	(lto_input_ts_constructor_tree_pointers): Same.
	(lto_input_ts_omp_clause_tree_pointers): Same.
	(streamer_read_tree_body): Same.
	* tree-streamer.h: Same.
	* tree-switch-conversion.c (bit_test_cluster::is_beneficial): Same.
	* tree-vect-data-refs.c (vect_get_smallest_scalar_type): Same.
	(vect_analyze_possibly_independent_ddr): Same.
	(vect_analyze_data_ref_dependence): Same.
	(vect_compute_data_ref_alignment): Same.
	(vect_enhance_data_refs_alignment): Same.
	(vect_analyze_data_ref_access): Same.
	(vect_check_gather_scatter): Same.
	(vect_find_stmt_data_reference): Same.
	(vect_create_addr_base_for_vector_ref): Same.
	(vect_setup_realignment): Same.
	(vect_supportable_dr_alignment): Same.
	* tree-vect-loop-manip.c (rename_variables_in_bb): Same.
	(adjust_phi_and_debug_stmts): Same.
	(vect_set_loop_mask): Same.
	(add_preheader_seq): Same.
	(vect_maybe_permute_loop_masks): Same.
	(vect_set_loop_masks_directly): Same.
	(vect_set_loop_condition_masked): Same.
	(vect_set_loop_condition_unmasked): Same.
	(slpeel_duplicate_current_defs_from_edges): Same.
	(slpeel_add_loop_guard): Same.
	(slpeel_can_duplicate_loop_p): Same.
	(create_lcssa_for_virtual_phi): Same.
	(iv_phi_p): Same.
	(vect_update_ivs_after_vectorizer): Same.
	(vect_gen_vector_loop_niters_mult_vf): Same.
	(slpeel_update_phi_nodes_for_loops): Same.
	(slpeel_update_phi_nodes_for_guard1): Same.
	(find_guard_arg): Same.
	(slpeel_update_phi_nodes_for_guard2): Same.
	(slpeel_update_phi_nodes_for_lcssa): Same.
	(vect_do_peeling): Same.
	(vect_create_cond_for_alias_checks): Same.
	(vect_loop_versioning): Same.
	* tree-vect-loop.c (vect_determine_vf_for_stmt): Same.
	(vect_inner_phi_in_double_reduction_p): Same.
	(vect_analyze_scalar_cycles_1): Same.
	(vect_fixup_scalar_cycles_with_patterns): Same.
	(vect_get_loop_niters): Same.
	(bb_in_loop_p): Same.
	(vect_get_max_nscalars_per_iter): Same.
	(vect_verify_full_masking): Same.
	(vect_compute_single_scalar_iteration_cost): Same.
	(vect_analyze_loop_form_1): Same.
	(vect_analyze_loop_form): Same.
	(vect_active_double_reduction_p): Same.
	(vect_analyze_loop_operations): Same.
	(neutral_op_for_slp_reduction): Same.
	(vect_is_simple_reduction): Same.
	(vect_model_reduction_cost): Same.
	(get_initial_def_for_reduction): Same.
	(get_initial_defs_for_reduction): Same.
	(vect_create_epilog_for_reduction): Same.
	(vectorize_fold_left_reduction): Same.
	(vectorizable_reduction): Same.
	(vectorizable_induction): Same.
	(vectorizable_live_operation): Same.
	(loop_niters_no_overflow): Same.
	(vect_get_loop_mask): Same.
	(vect_transform_loop_stmt): Same.
	(vect_transform_loop): Same.
	* tree-vect-patterns.c (vect_reassociating_reduction_p): Same.
	(vect_determine_precisions): Same.
	(vect_pattern_recog_1): Same.
	* tree-vect-slp.c (vect_analyze_slp_instance): Same.
	* tree-vect-stmts.c (stmt_vectype): Same.
	(process_use): Same.
	(vect_init_vector_1): Same.
	(vect_truncate_gather_scatter_offset): Same.
	(get_group_load_store_type): Same.
	(vect_build_gather_load_calls): Same.
	(vect_get_strided_load_store_ops): Same.
	(vectorizable_simd_clone_call): Same.
	(vectorizable_store): Same.
	(permute_vec_elements): Same.
	(vectorizable_load): Same.
	(vect_transform_stmt): Same.
	(supportable_widening_operation): Same.
	* tree-vectorizer.c (vec_info::replace_stmt): Same.
	(vec_info::free_stmt_vec_info): Same.
	(vect_free_loop_info_assumptions): Same.
	(vect_loop_vectorized_call): Same.
	(set_uid_loop_bbs): Same.
	(vectorize_loops): Same.
	* tree-vectorizer.h (STMT_VINFO_BB_VINFO): Same.
	* tree.c (add_tree_to_fld_list): Same.
	(fld_type_variant_equal_p): Same.
	(fld_decl_context): Same.
	(fld_incomplete_type_of): Same.
	(free_lang_data_in_binfo): Same.
	(need_assembler_name_p): Same.
	(find_decls_types_r): Same.
	(get_eh_types_for_runtime): Same.
	(find_decls_types_in_eh_region): Same.
	(find_decls_types_in_node): Same.
	(assign_assembler_name_if_needed): Same.
	* value-prof.c (stream_out_histogram_value): Same.
	* value-prof.h: Same.
	* var-tracking.c (use_narrower_mode): Same.
	(prepare_call_arguments): Same.
	(vt_expand_loc_callback): Same.
	(resolve_expansions_pending_recursion): Same.
	(vt_expand_loc): Same.
	* varasm.c (const_hash_1): Same.
	(compare_constant): Same.
	(tree_output_constant_def): Same.
	(simplify_subtraction): Same.
	(get_pool_constant): Same.
	(output_constant_pool_2): Same.
	(output_constant_pool_1): Same.
	(mark_constants_in_pattern): Same.
	(mark_constant_pool): Same.
	(get_section_anchor): Same.
	* vr-values.c (compare_range_with_value): Same.
	(vr_values::extract_range_from_phi_node): Same.
	* vr-values.h: Same.
	* web.c (unionfind_union): Same.
	* wide-int.h: Same.

From-SVN: r273311
2019-07-09 12:32:49 -06:00
Qing Zhao 1c6ffbab63 re PR preprocessor/90581 (provide an option to adjust the maximum depth of nested #include)
PR preprocessor/90581
Add a cpp option -fmax-include-depth to set the maximum depth of the nested #include.

From-SVN: r272948
2019-07-02 20:23:30 +00:00
Nathan Sidwell b744fc85f5 [libcpp] struct deps renaming
https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00199.html
	libcpp/
	* include/mkdeps.h: Rename struct deps to struct mkdeps.
	* mkdeps.c: Likewise.
	* include/cpplib.h (cpp_get_deps): Rename return type..
	* directives.c (cpp_get_deps): Likewise.
	* internal.h (struct cpp_reader): Rename deps field type.

	gcc/c-family/
	* c-opts.c (handle_defered_opts): Rename struct deps to struc mkdeps.

From-SVN: r270905
2019-05-06 11:34:47 +00:00
Jakub Jelinek 18f5df94df re PR preprocessor/88974 (ICE: Segmentation fault (in linemap_resolve_location))
PR preprocessor/88974
	* directives.c (SEEN_EOL): Move macro to ...
	* internal.h (SEEN_EOL): ... here.
	* expr.c (parse_has_include): Don't cpp_get_token if SEEN_EOL ().

	* c-c++-common/cpp/pr88974.c: New test.

From-SVN: r268285
2019-01-26 11:08:00 +01:00
Jakub Jelinek a554497024 Update copyright years.
From-SVN: r267494
2019-01-01 13:31:55 +01:00
David Malcolm 620e594be5 Eliminate source_location in favor of location_t
Historically GCC used location_t, while libcpp used source_location.

This inconsistency has been annoying me for a while, so this patch
removes source_location in favor of location_t throughout
(as the latter is shorter).

gcc/ChangeLog:
	* builtins.c: Replace "source_location" with "location_t".
	* diagnostic-show-locus.c: Likewise.
	* diagnostic.c: Likewise.
	* dumpfile.c: Likewise.
	* gcc-rich-location.h: Likewise.
	* genmatch.c: Likewise.
	* gimple.h: Likewise.
	* gimplify.c: Likewise.
	* input.c: Likewise.
	* input.h: Likewise.  Eliminate the typedef.
	* omp-expand.c: Likewise.
	* selftest.h: Likewise.
	* substring-locations.h (get_source_location_for_substring):
	Rename to..
	(get_location_within_string): ...this.
	* tree-cfg.c: Replace "source_location" with "location_t".
	* tree-cfgcleanup.c: Likewise.
	* tree-diagnostic.c: Likewise.
	* tree-into-ssa.c: Likewise.
	* tree-outof-ssa.c: Likewise.
	* tree-parloops.c: Likewise.
	* tree-phinodes.c: Likewise.
	* tree-phinodes.h: Likewise.
	* tree-ssa-loop-ivopts.c: Likewise.
	* tree-ssa-loop-manip.c: Likewise.
	* tree-ssa-phiopt.c: Likewise.
	* tree-ssa-phiprop.c: Likewise.
	* tree-ssa-threadupdate.c: Likewise.
	* tree-ssa.c: Likewise.
	* tree-ssa.h: Likewise.
	* tree-vect-loop-manip.c: Likewise.

gcc/c-family/ChangeLog:
	* c-common.c (c_get_substring_location): Update for renaming of
	get_source_location_for_substring to get_location_within_string.
	* c-lex.c: Replace "source_location" with "location_t".
	* c-opts.c: Likewise.
	* c-ppoutput.c: Likewise.

gcc/c/ChangeLog:
	* c-decl.c: Replace "source_location" with "location_t".
	* c-tree.h: Likewise.
	* c-typeck.c: Likewise.
	* gimple-parser.c: Likewise.

gcc/cp/ChangeLog:
	* call.c: Replace "source_location" with "location_t".
	* cp-tree.h: Likewise.
	* cvt.c: Likewise.
	* name-lookup.c: Likewise.
	* parser.c: Likewise.
	* typeck.c: Likewise.

gcc/fortran/ChangeLog:
	* cpp.c: Replace "source_location" with "location_t".
	* gfortran.h: Likewise.

gcc/go/ChangeLog:
	* go-gcc-diagnostics.cc: Replace "source_location" with "location_t".
	* go-gcc.cc: Likewise.
	* go-linemap.cc: Likewise.
	* go-location.h: Likewise.
	* gofrontend/README: Likewise.

gcc/jit/ChangeLog:
	* jit-playback.c: Replace "source_location" with "location_t".

gcc/testsuite/ChangeLog:
	* g++.dg/plugin/comment_plugin.c: Replace "source_location" with
	"location_t".
	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c: Likewise.

libcc1/ChangeLog:
	* libcc1plugin.cc: Replace "source_location" with "location_t".
	(plugin_context::get_source_location): Rename to...
	(plugin_context::get_location_t): ...this.
	* libcp1plugin.cc: Likewise.

libcpp/ChangeLog:
	* charset.c: Replace "source_location" with "location_t".
	* directives-only.c: Likewise.
	* directives.c: Likewise.
	* errors.c: Likewise.
	* expr.c: Likewise.
	* files.c: Likewise.
	* include/cpplib.h: Likewise.  Rename MAX_SOURCE_LOCATION to
	MAX_LOCATION_T.
	* include/line-map.h: Likewise.
	* init.c: Likewise.
	* internal.h: Likewise.
	* lex.c: Likewise.
	* line-map.c: Likewise.
	* location-example.txt: Likewise.
	* macro.c: Likewise.
	* pch.c: Likewise.
	* traditional.c: Likewise.

From-SVN: r266085
2018-11-13 20:05:03 +00:00
Nathan Sidwell f3f6029db2 [6/6] Preprocessor forced macro location
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg02044.html
	libcpp/
	* internal.h (struct cpp_reader): Rename forced_token_location_p
	to forced_token_location and drop its pointerness.
	* include/cpplib.h (cpp_force_token_locations): Take location, not
	pointer to one.
	* init.c (cpp_create_reader): Adjust.
	* lex.c (cpp_read_main_file): 

	gcc/c-family/
	* c-opts.c (c_finish_options): Adjust cpp_force_token_locations call.

	gcc/fortran/
	* cpp.c (gfc_cpp_init): Adjust cpp_force_token_locations call.

From-SVN: r265692
2018-10-31 15:26:28 +00:00
Nathan Sidwell abcd1775e0 [PATCH] Kill cpp-id-data.h
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01149.html
	libcpp/
	* Makefile.in (TAGS_SOURCES): Remove cpp-id-data.h.
	* include/cpp-id-data.h: Delete.
	* internal.h: Include cpplib.h not cpp-id-data.h.
	gcc/
	* Makefile.in (CPP_ID_DATA_H): Delete.
	(CPP_INTERNAL_H): Don't add it.
	(GTFILES): Replace CPP_ID_DATA_H with CPPLIB_H.
	* gengtype.c (open_base_files): Replace cpp-id-data.h with cpplib.h

From-SVN: r263663
2018-08-20 14:20:04 +00:00
Nathan Sidwell 10f04917ab [PATCH] Macro body is trailing array
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01037.html
	* include/cpplib.h (enum cpp_macro_kind): New.
	(struct cpp_macro): Make body trailing array.  Add kind field,
	delete traditional flag.
	* internal.h (_cpp_new_macro): Declare.
	(_cpp_reserve_room): New inline.
	(_cpp_commit_buf): Declare.
	(_cpp_create_trad_definition): Return new macro.
	* lex.c (_cpp_commit_buff): New.
	* macro.c (macro_real_token_count): Count backwards.
	(replace_args): Pointer equality not orderedness.
	(_cpp_save_parameter): Use _cpp_reserve_room.
	(alloc_expansion_token): Delete.
	(lex_expansion_token): Return macro pointer.  Use _cpp_reserve_room.
	(create_iso_definition): Allocate macro itself.  Adjust for
	different allocation ordering.
	(_cpp_new_macro): New.
	(_cpp_create_definition): Adjust for API changes.
	* traditional.c (push_replacement_text): Don't set traditional
	flag.
	(save_replacement_text): Likewise.
	(_cpp_create_trad_definition): Allocate macro itself, Adjust for
	different allocation ordering.

From-SVN: r263622
2018-08-17 16:07:19 +00:00
Nathan Sidwell c5d725c0a8 [PATCH] Move cpp_macro to cpplib.h
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01016.html
	libcpp/
	* cpp-id-data.h (uchar, UC): Move to internal.h
	(struct cpp_macro): Move to cpplib.h.
	* internal.h (uchar, UC): From cpp-id-data.h.
	* include/cpplib.h (struct cpp_macro): From cpp-id-data.h.
	gcc/c-family/
	* c-ada-spec.c: Don't #include "cpp-id-data.h"
	* c-cppbuiltin.c: Likewise.
	gcc/
	* cppbuiltin.c: Include "cpplib.h", not "cpp-id-data.h".

From-SVN: r263618
2018-08-17 12:04:13 +00:00
Nathan Sidwell 729a01f72c [PATCH] Macro definition parameter parsing
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg00977.html
	libcpp/
	* internal.h (_cpp_save_parameter): Take parmno, not macro.
	(_cpp_unsave_parameters): Declare.
	* macro.c (_cpp_save_parameter): Take parm number, not macro.
	Return true on success.
	(_cpp_unsave_parameters): New.
	(parse_params): Take parm_no and variadic pointers, not macro.
	Reimplement parsing logic.
	(create_iso_definition): Adjust parse_params changes.  Call
	_cpp_unsave_parameters here.
	(_cpp_create_definition): Don't unsave params here.
	* traditional.c (scan_parameters): Take n_param pointer, adjust.
	(_cpp_create_trad_definition): Ajust scan_parameters change.  Call
	_cpp_unsave_parameters.
	gcc/testsuite/
	* gcc.dg/cpp/macsyntx.c: Adjust expected errors.
	* gcc.dg/cpp/macsyntx2.c: likewise.

From-SVN: r263600
2018-08-16 19:18:42 +00:00
Nathan Sidwell 3f6677f418 [PATCH] CPP Macro predicates
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg00897.html
	libcpp/
	* include/cpplib.h (cpp_user_macro_p, cpp_builtin_macro_p)
	(cpp_macro_p): New inlines.
	* directives.c (do_pragma_poison): Use cpp_macro_p.
	(do_ifdef, do_ifndef): Likewise.  Use _cpp_maybe_notify_macro_use.
	(cpp_pop_definition): Use cpp_macro_p.  Move _cpp_free_definition
	earlier.  Don't zap node directly.
	* expr.c (parse_defined): Use _cpp_maybe_notify_macro_use &
	cpp_macro_p.
	* files.c (should_stack_file): Use cpp_macro_p.
	* identifiers.c (cpp_defined): Likewise.
	* internal.h (_cpp_mark_macro): Use cpp_user_macro_p.
	(_cpp_notify_macro_use): Declare.
	(_cpp_maybe_notify_macro_use): New inline.
	* lex.c (is_macro): Use cpp_macro_p.
	* macro.c (_cpp_warn_if_unused_macro): Use cpp_user_macro_p.
	(enter_macro_context): Likewise.
	(_cpp_create_definition): Use cpp_builtin_macro_p,
	cpp_user_macro_p.  Move _cpp_free_definition earlier.
	(_cpp_notify_macro_use): New, broken out of multiple call sites.
	* traditional.c (fun_like_macro_p): Use cpp_builtin_macro_p.
	(maybe_start_funlike, _cpp_scan_out_logical_line)
	(push_replacement_text): Likewise.
	gcc/c-family/
	* c-ada-spec.c (count_ada_macro): Use cpp_user_macro_p.
	(store_ada_macro): Likewise.
	* c-ppoutput.c (cb_used_define, dump_macro): Likewise.
	* c-spellcheck.cc (should-suggest_as_macro_p): Likewise,
	gcc/
	* config/rs6000/rs6000-c.c (rs6000_macro_to_expend): Use cpp_macro_p.
	* config/powerpcspc/powerpcspe-c.c (rs6000_macro_to_expend): Likewise.
	gcc/cp/
	* name-lookup.c (lookup_name_fuzzy): Likewise.
	gcc/fortran/
	* cpp.c (dump_macro): Use cpp_user_macro_p.

From-SVN: r263587
2018-08-16 13:51:38 +00:00
Jakub Jelinek 85ec4feb11 Update copyright years.
From-SVN: r256169
2018-01-03 11:03:58 +01:00
Bernd Edlinger c65e18d333 invoke.texi: Document -Wcast-function-type.
gcc:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * doc/invoke.texi: Document -Wcast-function-type.
        * recog.h (stored_funcptr): Change signature.
        * tree-dump.c (dump_node): Avoid warning.
        * typed-splay-tree.h (typed_splay_tree): Avoid warning.

libcpp:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * internal.h (maybe_print_line): Change signature.

c-family:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c.opt (Wcast-function-type): New warning option.
        * c-lex.c (get_fileinfo): Avoid warning.
        * c-ppoutput.c (scan_translation_unit_directives_only): Remove cast.

c:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c-typeck.c (c_safe_arg_type_equiv_p,
        c_safe_function_type_cast_p): New function.
        (build_c_cast): Implement -Wcast-function-type.

cp:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * decl2.c (start_static_storage_duration_function): Avoid warning.
        * typeck.c (cxx_safe_arg_type_equiv_p,
        cxx_safe_function_type_cast_p): New function.
        (build_reinterpret_cast_1): Implement -Wcast-function-type.

testsuite:
2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c-c++-common/Wcast-function-type.c: New test.
        * g++.dg/Wcast-function-type.C: New test.

From-SVN: r255661
2017-12-14 18:59:24 +00:00
Tom Tromey fb771b9dad Implement __VA_OPT__
This implements __VA_OPT__, a new preprocessor feature added in C++2A.
The paper can be found here:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0306r4.html

gcc/ChangeLog

        * doc/cpp.texi (Variadic Macros): Document __VA_OPT__.

gcc/testsuite/ChangeLog

        * c-c++-common/cpp/va-opt-pedantic.c: New file.
        * c-c++-common/cpp/va-opt.c: New file.
        * c-c++-common/cpp/va-opt-error.c: New file.

libcpp/ChangeLog

        * pch.c (cpp_read_state): Set n__VA_OPT__.
        * macro.c (vaopt_state): New class.
        (_cpp_arguments_ok): Check va_opt flag.
        (replace_args, create_iso_definition): Use vaopt_state.
        * lex.c (lex_identifier_intern): Possibly issue errors for
        __VA_OPT__.
        (lex_identifier): Likewise.
        (maybe_va_opt_error): New function.
        * internal.h (struct lexer_state) <va_args_ok>: Update comment.
        (struct spec_nodes) <n__VA_OPT__>: New field.
        * init.c (struct lang_flags) <va_opt>: New field.
        (lang_defaults): Add entries for C++2A.  Update all entries for
        va_opt.
        (cpp_set_lang): Initialize va_opt.
        * include/cpplib.h (struct cpp_options) <va_opt>: New field.
        * identifiers.c (_cpp_init_hashtable): Initialize n__VA_OPT__.

From-SVN: r254707
2017-11-13 20:17:42 +00:00
Jakub Jelinek cbe34bb5ed Update copyright years.
From-SVN: r243994
2017-01-01 13:07:43 +01:00
David Malcolm 88fa5555a3 On-demand locations within string-literals
gcc/c-family/ChangeLog:
	* c-common.c: Include "substring-locations.h".
	(get_cpp_ttype_from_string_type): New function.
	(g_string_concat_db): New global.
	(substring_loc::get_range): New method.
	* c-common.h (g_string_concat_db): New declaration.
	(class substring_loc): New class.
	* c-lex.c (lex_string): When concatenating strings, capture the
	locations of all tokens using a new obstack, and record the
	concatenation locations within g_string_concat_db.
	* c-opts.c (c_common_init_options): Construct g_string_concat_db
	on the ggc-heap.

gcc/ChangeLog:
	* input.c (string_concat::string_concat): New constructor.
	(string_concat_db::string_concat_db): New constructor.
	(string_concat_db::record_string_concatenation): New method.
	(string_concat_db::get_string_concatenation): New method.
	(string_concat_db::get_key_loc): New method.
	(class auto_cpp_string_vec): New class.
	(get_substring_ranges_for_loc): New function.
	(get_source_range_for_substring): New function.
	(get_num_source_ranges_for_substring): New function.
	(class selftest::lexer_test_options): New class.
	(struct selftest::lexer_test): New struct.
	(class selftest::ebcdic_execution_charset): New class.
	(selftest::ebcdic_execution_charset::s_singleton): New variable.
	(selftest::lexer_test::lexer_test): New constructor.
	(selftest::lexer_test::~lexer_test): New destructor.
	(selftest::lexer_test::get_token): New method.
	(selftest::assert_char_at_range): New function.
	(ASSERT_CHAR_AT_RANGE): New macro.
	(selftest::assert_num_substring_ranges): New function.
	(ASSERT_NUM_SUBSTRING_RANGES): New macro.
	(selftest::assert_has_no_substring_ranges): New function.
	(ASSERT_HAS_NO_SUBSTRING_RANGES): New macro.
	(selftest::test_lexer_string_locations_simple): New function.
	(selftest::test_lexer_string_locations_ebcdic): New function.
	(selftest::test_lexer_string_locations_hex): New function.
	(selftest::test_lexer_string_locations_oct): New function.
	(selftest::test_lexer_string_locations_letter_escape_1): New function.
	(selftest::test_lexer_string_locations_letter_escape_2): New function.
	(selftest::test_lexer_string_locations_ucn4): New function.
	(selftest::test_lexer_string_locations_ucn8): New function.
	(selftest::uint32_from_big_endian): New function.
	(selftest::test_lexer_string_locations_wide_string): New function.
	(selftest::uint16_from_big_endian): New function.
	(selftest::test_lexer_string_locations_string16): New function.
	(selftest::test_lexer_string_locations_string32): New function.
	(selftest::test_lexer_string_locations_u8): New function.
	(selftest::test_lexer_string_locations_utf8_source): New function.
	(selftest::test_lexer_string_locations_concatenation_1): New
	function.
	(selftest::test_lexer_string_locations_concatenation_2): New
	function.
	(selftest::test_lexer_string_locations_concatenation_3): New
	function.
	(selftest::test_lexer_string_locations_macro): New function.
	(selftest::test_lexer_string_locations_stringified_macro_argument):
	New function.
	(selftest::test_lexer_string_locations_non_string): New function.
	(selftest::test_lexer_string_locations_long_line): New function.
	(selftest::test_lexer_char_constants): New function.
	(selftest::input_c_tests): Call the new test functions once per
	case within the line_table test matrix.
	* input.h (struct string_concat): New struct.
	(struct location_hash): New struct.
	(class string_concat_db): New class.
	* substring-locations.h: New header.

gcc/testsuite/ChangeLog:
	* gcc.dg/plugin/diagnostic-test-string-literals-1.c: New file.
	* gcc.dg/plugin/diagnostic-test-string-literals-2.c: New file.
	* gcc.dg/plugin/diagnostic_plugin_test_string_literals.c: New file.
	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above new files.

libcpp/ChangeLog:
	* charset.c (cpp_substring_ranges::cpp_substring_ranges): New
	constructor.
	(cpp_substring_ranges::~cpp_substring_ranges): New destructor.
	(cpp_substring_ranges::add_range): New method.
	(cpp_substring_ranges::add_n_ranges): New method.
	(_cpp_valid_ucn): Add "char_range" and "loc_reader" params; if
	they are non-NULL, read position information from *loc_reader
	and update char_range->m_finish accordingly.
	(convert_ucn): Add "char_range", "loc_reader", and "ranges"
	params.  If loc_reader is non-NULL, read location information from
	it, and update *ranges accordingly, using char_range.
	Conditionalize the conversion into tbuf on tbuf being non-NULL.
	(convert_hex): Likewise, conditionalizing the call to
	emit_numeric_escape on tbuf.
	(convert_oct): Likewise.
	(convert_escape): Add params "loc_reader" and "ranges".  If
	loc_reader is non-NULL, read location information from it, and
	update *ranges accordingly.  Conditionalize the conversion into
	tbuf on tbuf being non-NULL.
	(cpp_interpret_string): Rename to...
	(cpp_interpret_string_1): ...this, adding params "loc_readers" and
	"out".  Use "to" to conditionalize the initialization and usage of
	"tbuf", such as running the converter.  If "loc_readers" is
	non-NULL, use the instances within it, reading location
	information from them, and passing them to convert_escape; likewise
	write to "out" if loc_readers is non-NULL.  Check for leading
	quote and issue an error if it is not present.  Update boundary
	check from "== limit" to ">= limit" to protect against erroneous
	location values to calls that are not parsing string literals.
	(cpp_interpret_string): Reimplement in terms to
	cpp_interpret_string_1.
	(noop_error_cb): New function.
	(cpp_interpret_string_ranges): New function.
	(cpp_string_location_reader::cpp_string_location_reader): New
	constructor.
	(cpp_string_location_reader::get_next): New method.
	* include/cpplib.h (class cpp_string_location_reader): New class.
	(class cpp_substring_ranges): New class.
	(cpp_interpret_string_ranges): New prototype.
	* internal.h (_cpp_valid_ucn): Add params "char_range" and
	"loc_reader".
	* lex.c (forms_identifier_p): Pass NULL for new params to
	_cpp_valid_ucn.

From-SVN: r239175
2016-08-05 18:08:33 +00:00
David Malcolm ac81cf0b2b libcpp: Tweak to missing #include source location
This patch tweaks the error message location for missing header files.

Previously these read:

test.c:1:17: fatal error: 404.h: No such file or directory
 #include "404.h"
                 ^
compilation terminated.

With this patch, the pertinent string is underlined:

test.c:1:10: fatal error: 404.h: No such file or directory
 #include "404.h"
          ^~~~~~~
compilation terminated.

gcc/testsuite/ChangeLog:
	* c-c++-common/missing-header-1.c: New test case.
	* c-c++-common/missing-header-2.c: New test case.
	* c-c++-common/missing-header-3.c: New test case.
	* c-c++-common/missing-header-4.c: New test case.

libcpp/ChangeLog:
	* directives.c (do_include_common): Pass on "location" to
	_cpp_stack_include.
	* errors.c (cpp_diagnostic): Reimplement in terms of...
	(cpp_diagnostic_at): New function.
	(cpp_error_at): New function.
	(cpp_errno_filename): Add "loc" param and use it by using
	cpp_error_at rather than cpp_error.
	* files.c (find_file_in_dir): Add "loc" param and pass it to
	open_file_failed.
	(_cpp_find_file): Add "loc" param.  Use it to convert calls to
	cpp_error to cpp_error_at, and pass it to find_file_in_dir and
	open_file_failed.
	(read_file_guts): Add "loc" param.  Use it to convert calls to
	cpp_error to cpp_error_at.  Pass it to cpp_errno_filename.
	(read_file): Add "loc" param.  Pass it to open_file_failed and
	read_file_guts.
	(should_stack_file): Add "loc" param.  Pass it to read_file.
	(_cpp_stack_file): Add "loc" param.  Pass it to should_stack_file.
	(_cpp_stack_include): Add "loc" param.  Pass it to
	_cpp_find_file and _cpp_stack_file.
	(open_file_failed): Add "loc" param.  Pass it to
	cpp_errno_filename.
	(_cpp_fake_include): Add 0 as a source_location in call to
	_cpp_find_file.
	(_cpp_compare_file_date): Likewise.
	(cpp_push_include): Likewise for call to _cpp_stack_include.
	(cpp_push_default_include): Likewise.
	(_cpp_save_file_entries): Likewise for call to open_file_failed.
	(_cpp_has_header): Likewise for call to _cpp_find_file.
	* include/cpplib.h (cpp_errno_filename): Add source_location
	param.
	(cpp_error_at): New declaration.
	* init.c (cpp_read_main_file): Add 0 as a source_location in calls
	to _cpp_find_file and _cpp_stack_file.
	* internal.h (_cpp_find_file): Add source_location param.
	(_cpp_stack_file): Likewise.
	(_cpp_stack_include): Likewise.

From-SVN: r237715
2016-06-22 15:29:21 +00:00
Eduard Sanou 15c98b2e0d c-common.c (get_source_date_epoch): Rename to cb_get_source_date_epoch.
gcc/c-family/ChangeLog:

2016-05-13  Eduard Sanou  <dhole@openmailbox.org>

	* c-common.c (get_source_date_epoch): Rename to
	cb_get_source_date_epoch.
	* c-common.c (cb_get_source_date_epoch): Use a single generic erorr
	message when the parsing fails.  Use error_at instead of fatal_error.
	* c-common.h (get_source_date_epoch): Rename to
	cb_get_source_date_epoch.
	* c-common.h (cb_get_source_date_epoch): Prototype.
	* c-common.h (MAX_SOURCE_DATE_EPOCH): Define.
	* c-common.h (c_omp_region_type): Remove trailing comma.
	* c-lex.c (init_c_lex): Set cb->get_source_date_epoch callback.
	* c-lex.c (c_lex_with_flags): Remove initialization of
	pfile->source_date_epoch.

gcc/ChangeLog:

2016-05-13  Eduard Sanou  <dhole@openmailbox.org>

	* doc/cppenv.texi: Note that the `%s` in `date` is a non-standard
	extension.
	* gcc.c (driver_handle_option): Call set_source_date_epoch_envvar.
	* gcc.c (set_source_date_epoch_envvar): New function, sets
	the SOURCE_DATE_EPOCH environment variable to the current time.

gcc/testsuite/ChangeLog:

2016-05-13  Eduard Sanou  <dhole@openmailbox.org>

	* gcc.dg/cpp/source_date_epoch-1.c: New file, test the proper
	behaviour of the macros __DATE__ and __TIME__ when SOURCE_DATE_EPOCH
	env var is set.
	* gcc.dg/cpp/source_date_epoch-2.c: New file, test the error output
	when parsing the SOURCE_DATE_EPOCH env var, and make sure it is only
	shown once.
	* lib/gcc-dg.exp (dg-set-compiler-env-var): New function, set env vars
	during compilation.
	* lib/gcc-dg.exp (restore-compiler-env-var): New function, restore env
	vars set by dg-set-compiler-env-var.

libcpp/ChangeLog:

2016-05-13  Eduard Sanou  <dhole@openmailbox.org>

	* include/cpplib.h (cpp_callbacks): Add get_source_date_epoch
	callback.
	* include/cpplib.h (cpp_init_source_date_epoch): Remove prototype.
	* init.c (cpp_init_source_date_epoch): Remove function.
	* init.c (cpp_create_reader): Initialize pfile->source_date_epoch.
	* internal.h (cpp_reader): Extend comment about source_date_epoch.
	* macro.c (_cpp_builtin_macro_text): Use get_source_date_epoch
	callback only once, read pfile->source_date_epoch on future passes.
	Check that get_source_date_epoch callback is not NULL.

From-SVN: r237001
2016-06-01 16:42:41 +00:00