gcc/gcc
Richard Sandiford 3e901615ff rtl-ssa: Avoid creating duplicated phis
If make_uses_available was called twice for the same use,
we could end up trying to create duplicate definitions for
the same extended live range.

gcc/
	* rtl-ssa/blocks.cc (function_info::create_degenerate_phi): Check
	whether the requested phi already exists.
2023-10-24 11:30:53 +01:00
..
ada Daily bump. 2023-10-23 00:16:43 +00:00
analyzer Daily bump. 2023-10-10 00:19:25 +00:00
c Daily bump. 2023-10-21 00:17:36 +00:00
c-family Daily bump. 2023-10-24 00:17:34 +00:00
common RISC-V: Prohibit combination of 'E' and 'H' 2023-10-22 02:21:05 +00:00
config i386: Avoid paradoxical subreg dests in vector zero_extend 2023-10-24 11:26:45 +01:00
cp Daily bump. 2023-10-23 00:16:43 +00:00
d Daily bump. 2023-10-23 00:16:43 +00:00
doc LoongArch: Document -mexplicit-relocs={auto,none,always} 2023-10-23 15:30:19 +08:00
fortran Daily bump. 2023-10-19 00:18:05 +00:00
ginclude Add stdckdint.h header for C23 2023-08-12 09:42:58 +02:00
go compiler: move Selector_expression up in file 2023-10-23 14:15:57 -07:00
jit Daily bump. 2023-10-23 00:16:43 +00:00
lto Daily bump. 2023-10-01 00:18:19 +00:00
m2 Daily bump. 2023-10-18 00:17:58 +00:00
objc Daily bump. 2023-10-24 00:17:34 +00:00
objcp Daily bump. 2023-10-23 00:16:43 +00:00
po
rtl-ssa rtl-ssa: Avoid creating duplicated phis 2023-10-24 11:30:53 +01:00
rust Daily bump. 2023-10-21 00:17:36 +00:00
testsuite RISC-V: Fix ICE of RVV vget/vset intrinsic[PR111935] 2023-10-24 07:47:52 +00:00
text-art analyzer: improvements to out-of-bounds diagrams [PR111155] 2023-10-08 18:43:16 -04:00
ABOUT-GCC-NLS ABOUT-GCC-NLS: add usage guidance 2023-10-19 12:34:35 -04:00
acinclude.m4
aclocal.m4 Config,Darwin: Allow for configuring Darwin to use embedded runpath. 2023-10-22 19:30:02 +01:00
addresses.h [APX EGPR] middle-end: Add index_reg_class with insn argument. 2023-10-07 16:34:29 +08:00
adjust-alignment.cc
alias.cc tree-optimization/111715 - improve TBAA for access paths with pun 2023-10-09 15:17:11 +02:00
alias.h
align.h
alloc-pool.cc
alloc-pool.h
array-traits.h
asan.cc
asan.h
attr-fnspec.h
attribs.cc openmp: Add omp::decl attribute support [PR111392] 2023-09-20 08:43:02 +02:00
attribs.h
auto-inc-dec.cc
auto-profile.cc Fixes for profile count/probability maintenance 2023-10-09 13:07:11 -07:00
auto-profile.h
backend.h
BASE-VER
basic-block.h
bb-reorder.cc
bb-reorder.h
bitmap.cc
bitmap.h
btfout.cc
builtin-attrs.def
builtin-types.def
builtins.cc Simplify & expand c_readstr 2023-09-29 09:24:43 +01:00
builtins.def core: Support heap-based trampolines 2023-10-22 14:01:06 +01:00
builtins.h Simplify & expand c_readstr 2023-09-29 09:24:43 +01:00
caller-save.cc gcc: Rename TRUE/FALSE to true/false in *.cc files 2023-08-25 15:28:29 +02:00
calls.cc Control flow redundancy hardening 2023-10-20 07:50:33 -03:00
calls.h
ccmp.cc
ccmp.h
cfg-flags.def
cfg.cc Check that passes do not forget to define profile 2023-08-24 15:10:46 +02:00
cfg.h Check that passes do not forget to define profile 2023-08-24 15:10:46 +02:00
cfganal.cc use *_grow_cleared rather than *_grow on vec<bitmap_head> 2023-09-29 09:35:01 +02:00
cfganal.h
cfgbuild.cc Handle epilogues that contain jumps 2023-10-17 23:45:43 +01:00
cfgbuild.h Handle epilogues that contain jumps 2023-10-17 23:45:43 +01:00
cfgcleanup.cc
cfgcleanup.h
cfgexpand.cc Middle-end _BitInt support [PR102989] 2023-09-06 17:28:24 +02:00
cfgexpand.h
cfghooks.cc
cfghooks.h
cfgloop.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
cfgloop.h wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
cfgloopanal.cc
cfgloopmanip.cc Fix profile update in duplicat_loop_body_to_header_edge for loops with 0 count_in 2023-08-10 19:01:43 +02:00
cfgloopmanip.h
cfgrtl.cc
cfgrtl.h
cgraph.cc Revert "ipa: Self-DCE of uses of removed call LHSs (PR 108007)" 2023-10-05 14:10:00 +02:00
cgraph.h Revert "ipa: Self-DCE of uses of removed call LHSs (PR 108007)" 2023-10-05 14:10:00 +02:00
cgraphbuild.cc
cgraphclones.cc
cgraphunit.cc
ChangeLog Daily bump. 2023-10-24 00:17:34 +00:00
ChangeLog-1997
ChangeLog-1998
ChangeLog-1999
ChangeLog-2000
ChangeLog-2001
ChangeLog-2002
ChangeLog-2003
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007
ChangeLog-2008
ChangeLog-2009
ChangeLog-2010
ChangeLog-2011
ChangeLog-2012
ChangeLog-2013
ChangeLog-2014
ChangeLog-2015
ChangeLog-2016
ChangeLog-2017
ChangeLog-2018
ChangeLog-2019
ChangeLog-2020
ChangeLog-2021
ChangeLog-2022
ChangeLog.dataflow
ChangeLog.gimple-classes
ChangeLog.graphite
ChangeLog.jit
ChangeLog.lib
ChangeLog.ptr
ChangeLog.tree-ssa
ChangeLog.tuples
cif-code.def
collect-utils.cc
collect-utils.h
collect2-aix.cc
collect2-aix.h
collect2.cc
collect2.h
color-macros.h
combine-stack-adj.cc
combine.cc combine: Fix handling of unsigned constants 2023-10-15 11:20:01 +02:00
common.md
common.opt core: Support heap-based trampolines 2023-10-22 14:01:06 +01:00
compare-elim.cc
conditions.h
config.build
config.gcc target: Support heap-based trampolines 2023-10-22 14:01:30 +01:00
config.host
config.in Darwin, rpaths: Add --with-darwin-extra-rpath. 2023-10-22 19:30:29 +01:00
configure Darwin, rpaths: Add --with-darwin-extra-rpath. 2023-10-22 19:30:29 +01:00
configure.ac Darwin, rpaths: Add --with-darwin-extra-rpath. 2023-10-22 19:30:29 +01:00
context.cc
context.h
convert.cc Use error_mark_node after error in convert 2023-10-23 03:55:15 -07:00
convert.h
COPYING
COPYING.LIB
COPYING3
COPYING3.LIB
coretypes.h core: Support heap-based trampolines 2023-10-22 14:01:06 +01:00
coroutine-builtins.def
coroutine-passes.cc
coverage.cc
coverage.h
cppbuiltin.cc
cppbuiltin.h
cppdefault.cc
cppdefault.h
cprop.cc
cse.cc cse: Workaround GCC < 5 bug in cse_insn [PR111852] 2023-10-18 17:01:26 +02:00
cselib.cc
cselib.h
cstamp-h.in
ctfc.cc
ctfc.h
ctfout.cc
data-streamer-in.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
data-streamer-out.cc
data-streamer.cc
data-streamer.h Remove poly_int_pod 2023-09-29 17:55:12 +01:00
DATESTAMP Daily bump. 2023-10-24 00:17:34 +00:00
dbgcnt.cc
dbgcnt.def math-opts: Add dbgcounter for FMA formation 2023-09-12 19:23:20 +02:00
dbgcnt.h
dce.cc
dce.h
ddg.cc
ddg.h
debug.cc
debug.h
defaults.h
DEV-PHASE
df-core.cc
df-problems.cc
df-scan.cc
df.h
dfp.cc
dfp.h
diagnostic-client-data-hooks.h
diagnostic-color.cc
diagnostic-color.h
diagnostic-core.h diagnostic: rename new permerror overloads 2023-10-19 11:44:13 -04:00
diagnostic-diagram.h
diagnostic-event-id.h diagnostics: support multithreaded diagnostic paths 2023-09-14 16:28:45 -04:00
diagnostic-format-json.cc diagnostics: add diagnostic_output_format class 2023-10-02 12:16:55 -04:00
diagnostic-format-sarif.cc diagnostics: add diagnostic_output_format class 2023-10-02 12:16:55 -04:00
diagnostic-format-sarif.h
diagnostic-metadata.h
diagnostic-path.h diagnostics: support multithreaded diagnostic paths 2023-09-14 16:28:45 -04:00
diagnostic-show-locus.cc diagnostics: add diagnostic_output_format class 2023-10-02 12:16:55 -04:00
diagnostic-spec.cc
diagnostic-spec.h
diagnostic-text-art.h
diagnostic-url.h
diagnostic.cc diagnostic: rename new permerror overloads 2023-10-19 11:44:13 -04:00
diagnostic.def
diagnostic.h diagnostics: add diagnostic_output_format class 2023-10-02 12:16:55 -04:00
digraph.cc
digraph.h
dojump.cc
dojump.h
dominance.cc
dominance.h
domwalk.cc
domwalk.h
double-int.cc
double-int.h wide-int: Fix build with gcc < 12 or clang++ [PR111787] 2023-10-12 17:20:36 +02:00
dse.cc DSE: Fix ICE when the mode with access_size don't exist on the target[PR111590] 2023-09-27 16:27:51 +08:00
dump-context.h
dumpfile.cc diagnostics: add ctors to text_info; add m_ prefixes to fields 2023-10-03 09:39:16 -04:00
dumpfile.h
dwarf2asm.cc
dwarf2asm.h
dwarf2cfi.cc Remove poly_int_pod 2023-09-29 17:55:12 +01:00
dwarf2ctf.cc
dwarf2ctf.h
dwarf2out.cc dwarf2out: Stop using wide_int in GC structures 2023-10-12 10:45:27 +02:00
dwarf2out.h dwarf2out: Stop using wide_int in GC structures 2023-10-12 10:45:27 +02:00
early-remat.cc
edit-context.cc vec.h: Make some ops work with non-trivially copy constructible and/or destructible types 2023-09-28 12:06:03 +02:00
edit-context.h
emit-rtl.cc rtl: relax validate_subreg to allow paradoxical subregs that change mode 2023-10-02 11:50:24 +01:00
emit-rtl.h Remove poly_int_pod 2023-09-29 17:55:12 +01:00
errors.cc
errors.h
escaped_string.h
et-forest.cc
et-forest.h
except.cc
except.h
exec-tool.in
explow.cc Fix minor problem in stack probing 2023-10-16 17:16:12 -06:00
explow.h
expmed.cc
expmed.h
expr.cc Expand: Enable vector mode for by pieces compares 2023-10-23 09:17:17 +08:00
expr.h Remove poly_int_pod 2023-09-29 17:55:12 +01:00
fibonacci_heap.cc
fibonacci_heap.h
file-find.cc
file-find.h
file-prefix-map.cc
file-prefix-map.h
final.cc
fixed-value.cc
fixed-value.h
flag-types.h Control flow redundancy hardening 2023-10-20 07:50:33 -03:00
flags.h
fold-const-call.cc
fold-const-call.h
fold-const.cc PR111648: Fix wrong code-gen due to incorrect VEC_PERM_EXPR folding. 2023-10-19 00:29:38 +05:30
fold-const.h Remove poly_int_pod 2023-09-29 17:55:12 +01:00
fold-mem-offsets.cc Implement new RTL optimizations pass: fold-mem-offsets 2023-10-16 13:08:57 -06:00
fp-test.cc
FSFChangeLog
FSFChangeLog.10
FSFChangeLog.11
function-abi.cc
function-abi.h
function-tests.cc
function.cc Handle epilogues that contain jumps 2023-10-17 23:45:43 +01:00
function.h Remove poly_int_pod 2023-09-29 17:55:12 +01:00
fwprop.cc
gcc-ar.cc
gcc-main.cc
gcc-plugin.h
gcc-rich-location.cc
gcc-rich-location.h
gcc-symtab.h
gcc.cc Driver: Provide a spec to insert rpaths for compiler lib dirs. 2023-10-22 19:26:45 +01:00
gcc.h
gcov-counter.def
gcov-dump.cc
gcov-io.cc
gcov-io.h
gcov-tool.cc
gcov.cc
gcse-common.cc
gcse-common.h
gcse.cc
gcse.h
gdbasan.in
gdbhooks.py
gdbinit.in
gen-pass-instances.awk
genattr-common.cc
genattr.cc
genattrtab.cc
genautomata.cc gcc: Rename TRUE/FALSE to true/false in *.cc files 2023-08-25 15:28:29 +02:00
gencfn-macros.cc
gencheck.cc
genchecksum.cc
gencodes.cc
genconditions.cc
genconfig.cc
genconstants.cc
genemit.cc
genenums.cc
generic-match-head.cc Fix PR 110954: wrong code with cmp | !cmp 2023-08-10 23:51:07 -07:00
generic-match.h
genextract.cc
genflags.cc
gengenrtl.cc
gengtype-lex.l
gengtype-parse.cc
gengtype-state.cc gcc: Rename TRUE/FALSE to true/false in *.cc files 2023-08-25 15:28:29 +02:00
gengtype.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
gengtype.h
genhooks.cc rust: Add skeleton support and documentation for targetrustm hooks. 2023-09-21 11:15:02 +02:00
genmatch.cc libcpp: eliminate COMBINE_LOCATION_DATA 2023-10-08 18:43:16 -04:00
genmddeps.cc
genmddump.cc
genmodes.cc Remove poly_int_pod 2023-09-29 17:55:12 +01:00
genmultilib
genopinit.cc
genoutput.cc
genpeep.cc
genpreds.cc
genrecog.cc Revert "Fix type error of 'switch (SUBREG_BYTE (op)).'" 2023-08-14 18:16:53 +08:00
gensupport.cc recog: Support space in "[ cons" 2023-10-03 10:39:05 +02:00
gensupport.h
gentarget-def.cc
genversion.cc
ggc-common.cc ggc: do not wipe out unrelated data via gt_ggc_rtab [PR111505] 2023-09-29 09:50:00 +01:00
ggc-internal.h
ggc-none.cc
ggc-page.cc
ggc-tests.cc
ggc.h ggc, jit: forcibly clear GTY roots in jit 2023-09-14 16:28:44 -04:00
gimple-array-bounds.cc gcc: Rename TRUE/FALSE to true/false in *.cc files 2023-08-25 15:28:29 +02:00
gimple-array-bounds.h
gimple-builder.cc
gimple-builder.h
gimple-expr.cc Middle-end _BitInt support [PR102989] 2023-09-06 17:28:24 +02:00
gimple-expr.h
gimple-fold.cc use more get_range_query 2023-10-16 15:34:51 +08:00
gimple-fold.h
gimple-harden-conditionals.cc Fix profile update in gimple-harden-conditionals.cc 2023-08-24 13:46:10 +02:00
gimple-harden-control-flow.cc bootstrap: tm_p.h requires memmodel.h on SPARC. 2023-10-20 15:53:17 -04:00
gimple-if-to-switch.cc
gimple-isel.cc
gimple-iterator.cc
gimple-iterator.h
gimple-laddress.cc
gimple-loop-interchange.cc
gimple-loop-jam.cc
gimple-loop-versioning.cc
gimple-low.cc OpenMP: Add OMP_STRUCTURED_BLOCK and GIMPLE_OMP_STRUCTURED_BLOCK. 2023-08-25 19:42:50 +00:00
gimple-low.h
gimple-lower-bitint.cc lowerbitint: Fix 2 bitint lowering bugs [PR111625] 2023-09-30 11:28:44 +02:00
gimple-lower-bitint.h _BitInt lowering support [PR102989] 2023-09-06 17:28:39 +02:00
gimple-match-exports.cc gimple_fold: Support COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold 2023-08-24 18:46:03 +08:00
gimple-match-head.cc gimple-match-head: Fix a pasto in function comment 2023-09-30 11:35:24 +02:00
gimple-match.h gimple_fold: Support COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold 2023-08-24 18:46:03 +08:00
gimple-predicate-analysis.cc tree-optimization/111489 - turn uninit limits to params 2023-09-20 11:20:24 +02:00
gimple-predicate-analysis.h
gimple-predict.h
gimple-pretty-print.cc c/111468 - dump unordered compare operators in their GIMPLE form with -gimple 2023-09-19 14:43:13 +02:00
gimple-pretty-print.h
gimple-range-cache.cc Ensure float equivalences include + and - zero. 2023-10-09 12:15:17 -04:00
gimple-range-cache.h
gimple-range-edge.cc
gimple-range-edge.h
gimple-range-fold.cc use more get_range_query 2023-10-16 15:34:51 +08:00
gimple-range-fold.h
gimple-range-gori.cc Remove unused get_identity_relation. 2023-10-09 12:15:17 -04:00
gimple-range-gori.h Add outgoing range vector calcualtion API 2023-10-05 15:00:38 -04:00
gimple-range-infer.cc
gimple-range-infer.h
gimple-range-op.cc
gimple-range-op.h
gimple-range-path.cc
gimple-range-path.h
gimple-range-phi.cc Phi analyzer - Initialize with range instead of a tree. 2023-08-23 14:47:22 -04:00
gimple-range-phi.h Phi analyzer - Initialize with range instead of a tree. 2023-08-23 14:47:22 -04:00
gimple-range-tests.cc
gimple-range-trace.cc
gimple-range-trace.h
gimple-range.cc Add a dom based ranger for fast VRP. 2023-10-05 15:04:01 -04:00
gimple-range.h Add a dom based ranger for fast VRP. 2023-10-05 15:04:01 -04:00
gimple-ssa-backprop.cc Fix PR 110386: backprop vs ABSU_EXPR 2023-09-25 00:07:49 -07:00
gimple-ssa-isolate-paths.cc
gimple-ssa-nonnull-compare.cc
gimple-ssa-split-paths.cc
gimple-ssa-sprintf.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
gimple-ssa-store-merging.cc Remove poly_int_pod 2023-09-29 17:55:12 +01:00
gimple-ssa-strength-reduction.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
gimple-ssa-warn-access.cc use more get_range_query 2023-10-16 15:34:51 +08:00
gimple-ssa-warn-access.h
gimple-ssa-warn-alloca.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
gimple-ssa-warn-restrict.cc
gimple-ssa-warn-restrict.h
gimple-ssa.h
gimple-streamer-in.cc
gimple-streamer-out.cc
gimple-streamer.h
gimple-walk.cc OpenMP: Add OMP_STRUCTURED_BLOCK and GIMPLE_OMP_STRUCTURED_BLOCK. 2023-08-25 19:42:50 +00:00
gimple-walk.h
gimple-warn-recursion.cc
gimple.cc Control flow redundancy hardening 2023-10-20 07:50:33 -03:00
gimple.def OpenMP: Add OMP_STRUCTURED_BLOCK and GIMPLE_OMP_STRUCTURED_BLOCK. 2023-08-25 19:42:50 +00:00
gimple.h Control flow redundancy hardening 2023-10-20 07:50:33 -03:00
gimplify-me.cc
gimplify-me.h
gimplify.cc OpenMP: Avoid ICE with LTO and 'omp allocate' 2023-10-18 13:05:35 +02:00
gimplify.h
glimits.h C _BitInt support [PR102989] 2023-09-06 17:34:49 +02:00
godump.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
graph.cc
graph.h
graphds.cc
graphds.h
graphite-dependences.cc
graphite-isl-ast-to-gimple.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
graphite-optimize-isl.cc
graphite-poly.cc
graphite-scop-detection.cc
graphite-sese-to-poly.cc
graphite.cc Check that passes do not forget to define profile 2023-08-24 15:10:46 +02:00
graphite.h
graphviz.cc diagnostics: add ctors to text_info; add m_ prefixes to fields 2023-10-03 09:39:16 -04:00
graphviz.h
gsstruct.def
gsyms.h
gsyslimits.h
gtm-builtins.def
haifa-sched.cc
hard-reg-set.h
hash-map-tests.cc
hash-map-traits.h
hash-map.h
hash-set-tests.cc
hash-set.h
hash-table.cc
hash-table.h
hash-traits.h
highlev-plugin-common.h
hooks.cc
hooks.h
host-default.cc
hosthooks-def.h
hosthooks.h
hw-doloop.cc
hw-doloop.h
hwint.cc
hwint.h
ifcvt.cc
ifcvt.h
inchash.cc
inchash.h Remove poly_int_pod 2023-09-29 17:55:12 +01:00
incpath.cc
incpath.h
init-regs.cc
input.cc libcpp: eliminate COMBINE_LOCATION_DATA 2023-10-08 18:43:16 -04:00
input.h diagnostics: add diagnostic_output_format class 2023-10-02 12:16:55 -04:00
insn-addr.h
insn-notes.def
int-vector-builder.h
internal-fn.cc internal-fn: Support undefined rtx for uninitialized SSA_NAME[PR110751] 2023-09-20 18:27:08 +02:00
internal-fn.def Middle-end _BitInt support [PR102989] 2023-09-06 17:28:24 +02:00
internal-fn.h Middle-end _BitInt support [PR102989] 2023-09-06 17:28:24 +02:00
intl.cc
intl.h
ipa-comdats.cc
ipa-cp.cc ipa: Remove ipa_bits 2023-10-06 08:54:42 +02:00
ipa-devirt.cc
ipa-fnsummary.cc vec.h: Make some ops work with non-trivially copy constructible and/or destructible types 2023-09-28 12:06:03 +02:00
ipa-fnsummary.h
ipa-free-lang-data.cc
ipa-icf-gimple.cc
ipa-icf-gimple.h
ipa-icf.cc
ipa-icf.h
ipa-inline-analysis.cc
ipa-inline-transform.cc
ipa-inline.cc
ipa-inline.h
ipa-modref-tree.cc Remove poly_int_pod 2023-09-29 17:55:12 +01:00
ipa-modref-tree.h
ipa-modref.cc ipa-modref: Fix dumping 2023-10-03 18:49:01 +02:00
ipa-modref.h ipa-modref: Fix dumping 2023-10-03 18:49:01 +02:00
ipa-param-manipulation.cc Revert "ipa: Self-DCE of uses of removed call LHSs (PR 108007)" 2023-10-05 14:10:00 +02:00
ipa-param-manipulation.h Revert "ipa: Self-DCE of uses of removed call LHSs (PR 108007)" 2023-10-05 14:10:00 +02:00
ipa-polymorphic-call.cc
ipa-predicate.cc
ipa-predicate.h
ipa-profile.cc
ipa-prop.cc ipa: Remove ipa_bits 2023-10-06 08:54:42 +02:00
ipa-prop.h ipa: Remove ipa_bits 2023-10-06 08:54:42 +02:00
ipa-pure-const.cc
ipa-ref.cc
ipa-ref.h
ipa-reference.cc
ipa-reference.h
ipa-split.cc
ipa-sra.cc ipa: Remove ipa_bits 2023-10-06 08:54:42 +02:00
ipa-utils.cc ipa-utils: avoid uninitialized probabilities on ICF [PR111559] 2023-10-05 17:14:27 +01:00
ipa-utils.h
ipa-visibility.cc
ipa.cc
ira-build.cc
ira-color.cc ira: Consider save/restore costs of callee-save registers [PR110071] 2023-09-19 20:52:34 -05:00
ira-conflicts.cc
ira-costs.cc Revert "[RA]: Improve cost calculation of pseudos with equivalences" 2023-09-28 11:57:45 -04:00
ira-emit.cc
ira-int.h Remove poly_int_pod 2023-09-29 17:55:12 +01:00
ira-lives.cc
ira.cc [RA]: Add flag for checking IRA in progress 2023-09-28 09:42:02 -04:00
ira.h
is-a.h
iterator-utils.h
json.cc
json.h p1689r5: initial support 2023-09-19 17:32:23 -04:00
jump.cc
langhooks-def.h
langhooks.cc
langhooks.h
LANGUAGES
lcm.cc LCM: Export 2 helpful functions as global for VSETVL PASS use in RISC-V backend 2023-08-21 17:18:14 +08:00
lcm.h LCM: Export 2 helpful functions as global for VSETVL PASS use in RISC-V backend 2023-08-21 17:18:14 +08:00
libfuncs.h
limitx.h
limity.h
lists.cc
lock-and-run.sh
logical-location.h
loop-doloop.cc
loop-init.cc
loop-invariant.cc
loop-iv.cc
loop-unroll.cc
loop-unroll.h
lower-subreg.cc
lower-subreg.h
lra-assigns.cc rtl-optimization/110587 - speedup find_hard_regno_for_1 2023-08-09 08:46:58 +02:00
lra-coalesce.cc
lra-constraints.cc [APX EGPR] middle-end: Add index_reg_class with insn argument. 2023-10-07 16:34:29 +08:00
lra-eliminations.cc Remove poly_int_pod 2023-09-29 17:55:12 +01:00
lra-int.h [LRA]: Spill pseudos assigned to fp when fp->sp elimination became impossible 2023-08-16 12:12:51 -04:00
lra-lives.cc
lra-remat.cc
lra-spills.cc [LRA]: When assigning stack slots to pseudos previously assigned to fp consider other spilled pseudos 2023-08-17 12:01:49 -04:00
lra.cc [RA]: Add flag for checking IRA in progress 2023-09-28 09:42:02 -04:00
lra.h
lto-cgraph.cc
lto-compress.cc
lto-compress.h
lto-opts.cc
lto-section-in.cc
lto-section-names.h
lto-section-out.cc
lto-streamer-in.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
lto-streamer-out.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
lto-streamer.cc
lto-streamer.h
lto-wrapper.cc
machmode.def
machmode.h Remove poly_int_pod 2023-09-29 17:55:12 +01:00
main.cc
make-unique.h
Makefile.in Testsuite: allow non-installed testing on darwin 2023-10-22 19:30:54 +01:00
match.pd move the (a-b) CMP 0 ? (a-b) : (b-a) optimization from fold_cond_expr_with_comparison to match 2023-10-23 03:55:15 -07:00
mcf.cc
mem-stats-traits.h
mem-stats.h
memmodel.h
memory-block.cc
memory-block.h
mkconfig.sh
mode-classes.def
mode-switching.cc Mode-Switching: Fix SET_SRC ICE for create_pre_exit 2023-08-15 10:27:59 +08:00
modulo-sched.cc
multiple_target.cc
mux-utils.h
obstack-utils.h
omp-api.h OpenMP: C front end support for imperfectly-nested loops 2023-08-25 19:42:50 +00:00
omp-builtins.def
omp-expand.cc OpenMP: Add OMP_STRUCTURED_BLOCK and GIMPLE_OMP_STRUCTURED_BLOCK. 2023-08-25 19:42:50 +00:00
omp-expand.h
omp-general.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
omp-general.h OpenMP: C front end support for imperfectly-nested loops 2023-08-25 19:42:50 +00:00
omp-low.cc Remove poly_int_pod 2023-09-29 17:55:12 +01:00
omp-low.h
omp-oacc-kernels-decompose.cc
omp-oacc-neuter-broadcast.cc
omp-offload.cc
omp-offload.h
omp-simd-clone.cc vect: Use inbranch simdclones in masked loops 2023-10-19 18:30:25 +01:00
omp-simd-clone.h
ONEWS
opt-functions.awk RISC-V:Optimize the MASK opt generation 2023-10-01 16:09:28 +08:00
opt-gather.awk
opt-include.awk
opt-problem.cc diagnostics: add ctors to text_info; add m_ prefixes to fields 2023-10-03 09:39:16 -04:00
opt-problem.h
opt-read.awk options: Prevent multidimensional arrays [PR111664] 2023-10-04 21:37:40 +08:00
opt-suggestions.cc
opt-suggestions.h
optabs-libfuncs.cc
optabs-libfuncs.h
optabs-query.cc
optabs-query.h
optabs-tree.cc
optabs-tree.h
optabs.cc middle-end: Improved RTL expansion of 1LL << x. 2023-10-15 14:53:22 +01:00
optabs.def VECT: Add LEN_FOLD_EXTRACT_LAST pattern 2023-08-22 22:10:25 +08:00
optabs.h internal-fn: Support undefined rtx for uninitialized SSA_NAME[PR110751] 2023-09-20 18:27:08 +02:00
optc-gen.awk
optc-save-gen.awk
opth-gen.awk options: Define TARGET_<NAME>_P and TARGET_<NAME>_OPTS_P macro for Mask and InverseMask 2023-10-11 13:21:08 -07:00
optinfo-emit-json.cc
optinfo-emit-json.h
optinfo.cc
optinfo.h
opts-common.cc
opts-diagnostic.h
opts-global.cc
opts-jobserver.h
opts.cc Remove obsolete debugging formats from names list 2023-10-24 09:05:37 +02:00
opts.h
ordered-hash-map-tests.cc gcc: Rename TRUE/FALSE to true/false in *.cc files 2023-08-25 15:28:29 +02:00
ordered-hash-map.h Support get_or_insert in ordered_hash_map 2023-08-08 15:30:44 +02:00
output.h
params.opt Control flow redundancy hardening 2023-10-20 07:50:33 -03:00
pass_manager.h
passes.cc
passes.def Control flow redundancy hardening 2023-10-20 07:50:33 -03:00
plugin.cc Darwin: homogenize spelling of macOS 2023-08-31 18:16:44 +02:00
plugin.def
plugin.h
pointer-query.cc
pointer-query.h
poly-int-types.h Remove poly_int_pod 2023-09-29 17:55:12 +01:00
poly-int.h wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
postreload-gcse.cc
postreload.cc
predict.cc Check that passes do not forget to define profile 2023-08-24 15:10:46 +02:00
predict.def
predict.h
prefix.cc
prefix.h
pretty-print.cc diagnostics: add ctors to text_info; add m_ prefixes to fields 2023-10-03 09:39:16 -04:00
pretty-print.h wide-int-print: Don't print large numbers hexadecimally for print_dec{,s,u} 2023-10-17 14:25:00 +02:00
print-rtl-function.cc
print-rtl.cc
print-rtl.h
print-tree.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
print-tree.h
profile-count.cc Fix undefined behaviour in profile_count::differs_from_p 2023-08-10 18:35:13 +02:00
profile-count.h
profile.cc
profile.h
range-op-float.cc [frange] Remove special casing from unordered operators. 2023-09-20 13:03:14 -04:00
range-op-mixed.h [frange] Add op2_range for operator_not_equal. 2023-09-19 12:30:01 -04:00
range-op-ptr.cc
range-op.cc [irange] Fix typo in contains_zero_p. 2023-09-07 18:13:09 -04:00
range-op.h Add overflow API for plus minus mult on range 2023-08-31 09:56:44 +08:00
range.cc
range.h
read-md.cc
read-md.h
read-rtl-function.cc
read-rtl-function.h
read-rtl.cc
README.Portability
real.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
real.h
realmpfr.cc
realmpfr.h
recog.cc Fix code_helper unused argument warning for fr30 2023-08-17 15:55:27 +02:00
recog.h ivopts: Call valid_mem_ref_p with ifn [PR110248] 2023-08-09 01:16:05 -05:00
ree.cc
reg-notes.def reg-notes.def: Fix up description of REG_NOALIAS 2023-10-12 17:51:00 +01:00
reg-stack.cc
regcprop.cc
regcprop.h
reginfo.cc
regrename.cc
regrename.h
regs.h
regset.h
regstat.cc
reload.cc [APX EGPR] middle-end: Add index_reg_class with insn argument. 2023-10-07 16:34:29 +08:00
reload.h Remove poly_int_pod 2023-09-29 17:55:12 +01:00
reload1.cc [APX EGPR] middle-end: Add insn argument to base_reg_class 2023-10-07 16:34:29 +08:00
reorg.cc
resource.cc
resource.h
rtl-error.cc
rtl-error.h
rtl-iter.h
rtl-ssa.h rtl-ssa: Don't insert after insns that can throw 2023-10-24 11:30:52 +01:00
rtl-tests.cc Fix profiledbootstrap poly_int fallout [PR111642] 2023-10-02 07:20:45 +01:00
rtl.cc
rtl.def
rtl.h wide-int: Fix build with gcc < 12 or clang++ [PR111787] 2023-10-12 17:20:36 +02:00
rtlanal.cc Remove poly_int_pod 2023-09-29 17:55:12 +01:00
rtlanal.h
rtlhash.cc
rtlhash.h
rtlhooks-def.h
rtlhooks.cc
rtx-vector-builder.cc
rtx-vector-builder.h
run-rtl-passes.cc
run-rtl-passes.h
sancov.cc
sanitizer.def
sanopt.cc
sbitmap.cc
sbitmap.h
sched-deps.cc
sched-ebb.cc
sched-int.h
sched-rgn.cc
sel-sched-dump.cc
sel-sched-dump.h
sel-sched-ir.cc
sel-sched-ir.h
sel-sched.cc
sel-sched.h
selftest-diagnostic.cc diagnostics: add diagnostic_output_format class 2023-10-02 12:16:55 -04:00
selftest-diagnostic.h
selftest-rtl.cc
selftest-rtl.h
selftest-run-tests.cc
selftest.cc
selftest.h
sese.cc
sese.h
shortest-paths.h
shrink-wrap.cc Allow targets to check shrink-wrap-separate enabled or not 2023-09-12 09:54:40 +08:00
shrink-wrap.h Allow targets to check shrink-wrap-separate enabled or not 2023-09-12 09:54:40 +08:00
signop.h
simplify-rtx.cc Optimize (ne:SI (subreg:QI (ashift:SI x 7) 0) 0) as (and:SI x 1). 2023-10-11 08:08:04 +01:00
sort.cc
sparseset.cc
sparseset.h
spellcheck-tree.cc
spellcheck-tree.h
spellcheck.cc
spellcheck.h
splay-tree-utils.cc
splay-tree-utils.h
splay-tree-utils.tcc
sreal.cc sreal: Fix typo in function name 2023-10-05 14:28:44 +02:00
sreal.h
ssa-iterators.h
ssa.h
stack-ptr-mod.cc
statistics.cc
statistics.h
stmt.cc
stmt.h
stor-layout.cc middle-end: Avoid calling targetm.c.bitint_type_info inside of gcc_assert [PR102989] 2023-09-07 11:17:04 +02:00
stor-layout.h tree-optimization/111000 - restrict invariant motion of shifts 2023-10-20 13:19:55 +02:00
store-motion.cc
streamer-hooks.cc
streamer-hooks.h
stringpool.cc libcpp: Improve the diagnostic for poisoned identifiers [PR36887] 2023-10-23 18:35:26 -04:00
stringpool.h
substring-locations.cc
substring-locations.h
symbol-summary.h
symtab-clones.cc
symtab-clones.h
symtab-thunks.cc Check that passes do not forget to define profile 2023-08-24 15:10:46 +02:00
symtab-thunks.h
symtab.cc
sync-builtins.def
system.h remove workaround for GCC 4.1-4.3 [PR105606] 2023-09-27 10:38:54 +02:00
target-def.h
target-globals.cc
target-globals.h
target-hooks-macros.h
target-insns.def
target.def Middle-end _BitInt support [PR102989] 2023-09-06 17:28:24 +02:00
target.h Middle-end _BitInt support [PR102989] 2023-09-06 17:28:24 +02:00
targhooks.cc Middle-end _BitInt support [PR102989] 2023-09-06 17:28:24 +02:00
targhooks.h Middle-end _BitInt support [PR102989] 2023-09-06 17:28:24 +02:00
timevar.cc
timevar.def Create a fast VRP pass 2023-10-05 15:04:08 -04:00
timevar.h
toplev.cc libcpp: eliminate COMBINE_LOCATION_DATA 2023-10-08 18:43:16 -04:00
toplev.h libcpp: Improve the diagnostic for poisoned identifiers [PR36887] 2023-10-23 18:35:26 -04:00
tracer.cc
tracer.h
trans-mem.cc
trans-mem.h
tree-affine.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
tree-affine.h
tree-call-cdce.cc
tree-cfg.cc tree-cfg: Add count information when creating new bb in move_sese_region_to_fn 2023-10-17 15:02:29 +01:00
tree-cfg.h
tree-cfgcleanup.cc
tree-cfgcleanup.h
tree-chrec.cc
tree-chrec.h
tree-complex.cc
tree-core.h Control flow redundancy hardening 2023-10-20 07:50:33 -03:00
tree-data-ref.cc vect, omp: inbranch simdclone dropping const 2023-09-27 13:22:24 +01:00
tree-data-ref.h
tree-dfa.cc use more get_range_query 2023-10-16 15:34:51 +08:00
tree-dfa.h Remove poly_int_pod 2023-09-29 17:55:12 +01:00
tree-diagnostic-client-data-hooks.cc
tree-diagnostic-path.cc diagnostics: add diagnostic_output_format class 2023-10-02 12:16:55 -04:00
tree-diagnostic.cc diagnostics: add ctors to text_info; add m_ prefixes to fields 2023-10-03 09:39:16 -04:00
tree-diagnostic.h
tree-dump.cc
tree-dump.h
tree-eh.cc return edge in make_eh_edges 2023-10-20 00:35:17 -03:00
tree-eh.h return edge in make_eh_edges 2023-10-20 00:35:17 -03:00
tree-emutls.cc
tree-hash-traits.h
tree-hasher.h
tree-if-conv.cc ifcvt: Don't lower bitfields with non-constant offsets [PR 111882] 2023-10-20 17:02:32 +01:00
tree-if-conv.h
tree-inline.cc ipa/111914 - perform parameter init after remapping types 2023-10-23 15:30:02 +02:00
tree-inline.h
tree-into-ssa.cc
tree-into-ssa.h
tree-iterator.cc
tree-iterator.h
tree-logical-location.cc
tree-logical-location.h
tree-loop-distribution.cc middle-end: maintain LCSSA throughout loop peeling 2023-10-18 09:03:06 +01:00
tree-nested.cc core: Support heap-based trampolines 2023-10-22 14:01:06 +01:00
tree-nested.h
tree-nrv.cc
tree-object-size.cc
tree-object-size.h
tree-outof-ssa.cc tree-optimization/111123 - indirect clobbers thrown away too early 2023-08-24 15:10:28 +02:00
tree-outof-ssa.h
tree-parloops.cc parloops: Allow poly nit and bound 2023-10-19 18:27:18 +01:00
tree-parloops.h
tree-pass.h Control flow redundancy hardening 2023-10-20 07:50:33 -03:00
tree-phinodes.cc
tree-phinodes.h
tree-predcom.cc
tree-pretty-print.cc wide-int-print: Don't print large numbers hexadecimally for print_dec{,s,u} 2023-10-17 14:25:00 +02:00
tree-pretty-print.h diagnostics: add ctors to text_info; add m_ prefixes to fields 2023-10-03 09:39:16 -04:00
tree-profile.cc
tree-scalar-evolution.cc tree-optimization/111445 - simple_iv simplification fault 2023-10-20 15:45:37 +02:00
tree-scalar-evolution.h middle-end: Refactor vectorizer loop conditionals and separate out IV to new variables 2023-10-18 09:02:12 +01:00
tree-sra.cc tree-optimization/111916 - SRA of BIT_FIELD_REF of constant pool entries 2023-10-23 15:30:02 +02:00
tree-sra.h
tree-ssa-address.cc ivopts: Call valid_mem_ref_p with ifn [PR110248] 2023-08-09 01:16:05 -05:00
tree-ssa-address.h ivopts: Call valid_mem_ref_p with ifn [PR110248] 2023-08-09 01:16:05 -05:00
tree-ssa-alias-compare.h
tree-ssa-alias.cc middle-end: Apply MASK_LEN_LOAD_LANES/MASK_LEN_STORE_LANES to ivopts/alias 2023-08-30 15:31:43 +08:00
tree-ssa-alias.h
tree-ssa-ccp.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
tree-ssa-ccp.h
tree-ssa-coalesce.cc _BitInt lowering support [PR102989] 2023-09-06 17:28:39 +02:00
tree-ssa-coalesce.h
tree-ssa-copy.cc
tree-ssa-dce.cc tree-optimization/111773 - avoid CD-DCE of noreturn special calls 2023-10-13 08:34:05 +02:00
tree-ssa-dce.h
tree-ssa-dom.cc
tree-ssa-dom.h
tree-ssa-dse.cc
tree-ssa-dse.h
tree-ssa-forwprop.cc tree-optimization/111294 - better DCE after forwprop 2023-09-14 13:15:10 +02:00
tree-ssa-ifcombine.cc tree-optimization/111070 - fix ICE with recent ifcombine fix 2023-08-21 10:07:30 +02:00
tree-ssa-live.cc use *_grow_cleared rather than *_grow on vec<bitmap_head> 2023-09-29 09:35:01 +02:00
tree-ssa-live.h _BitInt lowering support [PR102989] 2023-09-06 17:28:39 +02:00
tree-ssa-loop-ch.cc Fix handling of static exists in loop_ch 2023-08-23 11:17:20 +02:00
tree-ssa-loop-im.cc tree-optimization/111000 - restrict invariant motion of shifts 2023-10-20 13:19:55 +02:00
tree-ssa-loop-ivcanon.cc wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
tree-ssa-loop-ivopts.cc tree-optimization/110243 - IVOPTs introducing undefined overflow 2023-10-20 15:15:25 +02:00
tree-ssa-loop-ivopts.h
tree-ssa-loop-manip.cc
tree-ssa-loop-manip.h
tree-ssa-loop-niter.cc wide-int: Fix estimation of buffer sizes for wide_int printing [PR111800] 2023-10-15 14:23:14 +02:00
tree-ssa-loop-niter.h
tree-ssa-loop-prefetch.cc
tree-ssa-loop-split.cc Fix division by zero in loop splitting 2023-08-11 00:23:14 +02:00
tree-ssa-loop-unswitch.cc tree-optimization/111917 - bougs IL after guard hoisting 2023-10-23 12:32:00 +02:00
tree-ssa-loop.cc
tree-ssa-loop.h
tree-ssa-math-opts.cc tree-ssa-math-opts: Fix up match_uaddc_usubc [PR111845] 2023-10-18 12:37:40 +02:00
tree-ssa-math-opts.h
tree-ssa-operands.cc
tree-ssa-operands.h
tree-ssa-phiopt.cc PHIOPT: Fix minmax_replacement for three way 2023-09-26 14:55:01 +00:00
tree-ssa-phiprop.cc
tree-ssa-pre.cc tree-optimization/110963 - more PRE when optimizing for size 2023-08-15 11:07:25 +02:00
tree-ssa-propagate.cc tree-optimization/111397 - missed copy propagation involving abnormal dest 2023-09-13 10:20:31 +02:00
tree-ssa-propagate.h
tree-ssa-reassoc.cc tree-optimization/111614 - missing convert in undistribute_bitref_for_vector 2023-09-28 11:22:47 +02:00
tree-ssa-reassoc.h
tree-ssa-sccvn.cc tree-optimization/111751 - support 1024 bit vector constant reinterpretation 2023-10-10 14:17:23 +02:00
tree-ssa-sccvn.h Remove poly_int_pod 2023-09-29 17:55:12 +01:00
tree-ssa-scopedtables.cc
tree-ssa-scopedtables.h
tree-ssa-sink.cc tree-optimization/110924 - fix vop liveness for noreturn const CFG parts 2023-08-08 14:24:12 +02:00
tree-ssa-strlen.cc tree-ssa-strlen: optimization skips clobbering store [PR111519] 2023-10-11 09:09:28 +02:00
tree-ssa-strlen.h
tree-ssa-structalias.cc
tree-ssa-tail-merge.cc tree-ssa-tail-merge: Fix a comment typo 2023-09-05 09:34:09 +02:00
tree-ssa-ter.cc
tree-ssa-ter.h
tree-ssa-threadbackward.cc tree-optimization/111294 - backwards threader PHI costing 2023-09-18 10:56:18 +02:00
tree-ssa-threadedge.cc
tree-ssa-threadedge.h
tree-ssa-threadupdate.cc tree-optimization/111465 - bougs jump threading with no-copy src block 2023-09-19 13:23:40 +02:00
tree-ssa-threadupdate.h
tree-ssa-uncprop.cc
tree-ssa-uninit.cc
tree-ssa.cc middle-end/111818 - failed DECL_NOT_GIMPLE_REG_P setting of volatile 2023-10-17 08:23:33 +02:00
tree-ssa.h
tree-ssanames.cc ssa_name_has_boolean_range vs signed-boolean:31 types 2023-10-17 22:44:19 +00:00
tree-ssanames.h
tree-stdarg.cc
tree-stdarg.h
tree-streamer-in.cc
tree-streamer-out.cc
tree-streamer.cc
tree-streamer.h LTO: Get rid of 'lto_mode_identity_table' 2023-09-19 14:13:14 +02:00
tree-switch-conversion.cc Middle-end _BitInt support [PR102989] 2023-09-06 17:28:24 +02:00
tree-switch-conversion.h
tree-tailcall.cc
tree-vect-data-refs.cc vect: Fix vect_get_smallest_scalar_type for simd clones 2023-10-19 18:30:15 +01:00
tree-vect-generic.cc
tree-vect-loop-manip.cc middle-end: don't keep .MEM guard nodes for PHI nodes who dominate loop [PR111860] 2023-10-23 14:08:10 +01:00
tree-vect-loop.cc Avoid compile time hog on vect_peel_nonlinear_iv_init for nonlinear induction vec_step_op_mul when iteration count is too big. 2023-10-23 09:15:36 +08:00
tree-vect-patterns.cc middle-end: Enable bit-field vectorization to work correctly when we're vectoring inside conds 2023-10-20 08:08:54 +01:00
tree-vect-slp-patterns.cc
tree-vect-slp.cc tree-optimization/111915 - mixing grouped and non-grouped accesses 2023-10-23 15:30:02 +02:00
tree-vect-stmts.cc vect: Allow same precision for bit-precision conversions. 2023-10-23 18:42:11 +02:00
tree-vector-builder.cc
tree-vector-builder.h
tree-vectorizer.cc middle-end: Refactor vectorizer loop conditionals and separate out IV to new variables 2023-10-18 09:02:12 +01:00
tree-vectorizer.h middle-end: maintain LCSSA throughout loop peeling 2023-10-18 09:03:06 +01:00
tree-vrp.cc Create a fast VRP pass 2023-10-05 15:04:08 -04:00
tree-vrp.h
tree.cc core: Support heap-based trampolines 2023-10-22 14:01:06 +01:00
tree.def Middle-end _BitInt support [PR102989] 2023-09-06 17:28:24 +02:00
tree.h tree-optimization/111000 - restrict invariant motion of shifts 2023-10-20 13:19:55 +02:00
treestruct.def
tristate.cc
tristate.h
tsan.cc
tsan.h
tsystem.h
typeclass.h Middle-end _BitInt support [PR102989] 2023-09-06 17:28:24 +02:00
typed-splay-tree.cc
typed-splay-tree.h
ubsan.cc middle-end: use MAX_FIXED_MODE_SIZE instead of precidion of TImode/DImode 2023-09-20 09:45:42 +02:00
ubsan.h ubsan: _BitInt -fsanitize=undefined support [PR102989] 2023-09-06 17:30:07 +02:00
valtrack.cc
valtrack.h
value-pointer-equiv.cc
value-pointer-equiv.h
value-prof.cc
value-prof.h
value-query.cc
value-query.h
value-range-pretty-print.cc wide-int: Fix estimation of buffer sizes for wide_int printing [PR111800] 2023-10-15 14:23:14 +02:00
value-range-pretty-print.h
value-range-storage.cc middle-end: Allow _BitInt(65535) [PR102989] 2023-10-14 09:35:44 +02:00
value-range-storage.h middle-end: Allow _BitInt(65535) [PR102989] 2023-10-14 09:35:44 +02:00
value-range.cc wide-int: Fix estimation of buffer sizes for wide_int printing [PR111800] 2023-10-15 14:23:14 +02:00
value-range.h wide-int: Allow up to 16320 bits wide_int and change widest_int precision to 32640 bits [PR102989] 2023-10-12 16:01:12 +02:00
value-relation.cc Do not add partial equivalences with no uses. 2023-10-13 09:13:10 -04:00
value-relation.h Ensure float equivalences include + and - zero. 2023-10-09 12:15:17 -04:00
var-tracking.cc
varasm.cc middle-end: Avoid calling targetm.c.bitint_type_info inside of gcc_assert [PR102989] 2023-09-07 11:17:04 +02:00
varasm.h
varpool.cc
vec-perm-indices.cc
vec-perm-indices.h
vec.cc
vec.h vec.h: Uncomment static_assert 2023-09-30 11:26:14 +02:00
vector-builder.h
vmsdbg.h
vmsdbgout.cc
vr-values.cc Middle-end _BitInt support [PR102989] 2023-09-06 17:28:24 +02:00
vr-values.h VR-VALUES [PR28794]: optimize compare assignments also 2023-08-08 08:41:14 -07:00
vtable-verify.cc
vtable-verify.h
warning-control.cc
web.cc
wide-int-bitmask.h
wide-int-print.cc wide-int-print: Don't print large numbers hexadecimally for print_dec{,s,u} 2023-10-17 14:25:00 +02:00
wide-int-print.h wide-int-print: Don't print large numbers hexadecimally for print_dec{,s,u} 2023-10-17 14:25:00 +02:00
wide-int.cc wide-int: Fix estimation of buffer sizes for wide_int printing [PR111800] 2023-10-15 14:23:14 +02:00
wide-int.h middle-end: Allow _BitInt(65535) [PR102989] 2023-10-14 09:35:44 +02:00
xcoff.h

