gcc/gcc
Roger Sayle 3c496e92d7 nvptx: Add a __PTX_SM__ predefined macro based on target ISA.
This patch adds a __PTX_SM__ predefined macro to the nvptx backend that
allows code to check the compute model being targeted by the compiler.
This is equivalent to the __CUDA_ARCH__ macro defined by CUDA's nvcc
compiler, but to avoid causing problems for source code that checks
for that compiler, this macro uses GCC's nomenclature; it's easy
enough for users to "#define __CUDA_ARCH__ __PTX_SM__".

What might have been a four line patch is actually a little more
complicated, as this patch takes the opportunity to upgrade the
nvptx backend to use the now preferred nvptx-c.c idiom.

2021-08-24  Roger Sayle  <roger@nextmovesoftware.com>
	    Tom de Vries  <tdevries@suse.de>

gcc/ChangeLog
	* config.gcc (nvptx-*-*): Define {c,c++}_target_objs.
	* config/nvptx/nvptx-protos.h (nvptx_cpu_cpp_builtins): Prototype.
	* config/nvptx/nvptx.h (TARGET_CPU_CPP_BUILTINS): Implement with
	a call to the new nvptx_cpu_cpp_builtins function in nvptx-c.c.
	* config/nvptx/t-nvptx (nvptx-c.o): New rule.
	* config/nvptx/nvptx-c.c: New source file.
	(nvptx_cpu_cpp_builtins): Move implementation here.