Copyright (C) 2000-2023 Free Software Foundation, Inc.

This file is intended to contain a few notes about writing C code
within GCC so that it compiles without error on the full range of
compilers GCC needs to be able to compile on.

The problem is that many ISO-standard constructs are not accepted by
either old or buggy compilers, and we keep getting bitten by them.
This knowledge until now has been sparsely spread around, so I
thought I'd collect it in one useful place.  Please add and correct
any problems as you come across them.

I'm going to start from a base of the ISO C90 standard, since that is
probably what most people code to naturally.  Obviously using
constructs introduced after that is not a good idea.

For the complete coding style conventions used in GCC, please read
http://gcc.gnu.org/codingconventions.html


String literals
---------------

Some compilers like MSVC++ have fairly low limits on the maximum
length of a string literal; 509 is the lowest we've come across.  You
may need to break up a long printf statement into many smaller ones.


Empty macro arguments
---------------------

ISO C (6.8.3 in the 1990 standard) specifies the following:

If (before argument substitution) any argument consists of no
preprocessing tokens, the behavior is undefined.

This was relaxed by ISO C99, but some older compilers emit an error,
so code like

#define foo(x, y) x y
foo (bar, )

needs to be coded in some other way.


Avoid unnecessary test before free
----------------------------------

Since SunOS 4 stopped being a reasonable portability target,
(which happened around 2007) there has been no need to guard
against "free (NULL)".  Thus, any guard like the following
constitutes a redundant test:

  if (P)
    free (P);

It is better to avoid the test.[*]
Instead, simply free P, regardless of whether it is NULL.

[*] However, if your profiling exposes a test like this in a
performance-critical loop, say where P is nearly always NULL, and
the cost of calling free on a NULL pointer would be prohibitively
high, consider using __builtin_expect, e.g., like this:

  if (__builtin_expect (ptr != NULL, 0))
    free (ptr);



Trigraphs
---------

You weren't going to use them anyway, but some otherwise ISO C
compliant compilers do not accept trigraphs.


Suffixes on Integer Constants
-----------------------------

You should never use a 'l' suffix on integer constants ('L' is fine),
since it can easily be confused with the number '1'.


			Common Coding Pitfalls
			======================

errno
-----

errno might be declared as a macro.


Implicit int
------------

In C, the 'int' keyword can often be omitted from type declarations.
For instance, you can write

  unsigned variable;

as shorthand for

  unsigned int variable;

There are several places where this can cause trouble.  First, suppose
'variable' is a long; then you might think

  (unsigned) variable

would convert it to unsigned long.  It does not.  It converts to
unsigned int.  This mostly causes problems on 64-bit platforms, where
long and int are not the same size.

Second, if you write a function definition with no return type at
all:

  operate (int a, int b)
  {
    ...
  }

that function is expected to return int, *not* void.  GCC will warn
about this.