2021-08-24 18:02:18 +01:00
..
ada Daily bump. 2021-08-20 00:16:28 +00:00
analyzer Daily bump. 2021-08-24 00:17:00 +00:00
c Daily bump. 2021-08-24 00:17:00 +00:00
c-family Daily bump. 2021-08-21 00:16:29 +00:00
common arc: Small data doesn't need fcommon option 2021-08-12 15:31:47 +03:00
config nvptx: Add a __PTX_SM__ predefined macro based on target ISA. 2021-08-24 18:02:18 +01:00
cp Daily bump. 2021-08-24 00:17:00 +00:00
d Daily bump. 2021-08-03 07:49:16 +00:00
doc arm: Add command-line option for enabling CVE-2021-35465 mitigation [PR102035] 2021-08-24 11:45:13 +01:00
fortran Daily bump. 2021-08-24 00:17:00 +00:00
ginclude
go libgo: various fixes for Solaris support 2021-08-14 17:34:52 -07:00
jit Daily bump. 2021-08-20 00:16:28 +00:00
lto
objc Daily bump. 2021-08-20 00:16:28 +00:00
objcp
po Daily bump. 2021-08-03 07:49:16 +00:00
rtl-ssa
testsuite Reset PHI base0 flag if it's clear in any argument [PR101977, ...] 2021-08-24 10:49:11 -06:00
ABOUT-GCC-NLS
acinclude.m4 configure: remove version argument from gcc_GAS_CHECK_FEATURE 2021-08-21 00:10:20 +03:00
aclocal.m4
addresses.h
adjust-alignment.c
alias.c Don't skip prologue/epilogue when initializing alias. 2021-07-28 17:44:35 +08:00
alias.h
align.h
alloc-pool.c
alloc-pool.h
array-traits.h
asan.c
asan.h
attr-fnspec.h
attribs.c ipa: "naked" attribute implies "noipa" attribute 2021-08-13 16:04:26 +02:00
attribs.h Add new gimple-ssa-warn-access pass. 2021-07-28 16:02:17 -06:00
auto-inc-dec.c
auto-profile.c Fix indirect call inlining with AutoFDO 2021-08-03 14:36:33 -07:00
auto-profile.h
backend.h
BASE-VER
basic-block.h
bb-reorder.c
bb-reorder.h
bitmap.c
bitmap.h
btfout.c BTF: Support for BTF_KIND_FLOAT 2021-07-02 08:32:44 -07:00
builtin-attrs.def
builtin-types.def
builtins.c Move more warning code to gimple-ssa-warn-access etc. 2021-08-17 14:49:05 -06:00
builtins.def Don't consider '-foffload-abi' in 'DEF_GOACC_BUILTIN', 'DEF_GOMP_BUILTIN' 2021-08-09 13:39:38 +02:00
builtins.h Move more code to new gimple-ssa-warn-access pass. 2021-08-06 16:08:36 -06:00
caller-save.c
calls.c Move more warning code to gimple-ssa-warn-access etc. 2021-08-17 14:49:05 -06:00
calls.h Move more warning code to gimple-ssa-warn-access etc. 2021-08-17 14:49:05 -06:00
ccmp.c
ccmp.h
cfg-flags.def
cfg.c
cfg.h
cfganal.c
cfganal.h
cfgbuild.c
cfgbuild.h
cfgcleanup.c return auto_vec from more dominance functions 2021-06-17 04:43:28 -04:00
cfgcleanup.h
cfgexpand.c Small tweak to expand_used_vars 2021-08-11 15:34:15 +02:00
cfgexpand.h
cfghooks.c
cfghooks.h
cfgloop.c cfgloop: Make loops_list support an optional loop_p root 2021-08-05 03:44:20 -05:00
cfgloop.h cfgloop: Make loops_list support an optional loop_p root 2021-08-05 03:44:20 -05:00
cfgloopanal.c Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
cfgloopmanip.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
cfgloopmanip.h
cfgrtl.c
cfgrtl.h
cgraph.c ipa-sra: Restructure how cloning and call redirection communicate (PR 93385) 2021-06-28 18:24:34 +02:00
cgraph.h ipa: Adjust references to identify read-only globals 2021-07-27 10:03:17 +02:00
cgraphbuild.c
cgraphclones.c ipa: Adjust references to identify read-only globals 2021-07-27 10:03:17 +02:00
cgraphunit.c middle-end: add support for per-location warning groups. 2021-06-24 19:30:47 -06:00
ChangeLog Daily bump. 2021-08-24 00:17:00 +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.dataflow
ChangeLog.gimple-classes
ChangeLog.graphite
ChangeLog.jit
ChangeLog.lib
ChangeLog.ptr
ChangeLog.tree-ssa
ChangeLog.tuples
cif-code.def
collect-utils.c
collect-utils.h
collect2-aix.c
collect2-aix.h
collect2.c Darwin, configury : Allow for specification and detection of dsymutil. 2021-07-05 20:40:45 +01:00
collect2.h
color-macros.h
combine-stack-adj.c
combine.c gcc: Add vec_select -> subreg RTL simplification 2021-07-13 21:02:58 +01:00
common.md
common.opt Don't consider '-foffload-abi' in 'DEF_GOACC_BUILTIN', 'DEF_GOMP_BUILTIN' 2021-08-09 13:39:38 +02:00
compare-elim.c Minor improvement to compare elimination 2021-06-15 12:43:42 -04:00
conditions.h
config.build
config.gcc nvptx: Add a __PTX_SM__ predefined macro based on target ISA. 2021-08-24 18:02:18 +01:00
config.host
config.in Darwin, X86, config: Adjust 'as' command lines [PR100340]. 2021-08-17 19:38:05 +01:00
configure configure: remove gas versions from tls check 2021-08-21 00:10:21 +03:00
configure.ac configure: remove gas versions from tls check 2021-08-21 00:10:21 +03:00
context.c
context.h
convert.c
convert.h
COPYING
COPYING.LIB
COPYING3
COPYING3.LIB
coretypes.h
coroutine-builtins.def
coroutine-passes.cc
coverage.c gcov: Add TARGET_GCOV_TYPE_SIZE target hook 2021-08-16 15:34:25 +02:00
coverage.h
cppbuiltin.c
cppbuiltin.h
cppdefault.c
cppdefault.h
cprop.c
cse.c gcc: Add vec_select -> subreg RTL simplification 2021-07-13 21:02:58 +01:00
cselib.c
cselib.h
cstamp-h.in
ctfc.c CTF/BTF debug formats 2021-06-28 18:47:20 +02:00
ctfc.h CTF/BTF debug formats 2021-06-28 18:47:20 +02:00
ctfout.c bootstrap: Include memmodel.h in btfout.c and ctfout.c before tm_p.h 2021-06-29 15:10:17 +00:00
data-streamer-in.c
data-streamer-out.c
data-streamer.c
data-streamer.h
DATESTAMP Daily bump. 2021-08-24 00:17:00 +00:00
dbgcnt.c
dbgcnt.def ipa: add debug counter for IPA MODREF PTA 2021-08-23 09:36:52 +02:00
dbgcnt.h
dbxout.c
dbxout.h
dce.c
dce.h
ddg.c
ddg.h
debug.c
debug.h
defaults.h Add a target calls hook: TARGET_PUSH_ARGUMENT 2021-06-17 06:33:14 -07:00
DEV-PHASE
df-core.c
df-problems.c
df-scan.c df: Fix up handling of paradoxical subregs in debug insns [PR101170] 2021-06-24 12:24:48 +02:00
df.h
dfp.c
dfp.h
diagnostic-color.c
diagnostic-color.h
diagnostic-core.h
diagnostic-event-id.h
diagnostic-format-json.cc
diagnostic-metadata.h
diagnostic-path.h
diagnostic-show-locus.c
diagnostic-spec.c Move more code to new gimple-ssa-warn-access pass. 2021-08-06 16:08:36 -06:00
diagnostic-spec.h Add support for per-location warning groups. 2021-06-24 19:23:42 -06:00
diagnostic-url.h
diagnostic.c Improve warning suppression for inlined functions [PR98512]. 2021-07-02 16:19:35 -06:00
diagnostic.def
diagnostic.h Improve warning suppression for inlined functions [PR98512]. 2021-07-02 16:19:35 -06:00
digraph.cc
digraph.h
dojump.c
dojump.h
dominance.c Adjust by-value function vec arguments to by-reference. 2021-08-05 20:03:38 -06:00
dominance.h Adjust by-value function vec arguments to by-reference. 2021-08-05 20:03:38 -06:00
domwalk.c
domwalk.h
double-int.c
double-int.h
dse.c
dump-context.h produce simple DOT graphs from SLP trees 2021-07-12 16:47:45 +02:00
dumpfile.c produce simple DOT graphs from SLP trees 2021-07-12 16:47:45 +02:00
dumpfile.h
dwarf2asm.c
dwarf2asm.h
dwarf2cfi.c CTF/BTF debug formats 2021-06-28 18:47:20 +02:00
dwarf2ctf.c dwarf2ctf: the unit of sou field location is bits [PR101283] 2021-07-06 14:07:39 -07:00
dwarf2ctf.h CTF/BTF debug formats 2021-06-28 18:47:20 +02:00
dwarf2out.c dwarf2out: Emit DW_AT_location for global register vars during early dwarf [PR101905] 2021-08-23 11:50:14 +02:00
dwarf2out.h debug/101473 - apply debug prefix maps before checksumming DIEs 2021-07-20 12:49:59 +02:00
early-remat.c
edit-context.c
edit-context.h
emit-rtl.c
emit-rtl.h
errors.c
errors.h
escaped_string.h
et-forest.c
et-forest.h
except.c except: remove dwarf2out.h dependency 2021-06-26 00:17:43 -04:00
except.h
exec-tool.in Darwin, configury : Allow for specification and detection of dsymutil. 2021-07-05 20:40:45 +01:00
explow.c
explow.h
expmed.c expmed: Fix store_integral_bit_field [PR101562] 2021-07-23 19:55:16 +02:00
expmed.h
expr.c by_pieces: Pass MAX_PIECES to op_by_pieces_d 2021-08-04 06:24:46 -07:00
expr.h Add QI vector mode support to by-pieces for memset 2021-07-30 10:34:19 -07:00
fibonacci_heap.c
fibonacci_heap.h
file-find.c
file-find.h
file-prefix-map.c
file-prefix-map.h
final.c CTF/BTF debug formats 2021-06-28 18:47:20 +02:00
fixed-value.c
fixed-value.h
flag-types.h Change evrp-mode options. 2021-08-17 19:28:43 -04:00
flags.h debug: Add new function ctf_debuginfo_p 2021-07-19 10:34:22 -07:00
fold-const-call.c
fold-const-call.h
fold-const.c middle-end/101858 - avoid shift of pointer in folding 2021-08-11 12:55:24 +02:00
fold-const.h [PATCH] PR tree-optimization/96392 Optimize x+0.0 if x is an integer 2021-06-11 17:42:14 +01:00
fp-test.c
FSFChangeLog
FSFChangeLog.10
FSFChangeLog.11
function-abi.cc
function-abi.h
function-tests.c
function.c Attach MEM_EXPR information when flushing BLKmode args to the stack - V2 2021-07-20 14:54:15 -04:00
function.h
fwprop.c
gcc-ar.c
gcc-main.c
gcc-plugin.h
gcc-rich-location.c
gcc-rich-location.h
gcc-symtab.h
gcc.c driver/101383 - handle -gtoggle in driver 2021-07-15 07:56:08 +02:00
gcc.h
gcov-counter.def
gcov-dump.c
gcov-io.c gcov: Add __gcov_info_to_gdca() 2021-08-06 07:28:26 +02:00
gcov-io.h gcov: Add __gcov_info_to_gdca() 2021-08-06 07:28:26 +02:00
gcov-tool.c
gcov.c gcov: fix output location for JSON mode. 2021-08-20 10:07:03 +02:00
gcse-common.c
gcse-common.h
gcse.c tree-optimization/101373 - avoid PRE across externally throwing call 2021-07-12 16:47:45 +02:00
gcse.h
gdbasan.in
gdbhooks.py
gdbinit.in
gen-pass-instances.awk
genattr-common.c
genattr.c
genattrtab.c
genautomata.c Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
gencfn-macros.c
gencheck.c
genchecksum.c
gencodes.c
genconditions.c
genconfig.c
genconstants.c
genemit.c
genenums.c
generic-match-head.c
generic-match.h
genextract.c Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
genflags.c
gengenrtl.c
gengtype-lex.l
gengtype-parse.c
gengtype-state.c Support scanning of build-time GC roots in gengtype 2021-07-16 12:51:46 -04:00
gengtype.c Support scanning of build-time GC roots in gengtype 2021-07-16 12:51:46 -04:00
gengtype.h Support scanning of build-time GC roots in gengtype 2021-07-16 12:51:46 -04:00
genhooks.c
genmatch.c Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
genmddeps.c
genmddump.c
genmodes.c
genmultilib
genopinit.c
genoutput.c
genpeep.c
genpreds.c Change the type of predicates to bool. 2021-07-01 15:19:28 +02:00
genrecog.c
gensupport.c
gensupport.h
gentarget-def.c
genversion.c
ggc-common.c Turn 'bool force_collect' parameter to 'ggc_collect' into an 'enum ggc_collect mode' 2021-08-18 13:25:29 +02:00
ggc-internal.h Turn global 'ggc_force_collect' variable into 'force_collect' parameter to 'ggc_collect' 2021-08-17 21:00:10 +02:00
ggc-none.c
ggc-page.c Turn 'bool force_collect' parameter to 'ggc_collect' into an 'enum ggc_collect mode' 2021-08-18 13:25:29 +02:00
ggc-tests.c Turn 'bool force_collect' parameter to 'ggc_collect' into an 'enum ggc_collect mode' 2021-08-18 13:25:29 +02:00
ggc.h Turn 'bool force_collect' parameter to 'ggc_collect' into an 'enum ggc_collect mode' 2021-08-18 13:25:29 +02:00
gimple-array-bounds.cc Correct -Warray-bounds handling if function pointers [PR101601]. 2021-07-28 16:14:38 -06:00
gimple-array-bounds.h Pass gimple context to array_bounds_checker. 2021-07-26 11:55:24 +02:00
gimple-builder.c
gimple-builder.h
gimple-expr.c middle-end: add support for per-location warning groups. 2021-06-24 19:30:47 -06:00
gimple-expr.h
gimple-fold.c Move more code to new gimple-ssa-warn-access pass. 2021-08-06 16:08:36 -06:00
gimple-fold.h
gimple-if-to-switch.cc
gimple-isel.cc
gimple-iterator.c
gimple-iterator.h
gimple-laddress.c
gimple-loop-interchange.cc Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
gimple-loop-jam.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
gimple-loop-versioning.cc Replace evrp use in loop versioning with ranger. 2021-07-30 11:28:51 +02:00
gimple-low.c openmp: Implement OpenMP 5.1 scope construct 2021-08-17 09:30:09 +02:00
gimple-low.h
gimple-match-head.c
gimple-match.h
gimple-predict.h
gimple-pretty-print.c openmp: Implement OpenMP 5.1 scope construct 2021-08-17 09:30:09 +02:00
gimple-pretty-print.h
gimple-range-cache.cc Change evrp-mode options. 2021-08-17 19:28:43 -04:00
gimple-range-cache.h Abstract tracing routines into a class. 2021-08-17 19:28:42 -04:00
gimple-range-edge.cc
gimple-range-edge.h
gimple-range-fold.cc Abstract tracing routines into a class. 2021-08-17 19:28:42 -04:00
gimple-range-fold.h Add gimple_range_type for statements. 2021-07-15 15:58:11 -04:00
gimple-range-gori.cc Add GORI tracing faciltiies. 2021-08-17 19:28:43 -04:00
gimple-range-gori.h Add GORI tracing faciltiies. 2021-08-17 19:28:43 -04:00
gimple-range-path.cc Implement basic block path solver. 2021-07-27 12:01:37 +02:00
gimple-range-path.h Mark path_range_query::dump as override. 2021-08-04 10:57:11 +02:00
gimple-range-tests.cc
gimple-range-trace.cc Abstract tracing routines into a class. 2021-08-17 19:28:42 -04:00
gimple-range-trace.h Change evrp-mode options. 2021-08-17 19:28:43 -04:00
gimple-range.cc Document enable_ranger and disable_ranger. 2021-08-19 12:49:40 -06:00
gimple-range.h Document enable_ranger and disable_ranger. 2021-08-19 12:49:40 -06:00
gimple-ssa-backprop.c
gimple-ssa-evrp-analyze.c
gimple-ssa-evrp-analyze.h
gimple-ssa-evrp.c evrp: fix AddressSanitizer: alloc-dealloc-mismatch 2021-06-14 10:22:36 +02:00
gimple-ssa-isolate-paths.c middle-end: add support for per-location warning groups. 2021-06-24 19:30:47 -06:00
gimple-ssa-nonnull-compare.c middle-end: add support for per-location warning groups. 2021-06-24 19:30:47 -06:00
gimple-ssa-split-paths.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
gimple-ssa-sprintf.c Add new gimple-ssa-warn-access pass. 2021-07-28 16:02:17 -06:00
gimple-ssa-store-merging.c bswap: Recognize (int) __builtin_bswap64 (arg) idioms or __builtin_bswap?? (arg) & mask [PR86723] 2021-08-23 11:54:03 +02:00
gimple-ssa-strength-reduction.c
gimple-ssa-warn-access.cc Reset PHI base0 flag if it's clear in any argument [PR101977, ...] 2021-08-24 10:49:11 -06:00
gimple-ssa-warn-access.h Move more warning code to gimple-ssa-warn-access etc. 2021-08-17 14:49:05 -06:00
gimple-ssa-warn-alloca.c Improve warning suppression for inlined functions. 2021-07-06 13:43:11 -06:00
gimple-ssa-warn-restrict.c Move more warning code to gimple-ssa-warn-access etc. 2021-08-17 14:49:05 -06:00
gimple-ssa-warn-restrict.h middle-end: add support for per-location warning groups. 2021-06-24 19:30:47 -06:00
gimple-ssa.h
gimple-streamer-in.c
gimple-streamer-out.c
gimple-streamer.h
gimple-walk.c openmp: Implement OpenMP 5.1 scope construct 2021-08-17 09:30:09 +02:00
gimple-walk.h
gimple.c ipa: add debug counter for IPA MODREF PTA 2021-08-23 09:36:52 +02:00
gimple.def openmp: Implement OpenMP 5.1 scope construct 2021-08-17 09:30:09 +02:00
gimple.h openmp: Implement OpenMP 5.1 scope construct 2021-08-17 09:30:09 +02:00
gimplify-me.c
gimplify-me.h
gimplify.c openmp: Implement OpenMP 5.1 scope construct 2021-08-17 09:30:09 +02:00
gimplify.h
glimits.h
godump.c godump: Fix -fdump-go-spec= reproduceability issue [PR101407] 2021-07-14 10:22:50 +02:00
graph.c
graph.h
graphds.c
graphds.h
graphite-dependences.c
graphite-isl-ast-to-gimple.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
graphite-optimize-isl.c
graphite-poly.c use range based for loops to iterate over vec<> 2021-06-13 12:08:01 -04:00
graphite-scop-detection.c
graphite-sese-to-poly.c
graphite.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
graphite.h
graphviz.cc
graphviz.h
gsstruct.def
gstab.h
gsyms.h
gsyslimits.h
gtm-builtins.def
haifa-sched.c Improve diff-ability of scheduler logs 2021-08-17 10:05:20 +00:00
hard-reg-set.h
hash-map-tests.c Make 'gcc/hash-map-tests.c:test_map_of_type_with_ctor_and_dtor_expand' work on 32-bit architectures [PR101959] 2021-08-18 18:34:31 +02:00
hash-map-traits.h
hash-map.h
hash-set-tests.c
hash-set.h
hash-table.c
hash-table.h
hash-traits.h
highlev-plugin-common.h
hooks.c Add a target calls hook: TARGET_PUSH_ARGUMENT 2021-06-17 06:33:14 -07:00
hooks.h Add a target calls hook: TARGET_PUSH_ARGUMENT 2021-06-17 06:33:14 -07:00
host-default.c
hosthooks-def.h
hosthooks.h
hw-doloop.c
hw-doloop.h
hwint.c
hwint.h
ifcvt.c use range based for loops to iterate over vec<> 2021-06-13 12:08:01 -04:00
ifcvt.h
inchash.c
inchash.h
incpath.c
incpath.h
init-regs.c
input.c input.c: move file caching globals to a new file_cache class 2021-07-01 17:44:51 -04:00
input.h input.c: move file caching globals to a new file_cache class 2021-07-01 17:44:51 -04:00
insn-addr.h
insn-notes.def
int-vector-builder.h
internal-fn.c vect: Recog mul_highpart pattern [PR100696] 2021-07-19 20:49:17 -05:00
internal-fn.def vect: Recog mul_highpart pattern [PR100696] 2021-07-19 20:49:17 -05:00
internal-fn.h
intl.c
intl.h
ipa-comdats.c
ipa-cp.c ipa: Adjust references to identify read-only globals 2021-07-27 10:03:17 +02:00
ipa-devirt.c ipa-devirt: check precision mismatch of enum values [PR101396] 2021-07-30 15:43:38 +08:00
ipa-fnsummary.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
ipa-fnsummary.h
ipa-free-lang-data.cc
ipa-icf-gimple.c ipa: ICF should check SSA_NAME_IS_DEFAULT_DEF 2021-08-16 09:53:11 +02:00
ipa-icf-gimple.h
ipa-icf.c
ipa-icf.h
ipa-inline-analysis.c
ipa-inline-transform.c
ipa-inline.c Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
ipa-inline.h
ipa-modref-tree.c
ipa-modref-tree.h Avoid redundant entries in modref access lists. 2021-08-23 17:56:51 +02:00
ipa-modref.c Fix previous ipa-modref patch 2021-08-23 16:16:25 +02:00
ipa-modref.h Introduce EAF_NOREAD and cleanup EAF_UNUSED + ipa-modref 2021-08-13 10:04:52 +02:00
ipa-param-manipulation.c ipa-sra: Introduce a mini-DCE to tree-inline.c (PR 93385) 2021-06-28 18:24:54 +02:00
ipa-param-manipulation.h ipa-sra: Introduce a mini-DCE to tree-inline.c (PR 93385) 2021-06-28 18:24:54 +02:00
ipa-polymorphic-call.c
ipa-predicate.c Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
ipa-predicate.h Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
ipa-profile.c
ipa-prop.c ipa: Fix testsuite/gcc.dg/ipa/remref-6.c 2021-08-09 17:36:12 +02:00
ipa-prop.h Adjust by-value function vec arguments to by-reference. 2021-08-05 20:03:38 -06:00
ipa-pure-const.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
ipa-ref.c
ipa-ref.h
ipa-reference.c
ipa-reference.h
ipa-split.c Fix condition testing void functions in ipa-split. 2021-08-12 20:52:54 +02:00
ipa-sra.c ipa-sra: Fix thinko when overriding safe_to_import_accesses (PR 101066) 2021-07-08 19:45:16 +02:00
ipa-utils.c
ipa-utils.h
ipa-visibility.c
ipa.c
ira-build.c Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
ira-color.c
ira-conflicts.c ira: Support more matching constraint forms with param [PR100328] 2021-07-05 20:53:19 -05:00
ira-costs.c
ira-emit.c
ira-int.h ira: Support more matching constraint forms with param [PR100328] 2021-07-05 20:53:19 -05:00
ira-lives.c
ira.c ira: Support more matching constraint forms with param [PR100328] 2021-07-05 20:53:19 -05:00
ira.h
is-a.h
iterator-utils.h
json.cc
json.h
jump.c
langhooks-def.h middle-end/AArch64: Fix bootstrap after vec changes 2021-08-06 12:21:05 +01:00
langhooks.c middle-end/AArch64: Fix bootstrap after vec changes 2021-08-06 12:21:05 +01:00
langhooks.h middle-end/AArch64: Fix bootstrap after vec changes 2021-08-06 12:21:05 +01:00
LANGUAGES
lcm.c
lcm.h
libfuncs.h
limitx.h
limity.h
lists.c
lock-and-run.sh
loop-doloop.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
loop-init.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
loop-invariant.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
loop-iv.c
loop-unroll.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
loop-unroll.h
lower-subreg.c use range based for loops to iterate over vec<> 2021-06-13 12:08:01 -04:00
lower-subreg.h
lra-assigns.c
lra-coalesce.c
lra-constraints.c lra: Fix s/otput/output/ typo in debug output 2021-08-08 21:37:20 +01:00
lra-eliminations.c
lra-int.h
lra-lives.c
lra-remat.c
lra-spills.c
lra.c
lra.h
lto-cgraph.c
lto-compress.c
lto-compress.h
lto-opts.c Add 'default' to -foffload=; document that flag [PR67300] 2021-06-29 16:00:04 +02:00
lto-section-in.c
lto-section-names.h
lto-section-out.c
lto-streamer-in.c
lto-streamer-out.c
lto-streamer.c
lto-streamer.h
lto-wrapper.c Add 'default' to -foffload=; document that flag [PR67300] 2021-06-29 16:00:04 +02:00
machmode.def
machmode.h
main.c
Makefile.in Abstract tracing routines into a class. 2021-08-17 19:28:42 -04:00
match.pd [Committed] PR middle-end/102029: Stricter typing in LSHIFT_EXPR sign folding. 2021-08-24 02:59:02 +01:00
mcf.c
mem-stats-traits.h
mem-stats.h
memmodel.h
memory-block.cc
memory-block.h
mkconfig.sh
mode-classes.def
mode-switching.c
modulo-sched.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
multiple_target.c ipa: make target_clone default decl local [PR101726] 2021-08-16 09:53:41 +02:00
mux-utils.h
obstack-utils.h
omp-builtins.def openmp: Implement the error directive 2021-08-20 11:36:52 +02:00
omp-expand.c openmp: Add support for strict modifier on grainsize/num_tasks clauses 2021-08-23 10:16:24 +02:00
omp-expand.h
omp-general.c OpenACC 'nohost' clause 2021-07-21 23:58:11 +02:00
omp-general.h
omp-low.c openmp: Implement OpenMP 5.1 scope construct 2021-08-17 09:30:09 +02:00
omp-low.h
omp-oacc-kernels-decompose.cc
omp-oacc-neuter-broadcast.cc Plug 'par' memory leak in 'gcc/omp-oacc-neuter-broadcast.cc:execute_omp_oacc_neuter_broadcast' 2021-08-16 12:10:01 +02:00
omp-offload.c [OpenACC] Extract 'pass_oacc_loop_designation' out of 'pass_oacc_device_lower' 2021-07-29 09:19:44 +02:00
omp-offload.h
omp-simd-clone.c
omp-simd-clone.h
ONEWS
opt-functions.awk
opt-gather.awk
opt-include.awk
opt-problem.cc
opt-problem.h
opt-read.awk
opt-suggestions.c
opt-suggestions.h
optabs-libfuncs.c
optabs-libfuncs.h
optabs-query.c Fall back to masked_gather_load/masked_scatter_store 2021-08-17 18:54:24 +02:00
optabs-query.h
optabs-tree.c Vect: Add support for dot-product where the sign for the multiplicant changes. 2021-07-14 14:54:26 +01:00
optabs-tree.h Vect: Add support for dot-product where the sign for the multiplicant changes. 2021-07-14 14:54:26 +01:00
optabs.c expand: Add new clrsb fallback expansion [PR101950] 2021-08-19 11:00:27 +02:00
optabs.def Vect: Add support for dot-product where the sign for the multiplicant changes. 2021-07-14 14:54:26 +01:00
optabs.h
optc-gen.awk Sanity check that 'Init' doesn't appear without 'Var' in '*.opt' files 2021-08-09 13:38:14 +02:00
optc-save-gen.awk arm: Revert partially ebd5e86c0f 2021-06-23 15:30:17 +02:00
opth-gen.awk
optinfo-emit-json.cc
optinfo-emit-json.h
optinfo.cc
optinfo.h
opts-common.c
opts-diagnostic.h
opts-global.c
opts.c opts: do not repeat a string in errors 2021-08-13 15:43:36 +02:00
opts.h
ordered-hash-map-tests.cc
ordered-hash-map.h
output.h
params.opt Adjust inner loop cost scaling 2021-08-24 10:43:10 +02:00
pass_manager.h
passes.c
passes.def openacc: Middle-end worker-partitioning support 2021-08-09 14:47:42 +02:00
plugin.c
plugin.def
plugin.h
pointer-query.cc Reset PHI base0 flag if it's clear in any argument [PR101977, ...] 2021-08-24 10:49:11 -06:00
pointer-query.h Move more warning code to gimple-ssa-warn-access etc. 2021-08-17 14:49:05 -06:00
poly-int-types.h
poly-int.h
postreload-gcse.c tree-optimization/101373 - avoid PRE across externally throwing call 2021-07-12 16:47:45 +02:00
postreload.c
predict.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
predict.def
predict.h
prefix.c
prefix.h
pretty-print.c
pretty-print.h
print-rtl-function.c
print-rtl.c
print-rtl.h
print-tree.c
print-tree.h
profile-count.c
profile-count.h Change the type of return value of profile_count::value to uint64_t 2021-07-15 17:27:17 +02:00
profile.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
profile.h
range-op.cc Special case -TYPE_MIN_VALUE for flag_wrapv in operator_abs::op1_range. 2021-08-17 11:39:15 +02:00
range-op.h Add wi_fold_in_parts. 2021-07-16 20:27:10 -04:00
range.cc
range.h
read-md.c
read-md.h
read-rtl-function.c Turn 'bool force_collect' parameter to 'ggc_collect' into an 'enum ggc_collect mode' 2021-08-18 13:25:29 +02:00
read-rtl-function.h
read-rtl.c Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
README.Portability
real.c
real.h
realmpfr.c
realmpfr.h
recog.c Change the type of memory classification functions to bool 2021-07-12 16:35:14 +02:00
recog.h Change the type of memory classification functions to bool 2021-07-12 16:35:14 +02:00
ree.c
reg-notes.def
reg-stack.c
regcprop.c use range based for loops to iterate over vec<> 2021-06-13 12:08:01 -04:00
regcprop.h
reginfo.c
regrename.c
regrename.h
regs.h
regset.h
regstat.c
reload.c Change the type of memory classification functions to bool 2021-07-12 16:35:14 +02:00
reload.h
reload1.c
reorg.c
resource.c
resource.h
rtl-error.c
rtl-error.h
rtl-iter.h
rtl-ssa.h
rtl-tests.c
rtl.c gcc: Add vec_select -> subreg RTL simplification 2021-07-13 21:02:58 +01:00
rtl.def
rtl.h aarch64: Replace some uses of GET_CODE with RTL predicate macros 2021-08-17 10:49:35 +01:00
rtlanal.c aarch64: Don't include vec_select high-half in SIMD multiply cost 2021-08-04 16:58:26 +01:00
rtlanal.h aarch64: Don't include vec_select high-half in SIMD multiply cost 2021-08-04 16:58:26 +01:00
rtlhash.c
rtlhash.h
rtlhooks-def.h
rtlhooks.c
rtx-vector-builder.c
rtx-vector-builder.h
run-rtl-passes.c
run-rtl-passes.h
sancov.c
sanitizer.def
sanopt.c ubsan: Fix ICEs with DECL_REGISTER tests [PR101624] 2021-07-28 18:43:15 +02:00
sbitmap.c
sbitmap.h
sched-deps.c
sched-ebb.c
sched-int.h Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
sched-rgn.c
sel-sched-dump.c use range based for loops to iterate over vec<> 2021-06-13 12:08:01 -04:00
sel-sched-dump.h
sel-sched-ir.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
sel-sched-ir.h vec: use auto_vec in a few more places 2021-07-14 15:01:27 -04:00
sel-sched.c
sel-sched.h
selftest-diagnostic.c
selftest-diagnostic.h
selftest-rtl.c
selftest-rtl.h
selftest-run-tests.c Turn 'bool force_collect' parameter to 'ggc_collect' into an 'enum ggc_collect mode' 2021-08-18 13:25:29 +02:00
selftest.c
selftest.h Turn global 'ggc_force_collect' variable into 'force_collect' parameter to 'ggc_collect' 2021-08-17 21:00:10 +02:00
sese.c
sese.h
shortest-paths.h
shrink-wrap.c
shrink-wrap.h
signop.h
simplify-rtx.c [Committed] Restore build on !TARGET_TRULY_NOOP_TRUNCATION targets 2021-08-23 15:35:05 +01:00
sort.cc
sparseset.c
sparseset.h
spellcheck-tree.c
spellcheck-tree.h
spellcheck.c
spellcheck.h
splay-tree-utils.cc
splay-tree-utils.h
splay-tree-utils.tcc
sreal.c
sreal.h
ssa-iterators.h
ssa.h
stab.def
stack-ptr-mod.c
statistics.c
statistics.h
stmt.c
stmt.h
stor-layout.c stor-layout: Avoid DECL_BIT_FIELD_REPRESENTATIVE with NULL TREE_TYPE [PR101172] 2021-06-24 12:22:14 +02:00
stor-layout.h
store-motion.c use range based for loops to iterate over vec<> 2021-06-13 12:08:01 -04:00
streamer-hooks.c
streamer-hooks.h
stringpool.c
stringpool.h
substring-locations.c
substring-locations.h
symbol-summary.h
symtab-clones.cc
symtab-clones.h ipa-sra: Restructure how cloning and call redirection communicate (PR 93385) 2021-06-28 18:24:34 +02:00
symtab-thunks.cc
symtab-thunks.h
symtab.c ipa: do not make localaliases for target_clones [PR101261] 2021-08-13 15:44:11 +02:00
sync-builtins.def
system.h
target-def.h
target-globals.c
target-globals.h
target-hooks-macros.h
target-insns.def
target.def gcov: Add TARGET_GCOV_TYPE_SIZE target hook 2021-08-16 15:34:25 +02:00
target.h
targhooks.c gcov: Add TARGET_GCOV_TYPE_SIZE target hook 2021-08-16 15:34:25 +02:00
targhooks.h gcov: Add TARGET_GCOV_TYPE_SIZE target hook 2021-08-16 15:34:25 +02:00
timevar.c use range based for loops to iterate over vec<> 2021-06-13 12:08:01 -04:00
timevar.def
timevar.h
toplev.c debug: Allow means for targets to opt out of CTF/BTF support 2021-07-19 10:34:39 -07:00
toplev.h Remove legacy external declarations in toplev.h [PR101447] 2021-07-26 10:40:18 -04:00
tracer.c
tracer.h
trans-mem.c Improve warning suppression for inlined functions. 2021-07-06 13:43:11 -06:00
trans-mem.h
tree-affine.c
tree-affine.h
tree-call-cdce.c Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
tree-cfg.c don't access cfun in dump_function_to_file 2021-08-17 08:00:40 -03:00
tree-cfg.h
tree-cfgcleanup.c use range based for loops to iterate over vec<> 2021-06-13 12:08:01 -04:00
tree-cfgcleanup.h
tree-chrec.c
tree-chrec.h
tree-complex.c middle-end: add support for per-location warning groups. 2021-06-24 19:30:47 -06:00
tree-core.h Introduce EAF_NOREAD and cleanup EAF_UNUSED + ipa-modref 2021-08-13 10:04:52 +02:00
tree-data-ref.c Adjust by-value function vec arguments to by-reference. 2021-08-05 20:03:38 -06:00
tree-data-ref.h Adjust by-value function vec arguments to by-reference. 2021-08-05 20:03:38 -06:00
tree-dfa.c
tree-dfa.h
tree-diagnostic-path.cc
tree-diagnostic.c use diagnostic location in diagnostic_report_current_function 2021-07-15 01:10:34 -04:00
tree-diagnostic.h
tree-dump.c
tree-dump.h
tree-eh.c Get rid of some gimple_expr_type uses 2021-07-16 12:52:17 +02:00
tree-eh.h
tree-emutls.c
tree-hash-traits.h
tree-hasher.h
tree-if-conv.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-if-conv.h
tree-inline.c retain debug stmt order when moving to successors 2021-08-17 08:00:40 -03:00
tree-inline.h
tree-into-ssa.c use range based for loops to iterate over vec<> 2021-06-13 12:08:01 -04:00
tree-into-ssa.h
tree-iterator.c
tree-iterator.h
tree-loop-distribution.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-nested.c openmp: Implement OpenMP 5.1 scope construct 2021-08-17 09:30:09 +02:00
tree-nested.h
tree-nrv.c
tree-object-size.c passes: Fix up subobject __bos [PR101419] 2021-07-13 11:04:22 +02:00
tree-object-size.h
tree-outof-ssa.c Get rid of some gimple_expr_type uses 2021-07-16 12:52:17 +02:00
tree-outof-ssa.h
tree-parloops.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-parloops.h
tree-pass.h openacc: Middle-end worker-partitioning support 2021-08-09 14:47:42 +02:00
tree-phinodes.c
tree-phinodes.h
tree-predcom.c Adjust by-value function vec arguments to by-reference. 2021-08-05 20:03:38 -06:00
tree-pretty-print.c openmp: Add support for strict modifier on grainsize/num_tasks clauses 2021-08-23 10:16:24 +02:00
tree-pretty-print.h Remove support for %G and %K. 2021-07-06 14:14:25 -06:00
tree-profile.c gcov: Add TARGET_GCOV_TYPE_SIZE target hook 2021-08-16 15:34:25 +02:00
tree-scalar-evolution.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-scalar-evolution.h
tree-sra.c Fix oversight in handling of reverse SSO in SRA pass 2021-08-05 10:24:50 +02:00
tree-sra.h
tree-ssa-address.c
tree-ssa-address.h
tree-ssa-alias-compare.h
tree-ssa-alias.c Introduce EAF_NOREAD and cleanup EAF_UNUSED + ipa-modref 2021-08-13 10:04:52 +02:00
tree-ssa-alias.h
tree-ssa-ccp.c Improved handling of division/modulus in bit CCP. 2021-08-23 12:44:37 +01:00
tree-ssa-ccp.h
tree-ssa-coalesce.c
tree-ssa-coalesce.h
tree-ssa-copy.c
tree-ssa-dce.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-dce.h
tree-ssa-dom.c Abstract out (forward) jump threader state handling. 2021-07-27 17:58:14 +02:00
tree-ssa-dom.h
tree-ssa-dse.c tree-optimization/101278 - handle self-use in DSE analysis 2021-07-01 12:31:21 +02:00
tree-ssa-dse.h
tree-ssa-forwprop.c target/101788 - avoid decomposing hard-register "loads" 2021-08-11 16:24:08 +02:00
tree-ssa-ifcombine.c
tree-ssa-live.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-live.h
tree-ssa-loop-ch.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-loop-im.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-loop-ivcanon.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-loop-ivopts.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-loop-ivopts.h
tree-ssa-loop-manip.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-loop-manip.h
tree-ssa-loop-niter.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-loop-niter.h
tree-ssa-loop-prefetch.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-loop-split.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-loop-unswitch.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-loop.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-loop.h
tree-ssa-math-opts.c
tree-ssa-math-opts.h
tree-ssa-operands.c Adjust volatile handling of the operand scanner 2021-08-11 16:24:08 +02:00
tree-ssa-operands.h
tree-ssa-phiopt.c Use CFN_BUILT_IN_CLRSB instead of BUILT_IN_CLRSB in switch. 2021-08-06 12:30:53 +01:00
tree-ssa-phiprop.c return auto_vec from more dominance functions 2021-06-17 04:43:28 -04:00
tree-ssa-pre.c Adjust by-value function vec arguments to by-reference. 2021-08-05 20:03:38 -06:00
tree-ssa-propagate.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-propagate.h
tree-ssa-reassoc.c Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
tree-ssa-reassoc.h
tree-ssa-sccvn.c tree-optimization/79334 - avoid PRE of possibly trapping array-ref 2021-08-23 11:53:15 +02:00
tree-ssa-sccvn.h Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
tree-ssa-scopedtables.c
tree-ssa-scopedtables.h
tree-ssa-sink.c tree-optimization/101151 - fix irreducible region check for sinking 2021-06-22 12:09:59 +02:00
tree-ssa-strlen.c Add new gimple-ssa-warn-access pass. 2021-07-28 16:02:17 -06:00
tree-ssa-strlen.h
tree-ssa-structalias.c ipa/97565 - fix IPA PTA body availability check 2021-08-23 16:30:16 +02:00
tree-ssa-tail-merge.c
tree-ssa-ter.c
tree-ssa-ter.h
tree-ssa-threadbackward.c Remove legacy back threader. 2021-08-12 20:27:56 +02:00
tree-ssa-threadedge.c Backwards jump threader rewrite with ranger. 2021-07-29 08:24:50 +02:00
tree-ssa-threadedge.h Backwards jump threader rewrite with ranger. 2021-07-29 08:24:50 +02:00
tree-ssa-threadupdate.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-ssa-threadupdate.h Backwards jump threader rewrite with ranger. 2021-07-29 08:24:50 +02:00
tree-ssa-uncprop.c
tree-ssa-uninit.c Add EAF_NOREAD check to tree-ssa-uninit 2021-08-18 13:26:52 +02:00
tree-ssa.c
tree-ssa.h
tree-ssanames.c
tree-ssanames.h
tree-stdarg.c
tree-stdarg.h
tree-streamer-in.c
tree-streamer-out.c
tree-streamer.c
tree-streamer.h
tree-switch-conversion.c Speed up jump table switch detection. 2021-08-16 13:37:49 +02:00
tree-switch-conversion.h Speed up jump table switch detection. 2021-08-16 13:37:49 +02:00
tree-tailcall.c tree-optimization/101769 - tail recursion creates possibly infinite loop 2021-08-04 10:35:27 +02:00
tree-vect-data-refs.c Refactor BB splitting of DRs for SLP group analysis 2021-08-20 12:37:19 +02:00
tree-vect-generic.c Fold more constants during veclower pass. 2021-08-20 00:28:47 +01:00
tree-vect-loop-manip.c Adjust by-value function vec arguments to by-reference. 2021-07-20 11:16:08 -06:00
tree-vect-loop.c Adjust inner loop cost scaling 2021-08-24 10:43:10 +02:00
tree-vect-patterns.c Fall back to masked_gather_load/masked_scatter_store 2021-08-17 18:54:24 +02:00
tree-vect-slp-patterns.c Adjust by-value function vec arguments to by-reference. 2021-08-05 20:03:38 -06:00
tree-vect-slp.c tree-optimization/100089 - avoid leaving scalar if-converted code around 2021-08-24 14:23:00 +02:00
tree-vect-stmts.c Fall back to masked_gather_load/masked_scatter_store 2021-08-17 18:54:24 +02:00
tree-vector-builder.c
tree-vector-builder.h
tree-vectorizer.c tree-optimization/100089 - avoid leaving scalar if-converted code around 2021-08-24 14:23:00 +02:00
tree-vectorizer.h tree-optimization/100089 - avoid leaving scalar if-converted code around 2021-08-24 14:23:00 +02:00
tree-vrp.c Use range-based for loops for traversing loops 2021-07-29 22:26:25 -05:00
tree-vrp.h
tree.c Move more warning code to gimple-ssa-warn-access etc. 2021-08-17 14:49:05 -06:00
tree.def openmp: Implement OpenMP 5.1 scope construct 2021-08-17 09:30:09 +02:00
tree.h openmp: Add support for strict modifier on grainsize/num_tasks clauses 2021-08-23 10:16:24 +02:00
treestruct.def
tristate.cc
tristate.h
tsan.c
tsan.h
tsystem.h
typeclass.h
typed-splay-tree.c
typed-splay-tree.h
ubsan.c ubsan: Fix ICEs with DECL_REGISTER tests [PR101624] 2021-07-28 18:43:15 +02:00
ubsan.h
unique-ptr-tests.cc
valtrack.c
valtrack.h
value-prof.c
value-prof.h
value-query.cc Allow PHIs to pick up global values. 2021-06-29 14:57:01 -04:00
value-query.h Initial value-relation code. 2021-06-22 08:11:44 -04:00
value-range-equiv.cc
value-range-equiv.h
value-range.cc
value-range.h Fix spacing and typos in comments. 2021-06-17 10:12:38 -04:00
value-relation.cc Add transitive operations to the relation oracle. 2021-08-24 09:44:31 -04:00
value-relation.h Add transitive operations to the relation oracle. 2021-08-24 09:44:31 -04:00
var-tracking.c
varasm.c
varasm.h
varpool.c
vec-perm-indices.c
vec-perm-indices.h
vec.c Adjust by-value function vec arguments to by-reference. 2021-08-05 20:03:38 -06:00
vec.h Adjust by-value function vec arguments to by-reference. 2021-08-05 20:03:38 -06:00
vector-builder.h
vmsdbg.h
vmsdbgout.c
vr-values.c Only call vrp_visit_cond_stmt if range_of_stmt doesn't resolve to a const. 2021-07-22 08:51:59 -04:00
vr-values.h Add stmt context in simplify_using_ranges. 2021-06-29 14:57:01 -04:00
vtable-verify.c
vtable-verify.h
warning-control.cc Add support for per-location warning groups. 2021-06-24 19:23:42 -06:00
web.c
wide-int-bitmask.h
wide-int-print.cc
wide-int-print.h
wide-int.cc
wide-int.h
xcoff.h
xcoffout.c
xcoffout.h

Copyright (C) 2000-2021 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.