Implicit function declarations always have return type int.  So if you
correct the above definition to

  void
  operate (int a, int b)
  ...

but operate() is called above its definition, you will get an error
about a "type mismatch with previous implicit declaration".  The cure
is to prototype all functions at the top of the file, or in an
appropriate header.

Char vs unsigned char vs int
----------------------------

In C, unqualified 'char' may be either signed or unsigned; it is the
implementation's choice.  When you are processing 7-bit ASCII, it does
not matter.  But when your program must handle arbitrary binary data,
or fully 8-bit character sets, you have a problem.  The most obvious
issue is if you have a look-up table indexed by characters.

For instance, the character '\341' in ISO Latin 1 is SMALL LETTER A
WITH ACUTE ACCENT.  In the proper locale, isalpha('\341') will be
true.  But if you read '\341' from a file and store it in a plain
char, isalpha(c) may look up character 225, or it may look up
character -31.  And the ctype table has no entry at offset -31, so
your program will crash.  (If you're lucky.)

It is wise to use unsigned char everywhere you possibly can.  This
avoids all these problems.  Unfortunately, the routines in <string.h>
take plain char arguments, so you have to remember to cast them back
and forth - or avoid the use of strxxx() functions, which is probably
a good idea anyway.

Another common mistake is to use either char or unsigned char to
receive the result of getc() or related stdio functions.  They may
return EOF, which is outside the range of values representable by
char.  If you use char, some legal character value may be confused
with EOF, such as '\377' (SMALL LETTER Y WITH UMLAUT, in Latin-1).
The correct choice is int.

A more subtle version of the same mistake might look like this:

  unsigned char pushback[NPUSHBACK];
  int pbidx;
  #define unget(c) (assert(pbidx < NPUSHBACK), pushback[pbidx++] = (c))
  #define get(c) (pbidx ? pushback[--pbidx] : getchar())
  ...
  unget(EOF);

which will mysteriously turn a pushed-back EOF into a SMALL LETTER Y
WITH UMLAUT.


Other common pitfalls
---------------------

o Expecting 'plain' char to be either sign or unsigned extending.

o Shifting an item by a negative amount or by greater than or equal to
  the number of bits in a type (expecting shifts by 32 to be sensible
  has caused quite a number of bugs at least in the early days).

o Expecting ints shifted right to be sign extended.

o Modifying the same value twice within one sequence point.

o Host vs. target floating point representation, including emitting NaNs
  and Infinities in a form that the assembler handles.

o qsort being an unstable sort function (unstable in the sense that
  multiple items that sort the same may be sorted in different orders
  by different qsort functions).

o Passing incorrect types to fprintf and friends.

o Adding a function declaration for a module declared in another file to
  a .c file instead of to a .h file.