gcc/gcc
John David Anglin 458e7c9379 Fix c-c++-common/fhardened-[12].c test fails on hppa
The -fstack-protector and -fstack-protector-strong options are
not supported on hppa since the stack grows up.

2023-12-06  John David Anglin  <danglin@gcc.gnu.org>

gcc/testsuite/ChangeLog:

	* c-c++-common/fhardened-1.c: Ignore __SSP_STRONG__ define
	if __hppa__ is defined.
	* c-c++-common/fhardened-2.c: Ignore __SSP__ define
	if __hppa__ is defined.
2023-12-06 15:38:50 +00:00
..
ada Daily bump. 2023-12-06 00:17:50 +00:00
analyzer Daily bump. 2023-12-02 00:16:54 +00:00
c Daily bump. 2023-12-06 00:17:50 +00:00
c-family Daily bump. 2023-12-06 00:17:50 +00:00
common RISC-V: Check if zcd conflicts with zcmt and zcmp 2023-12-05 17:24:34 +08:00
config RISC-V: Fix VSETVL PASS bug 2023-12-06 22:35:18 +08:00
cp c++: partial ordering of object parameter [PR53499] 2023-12-06 09:02:01 -05:00
d Daily bump. 2023-12-06 00:17:50 +00:00
doc Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
fortran Daily bump. 2023-12-06 00:17:50 +00:00
ginclude c: Refer more consistently to C23 not C2X 2023-11-07 14:20:30 +00:00
go libgo: update configure.ac to upstream GCC 2023-11-30 13:23:53 -08:00
jit Daily bump. 2023-12-06 00:17:50 +00:00
lto Daily bump. 2023-12-06 00:17:50 +00:00
m2 Modula-2: Support '-isysroot [...]' 2023-12-06 12:36:15 +01:00
objc Daily bump. 2023-11-28 00:17:28 +00:00
objcp Daily bump. 2023-11-28 00:17:28 +00:00
po
rtl-ssa rtl-ssa: Add some helpers for removing accesses 2023-11-24 10:58:06 +00:00
rust Daily bump. 2023-11-20 00:17:10 +00:00
testsuite Fix c-c++-common/fhardened-[12].c test fails on hppa 2023-12-06 15:38:50 +00:00
text-art
ABOUT-GCC-NLS ABOUT-GCC-NLS: add usage guidance 2023-10-19 12:34:35 -04:00
acinclude.m4
aclocal.m4 *: add modern gettext 2023-11-14 00:47:11 +01:00
addresses.h
adjust-alignment.cc
alias.cc
alias.h
align.h
alloc-pool.cc
alloc-pool.h
array-traits.h
asan.cc sanitizer/111736 - skip ASAN for globals in alternate address-space 2023-12-05 15:07:49 +01:00
asan.h
attr-fnspec.h
attribs.cc Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
attribs.h Allow target attributes in non-gnu namespaces 2023-12-02 13:49:52 +00:00
auto-inc-dec.cc
auto-profile.cc
auto-profile.h
backend.h
BASE-VER
basic-block.h
bb-reorder.cc
bb-reorder.h
bitmap.cc
bitmap.h
btfout.cc btf: avoid wrong DATASEC entries for extern vars [PR112849] 2023-12-05 14:02:16 -08:00
builtin-attrs.def
builtin-types.def
builtins.cc Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
builtins.def Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
builtins.h
caller-save.cc
calls.cc Add a new target hook: TARGET_START_CALL_ARGS 2023-12-05 09:44:52 +00:00
calls.h
ccmp.cc
ccmp.h
cfg-flags.def
cfg.cc
cfg.h
cfganal.cc
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 Allow targets to add USEs to asms 2023-12-05 09:52:41 +00:00
cfgexpand.h
cfghooks.cc
cfghooks.h
cfgloop.cc
cfgloop.h
cfgloopanal.cc
cfgloopmanip.cc
cfgloopmanip.h tree-optimization/112856 - fix LC SSA after loop header copying 2023-12-05 14:12:12 +01:00
cfgrtl.cc middle-end/112785 - guard against last_clique overflow 2023-12-04 15:33:58 +01:00
cfgrtl.h
cgraph.cc inter-procedural value range propagation 2023-11-20 19:37:45 +01:00
cgraph.h Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
cgraphbuild.cc
cgraphclones.cc
cgraphunit.cc Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
ChangeLog Daily bump. 2023-12-06 00:17:50 +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
collect2-aix.cc
collect2-aix.h
collect2.cc Do not prepend target triple to -fuse-ld=lld,mold. 2023-11-09 14:03:18 +01:00
collect2.h
collect-utils.cc
collect-utils.h
color-macros.h
combine-stack-adj.cc
combine.cc PR 91865: Avoid ZERO_EXTEND of ZERO_EXTEND in make_compound_operation. 2023-10-26 10:06:59 +01:00
common.md Add an aligned_register_operand predicate 2023-11-21 15:39:11 +00:00
common.opt Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
compare-elim.cc
conditions.h
config.build
config.gcc aarch64: Add support for <arm_sme.h> 2023-12-05 10:11:28 +00:00
config.host mingw: Exclude utf8 manifest [PR111170, PR108865] 2023-11-23 00:48:37 +00:00
config.in gcc: configure: drop Valgrind 3.1 compatibility 2023-11-24 16:17:45 +03:00
configure gcc: configure: drop Valgrind 3.1 compatibility 2023-11-24 16:17:45 +03:00
configure.ac gcc: configure: drop Valgrind 3.1 compatibility 2023-11-24 16:17:45 +03:00
context.cc
context.h
convert.cc middle-end/112622 - convert and vector-to-float 2023-11-20 14:57:52 +01:00
convert.h
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
coretypes.h libcpp: split decls out to rich-location.h 2023-11-19 06:26:40 -05:00
coroutine-builtins.def
coroutine-passes.cc
coverage.cc gcov: Remove TARGET_GCOV_TYPE_SIZE target hook 2023-11-18 12:44:14 +01:00
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
data-streamer-out.cc
data-streamer.cc
data-streamer.h
DATESTAMP Daily bump. 2023-12-06 00:17:50 +00:00
dbgcnt.cc
dbgcnt.def
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 aarch64: Use br instead of ret for eh_return 2023-11-27 15:52:48 +00:00
df.h
dfp.cc
dfp.h
diagnostic-client-data-hooks.h
diagnostic-color.cc
diagnostic-color.h
diagnostic-core.h diagnostics, analyzer: add optional per-diagnostic property bags to SARIF 2023-12-01 08:47:41 -05:00
diagnostic-diagram.h
diagnostic-event-id.h
diagnostic-format-json.cc diagnostics: make option-handling callbacks private 2023-11-14 14:02:10 -05:00
diagnostic-format-sarif.cc diagnostics, analyzer: add optional per-diagnostic property bags to SARIF 2023-12-01 08:47:41 -05:00
diagnostic-format-sarif.h
diagnostic-metadata.h diagnostics, analyzer: add optional per-diagnostic property bags to SARIF 2023-12-01 08:47:41 -05:00
diagnostic-path.h
diagnostic-show-locus.cc diagnostics: don't print annotation lines when there's no column info 2023-11-27 20:09:35 -05:00
diagnostic-spec.cc
diagnostic-spec.h
diagnostic-url.h
diagnostic.cc diagnostics, analyzer: add optional per-diagnostic property bags to SARIF 2023-12-01 08:47:41 -05:00
diagnostic.def
diagnostic.h diagnostics: add diagnostic_context::get_location_text 2023-11-27 20:09:35 -05:00
digraph.cc
digraph.h
dojump.cc
dojump.h
dominance.cc
dominance.h
domwalk.cc
domwalk.h
double-int.cc
double-int.h
dse.cc DSE: Allow vector type for get_stored_val when read < store 2023-11-23 09:20:19 +08:00
dump-context.h
dumpfile.cc
dumpfile.h
dwarf2asm.cc
dwarf2asm.h
dwarf2cfi.cc
dwarf2ctf.cc
dwarf2ctf.h
dwarf2out.cc Assert we don't create recursive DW_AT_{abstract_origin,specification} 2023-11-17 08:53:51 +01:00
dwarf2out.h
early-remat.cc
edit-context.cc input.h: eliminate implicit users of global_dc's file_cache 2023-11-14 11:01:40 -05:00
edit-context.h libcpp: split decls out to rich-location.h 2023-11-19 06:26:40 -05:00
emit-rtl.cc
emit-rtl.h
errors.cc
errors.h
escaped_string.h
et-forest.cc
et-forest.h
except.cc aarch64: Use br instead of ret for eh_return 2023-11-27 15:52:48 +00:00
except.h
exec-tool.in
explow.cc explow: Avoid unnecessary alignment operations 2023-11-06 10:49:59 +00:00
explow.h
expmed.cc
expmed.h
expr.cc Introduce -finline-stringops 2023-11-29 04:00:24 -03:00
expr.h Introduce -finline-stringops 2023-11-29 04:00:24 -03:00
fibonacci_heap.cc
fibonacci_heap.h
file-find.cc
file-find.h
file-prefix-map.cc
file-prefix-map.h
final.cc input.h: eliminate implicit users of global_dc's file_cache 2023-11-14 11:01:40 -05:00
fixed-value.cc
fixed-value.h
flag-types.h Introduce -finline-stringops 2023-11-29 04:00:24 -03:00
flags.h
fold-const-call.cc Add type-generic clz/ctz/clrsb/ffs/parity/popcount builtins [PR111309] 2023-11-14 10:52:16 +01:00
fold-const-call.h
fold-const.cc fold-const: Fix up multiple_of_p [PR112733] 2023-11-29 12:26:50 +01:00
fold-const.h
fold-mem-offsets.cc fold-mem-offsets: Fix powerpc64le-linux profiledbootstrap [PR111601] 2023-11-29 09:14:03 +01:00
fp-test.cc
FSFChangeLog
FSFChangeLog.10
FSFChangeLog.11
function-abi.cc
function-abi.h
function-tests.cc
function.cc Add a target hook for sibcall epilogues 2023-12-05 09:35:57 +00:00
function.h middle-end/112785 - guard against last_clique overflow 2023-12-04 15:33:58 +01:00
fwprop.cc
gcc-ar.cc
gcc-main.cc
gcc-plugin.h
gcc-rich-location.cc c++, analyzer: Expand CAN_HAVE_LOCATION_P macro. 2023-11-15 18:38:45 +01:00
gcc-rich-location.h libcpp: split decls out to rich-location.h 2023-11-19 06:26:40 -05:00
gcc-symtab.h
gcc-urlifier.cc diagnostics: fix gcc-urlifier.cc bootstrap failure [PR112379] 2023-11-04 18:21:54 +00:00
gcc-urlifier.def diagnostics: add automatic URL-ification within messages 2023-11-03 21:46:53 -04:00
gcc-urlifier.h diagnostics: add automatic URL-ification within messages 2023-11-03 21:46:53 -04:00
gcc.cc driver: Fix bootstrap with --enable-default-pie 2023-12-06 09:54:03 +01:00
gcc.h
gcov-counter.def
gcov-dump.cc
gcov-io.cc
gcov-io.h gcc: fix typo in comment in gcov-io.h 2023-10-24 21:08:38 +02:00
gcov-tool.cc
gcov.cc json: reduce use of naked new in json-building code 2023-11-14 11:01:39 -05:00
gcse-common.cc
gcse-common.h
gcse.cc
gcse.h
gdbasan.in
gdbhooks.py
gdbinit.in diagnostics: cleanups to diagnostic-show-locus.cc 2023-11-09 17:22:52 -05:00
gen-pass-instances.awk
genattr-common.cc
genattr.cc
genattrtab.cc
genautomata.cc Make genautomata.cc output reflect insn-attr.h expectation 2023-11-01 10:19:47 -07:00
gencfn-macros.cc
gencheck.cc
genchecksum.cc
gencodes.cc
genconditions.cc
genconfig.cc Add register filter operand to define_register_constraint 2023-11-21 15:39:09 +00:00
genconstants.cc
genemit.cc genemit: Split insn-emit.cc into several partitions. 2023-10-31 13:34:28 +01:00
genenums.cc
generic-match-head.cc
generic-match.h
genextract.cc
genflags.cc
gengenrtl.cc
gengtype-lex.l Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
gengtype-parse.cc
gengtype-state.cc
gengtype.cc
gengtype.h
genhooks.cc Restore build with GCC 4.8 to GCC 5 2023-12-05 17:53:50 +00:00
genmatch.cc libcpp: split decls out to rich-location.h 2023-11-19 06:26:40 -05:00
genmddeps.cc
genmddump.cc
genmodes.cc
genmultilib
genopinit.cc
genoutput.cc
genpeep.cc
genpreds.cc Add register filter operand to define_register_constraint 2023-11-21 15:39:09 +00:00
genrecog.cc
gensupport.cc Add register filter operand to define_register_constraint 2023-11-21 15:39:09 +00:00
gensupport.h Add register filter operand to define_register_constraint 2023-11-21 15:39:09 +00:00
gentarget-def.cc
genversion.cc
ggc-common.cc
ggc-internal.h
ggc-none.cc
ggc-page.cc
ggc-tests.cc
ggc.h
gimple-array-bounds.cc
gimple-array-bounds.h
gimple-builder.cc
gimple-builder.h
gimple-expr.cc
gimple-expr.h
gimple-fold.cc tree-optimization/112320 - bougs debug IL after SCCP 2023-11-02 11:27:51 +01:00
gimple-fold.h tree-optimization/112320 - bougs debug IL after SCCP 2023-11-02 11:27:51 +01:00
gimple-harden-conditionals.cc set hardcmp eh probs 2023-10-26 03:19:29 -03:00
gimple-harden-control-flow.cc hardcfr: support checking at abnormal edges [PR111943] 2023-10-31 09:32:08 -03:00
gimple-if-to-switch.cc
gimple-isel.cc
gimple-iterator.cc
gimple-iterator.h lower-bitint: Fix up -fnon-call-exceptions bit-field load lowering [PR112668] 2023-11-24 08:54:40 +01:00
gimple-laddress.cc
gimple-loop-interchange.cc
gimple-loop-jam.cc
gimple-loop-versioning.cc
gimple-low.cc
gimple-low.h
gimple-lower-bitint.cc lower-bitint: Fix arithmetics followed by extension by many bits [PR112809] 2023-12-06 09:55:30 +01:00
gimple-lower-bitint.h
gimple-match-exports.cc match.pd: Fix parity (X) ^ parity (Y) simplification [PR112719] 2023-11-28 10:15:52 +01:00
gimple-match-head.cc
gimple-match.h internal-fn: Add VCOND_MASK_LEN. 2023-11-06 12:21:57 +01:00
gimple-predicate-analysis.cc tree-optimization/112766 - improve pruning of uninit diagnostics 2023-11-30 13:31:25 +01:00
gimple-predicate-analysis.h
gimple-predict.h
gimple-pretty-print.cc
gimple-pretty-print.h
gimple-range-cache.cc gimple-range-cache: Fix ICEs when dumping details [PR111967] 2023-11-13 08:47:41 +01:00
gimple-range-cache.h
gimple-range-edge.cc
gimple-range-edge.h
gimple-range-fold.cc inter-procedural value range propagation 2023-11-20 19:37:45 +01:00
gimple-range-fold.h Use range_compatible_p in check_operands_p. 2023-12-01 14:13:19 -05:00
gimple-range-gori.cc
gimple-range-gori.h
gimple-range-infer.cc
gimple-range-infer.h
gimple-range-op.cc Add type-generic clz/ctz/clrsb/ffs/parity/popcount builtins [PR111309] 2023-11-14 10:52:16 +01:00
gimple-range-op.h
gimple-range-path.cc
gimple-range-path.h
gimple-range-phi.cc
gimple-range-phi.h
gimple-range-tests.cc
gimple-range-trace.cc
gimple-range-trace.h
gimple-range.cc tree-optimization/112843 - update_stmt doing wrong things 2023-12-06 08:24:35 +01:00
gimple-range.h tree-optimization/112843 - update_stmt doing wrong things 2023-12-06 08:24:35 +01:00
gimple-ssa-backprop.cc
gimple-ssa-isolate-paths.cc
gimple-ssa-nonnull-compare.cc
gimple-ssa-split-paths.cc
gimple-ssa-sprintf.cc
gimple-ssa-store-merging.cc
gimple-ssa-strength-reduction.cc
gimple-ssa-warn-access.cc c: Synthesize nonnull attribute for parameters declared with static [PR110815] 2023-11-11 10:37:46 +01:00
gimple-ssa-warn-access.h
gimple-ssa-warn-alloca.cc
gimple-ssa-warn-restrict.cc
gimple-ssa-warn-restrict.h
gimple-ssa.h tree-optimization/112653 - PTA and return 2023-11-27 15:35:12 +01:00
gimple-streamer-in.cc
gimple-streamer-out.cc
gimple-streamer.h
gimple-walk.cc c++: Implement C++ DR 2406 - [[fallthrough]] attribute and iteration statements 2023-11-17 15:51:02 +01:00
gimple-walk.h
gimple-warn-recursion.cc
gimple.cc Control flow redundancy hardening 2023-10-20 07:50:33 -03:00
gimple.def
gimple.h Control flow redundancy hardening 2023-10-20 07:50:33 -03:00
gimplify-me.cc
gimplify-me.h
gimplify.cc middle-end/112830 - avoid gimplifying non-default addr-space assign to memcpy 2023-12-05 14:51:34 +01:00
gimplify.h
glimits.h c: Refer more consistently to C23 not C2X 2023-11-07 14:20:30 +00:00
godump.cc
graph.cc
graph.h
graphds.cc
graphds.h
graphite-dependences.cc
graphite-isl-ast-to-gimple.cc
graphite-optimize-isl.cc
graphite-poly.cc
graphite-scop-detection.cc
graphite-sese-to-poly.cc
graphite.cc
graphite.h
graphviz.cc
graphviz.h
gsstruct.def
gsyms.h
gsyslimits.h
gtm-builtins.def
haifa-sched.cc Revert "[PATCH v2] In the pipeline, USE or CLOBBER should delay execution if it starts a new live range." 2023-11-12 11:00:12 -07:00
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 Add a new target hook: TARGET_START_CALL_ARGS 2023-12-05 09:44:52 +00:00
hooks.h Add a new target hook: TARGET_START_CALL_ARGS 2023-12-05 09:44:52 +00:00
host-default.cc
hosthooks-def.h
hosthooks.h
hw-doloop.cc
hw-doloop.h
hwint.cc
hwint.h
ifcvt.cc ifcvt: remove obsolete SUBREG handling in noce_convert_multiple_sets 2023-11-23 05:32:59 +01:00
ifcvt.h
inchash.cc
inchash.h
incpath.cc
incpath.h
init-regs.cc
input.cc input.h: eliminate implicit users of global_dc's file_cache 2023-11-14 11:01:40 -05:00
input.h input.h: eliminate implicit users of global_dc's file_cache 2023-11-14 11:01:40 -05:00
insn-addr.h
insn-notes.def
int-vector-builder.h
internal-fn.cc middle-end/110237 - wrong MEM_ATTRs for partial loads/stores 2023-11-29 13:26:31 +01:00
internal-fn.def tree-ssa-math-opts: popcount (X) == 1 to (X ^ (X - 1)) > (X - 1) optimization for direct optab [PR90693] 2023-11-20 10:03:20 +01:00
internal-fn.h tree-ssa-math-opts: popcount (X) == 1 to (X ^ (X - 1)) > (X - 1) optimization for direct optab [PR90693] 2023-11-20 10:03:20 +01:00
intl.cc
intl.h
ipa-comdats.cc
ipa-cp.cc Check operands before invoking fold_range. 2023-11-29 11:43:53 -05:00
ipa-devirt.cc
ipa-fnsummary.cc
ipa-fnsummary.h
ipa-free-lang-data.cc
ipa-icf-gimple.cc
ipa-icf-gimple.h
ipa-icf.cc ipa/92606 - IPA ICF merging variables in different address-space 2023-12-05 14:55:15 +01:00
ipa-icf.h
ipa-inline-analysis.cc
ipa-inline-transform.cc
ipa-inline.cc Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
ipa-inline.h
ipa-modref-tree.cc
ipa-modref-tree.h
ipa-modref.cc ipa: Prune any IPA-CP aggregate constants known by modref to be killed (111157) 2023-10-30 18:36:54 +01:00
ipa-modref.h
ipa-param-manipulation.cc
ipa-param-manipulation.h
ipa-polymorphic-call.cc
ipa-predicate.cc
ipa-predicate.h
ipa-profile.cc
ipa-prop.cc inter-procedural value range propagation 2023-11-20 19:37:45 +01:00
ipa-prop.h inter-procedural value range propagation 2023-11-20 19:37:45 +01:00
ipa-pure-const.cc inter-procedural value range propagation 2023-11-20 19:37:45 +01:00
ipa-ref.cc
ipa-ref.h
ipa-reference.cc
ipa-reference.h
ipa-split.cc Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
ipa-sra.cc ipa-cp: Templatize filtering of m_agg_values 2023-10-30 18:36:40 +01:00
ipa-strub.cc Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
ipa-strub.h Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
ipa-utils.cc
ipa-utils.h inter-procedural value range propagation 2023-11-20 19:37:45 +01:00
ipa-visibility.cc More '#ifdef ASM_OUTPUT_DEF' -> 'if (TARGET_SUPPORTS_ALIASES)' etc. 2023-10-26 08:37:25 +02:00
ipa.cc
ira-build.cc ira: Handle register filters 2023-11-21 15:39:10 +00:00
ira-color.cc ira: Handle register filters 2023-11-21 15:39:10 +00:00
ira-conflicts.cc
ira-costs.cc [IRA]: Fix using undefined dump file in IRA code during insn scheduling 2023-11-22 09:04:28 -05:00
ira-emit.cc
ira-int.h ira: Handle register filters 2023-11-21 15:39:10 +00:00
ira-lives.cc ira: Handle register filters 2023-11-21 15:39:10 +00:00
ira.cc [PR112445][LRA]: Fix "unable to find a register to spill" error 2023-12-01 11:53:54 -05:00
ira.h
is-a.h
iterator-utils.h
json.cc json.cc: use SELFTEST_LOCATION in selftests 2023-11-14 19:48:48 -05:00
json.h json: reduce use of naked new in json-building code 2023-11-14 11:01:39 -05:00
jump.cc
langhooks-def.h Restore build with GCC 4.8 to GCC 5 2023-12-05 17:53:50 +00:00
langhooks.cc diagnostics: convert diagnostic_context to a class 2023-11-03 21:46:47 -04:00
langhooks.h Allow target attributes in non-gnu namespaces 2023-12-02 13:49:52 +00:00
LANGUAGES
lcm.cc
lcm.h
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 [PR112445][LRA]: Fix "unable to find a register to spill" error 2023-12-01 11:53:54 -05:00
lra-coalesce.cc lra: Updates of biggest mode for hard regs [PR112278] 2023-12-05 09:20:55 +00:00
lra-constraints.cc [PR112445][LRA]: Fix "unable to find a register to spill" error 2023-12-01 11:53:54 -05:00
lra-eliminations.cc
lra-int.h lra: Updates of biggest mode for hard regs [PR112278] 2023-12-05 09:20:55 +00:00
lra-lives.cc lra: Updates of biggest mode for hard regs [PR112278] 2023-12-05 09:20:55 +00:00
lra-remat.cc [PR112445][LRA]: Fix "unable to find a register to spill" error 2023-12-01 11:53:54 -05:00
lra-spills.cc
lra.cc lra: Updates of biggest mode for hard regs [PR112278] 2023-12-05 09:20:55 +00:00
lra.h [PR112445][LRA]: Fix "unable to find a register to spill" error 2023-12-01 11:53:54 -05:00
lto-cgraph.cc openmp: Add support for the 'indirect' clause in C/C++ 2023-11-07 15:44:50 +00:00
lto-compress.cc
lto-compress.h
lto-opts.cc
lto-section-in.cc
lto-section-names.h openmp: Add support for the 'indirect' clause in C/C++ 2023-11-07 15:44:50 +00:00
lto-section-out.cc
lto-streamer-in.cc
lto-streamer-out.cc
lto-streamer.cc
lto-streamer.h
lto-wrapper.cc diagnostics: make m_lang_mask private 2023-11-16 08:29:19 -05:00
machmode.def
machmode.h
main.cc
make-unique.h
Makefile.in Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
match.pd MATCH: Fix zero_one_valued_p's convert pattern 2023-12-04 09:30:53 -08: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: Add a backprop hook 2023-11-11 17:29:00 +00:00
modulo-sched.cc
multiple_target.cc
mux-utils.h
obstack-utils.h
omp-api.h
omp-builtins.def openmp: Add support for the 'indirect' clause in C/C++ 2023-11-07 15:44:50 +00:00
omp-expand.cc OpenMP: Add -Wopenmp and use it 2023-11-24 15:31:08 +01:00
omp-expand.h
omp-general.cc OpenMP: Add -Wopenmp and use it 2023-11-24 15:31:08 +01:00
omp-general.h
omp-low.cc OpenMP: Add -Wopenmp and use it 2023-11-24 15:31:08 +01:00
omp-low.h
omp-oacc-kernels-decompose.cc Handle OpenACC 'self' clause for compute constructs in OpenACC 'kernels' decomposition 2023-10-25 11:30:36 +02:00
omp-oacc-neuter-broadcast.cc
omp-offload.cc openmp: Add support for the 'indirect' clause in C/C++ 2023-11-07 15:44:50 +00:00
omp-offload.h openmp: Add support for the 'indirect' clause in C/C++ 2023-11-07 15:44:50 +00:00
omp-simd-clone.cc OpenMP: Add -Wopenmp and use it 2023-11-24 15:31:08 +01:00
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.cc
opt-suggestions.h
optabs-libfuncs.cc
optabs-libfuncs.h
optabs-query.cc
optabs-query.h
optabs-tree.cc
optabs-tree.h
optabs.cc
optabs.def ifcvt: Add support for conditional copysign 2023-11-09 14:06:06 +00:00
optabs.h
optc-gen.awk
optc-save-gen.awk
opth-gen.awk
optinfo-emit-json.cc json: reduce use of naked new in json-building code 2023-11-14 11:01:39 -05:00
optinfo-emit-json.h
optinfo.cc
optinfo.h
opts-common.cc
opts-diagnostic.h diagnostics: make option-handling callbacks private 2023-11-14 14:02:10 -05:00
opts-global.cc
opts-jobserver.h
opts.cc gcc: Introduce -fhardened 2023-11-23 11:54:17 -05:00
opts.h gcc: Introduce -fhardened 2023-11-23 11:54:17 -05:00
ordered-hash-map-tests.cc
ordered-hash-map.h
output.h
params.opt Control flow redundancy hardening 2023-10-20 07:50:33 -03:00
pass_manager.h
passes.cc middle-end/112860 - -fgimple can skip ISEL 2023-12-05 15:54:29 +01:00
passes.def Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
plugin.cc
plugin.def
plugin.h Allow target attributes in non-gnu namespaces 2023-12-02 13:49:52 +00:00
pointer-query.cc
pointer-query.h
poly-int-types.h
poly-int.h
postreload-gcse.cc
postreload.cc
predict.cc
predict.def
predict.h
prefix.cc
prefix.h
pretty-print-urlifier.h diagnostics: add automatic URL-ification within messages 2023-11-03 21:46:53 -04:00
pretty-print.cc diagnostics: add automatic URL-ification within messages 2023-11-03 21:46:53 -04:00
pretty-print.h libcpp: split decls out to rich-location.h 2023-11-19 06:26:40 -05:00
print-rtl-function.cc
print-rtl.cc
print-rtl.h
print-tree.cc
print-tree.h
profile-count.cc
profile-count.h
profile.cc
profile.h
range-op-float.cc [range-op] Remove unused variable in fold_range. 2023-10-26 12:56:20 -04:00
range-op-mixed.h Use range_compatible_p in check_operands_p. 2023-12-01 14:13:19 -05:00
range-op-ptr.cc
range-op.cc Use range_compatible_p in check_operands_p. 2023-12-01 14:13:19 -05:00
range-op.h Add operand_check_p to range-ops. 2023-11-29 11:43:53 -05:00
range.cc
range.h
read-md.cc genemit: Split insn-emit.cc into several partitions. 2023-10-31 13:34:28 +01:00
read-md.h genemit: Split insn-emit.cc into several partitions. 2023-10-31 13:34:28 +01:00
read-rtl-function.cc
read-rtl-function.h
read-rtl.cc Allow md iterators to include other iterators 2023-11-10 15:46:21 +00:00
README.Portability
real.cc
real.h
realmpfr.cc
realmpfr.h
recog.cc Allow targets to add USEs to asms 2023-12-05 09:52:41 +00:00
recog.h recog: Handle register filters 2023-11-21 15:39:09 +00:00
ree.cc
reg-notes.def
reg-stack.cc
regcprop.cc
regcprop.h
reginfo.cc Add register filter operand to define_register_constraint 2023-11-21 15:39:09 +00:00
regrename.cc
regrename.h
regs.h
regset.h
regstat.cc
reload1.cc
reload.cc recog/reload: Remove old UNARY_P operand support 2023-10-24 20:22:39 +01:00
reload.h
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
rtl.cc
rtl.def Add register filter operand to define_register_constraint 2023-11-21 15:39:09 +00:00
rtl.h
rtlanal.cc
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: make m_text_callbacks private 2023-11-14 14:01:55 -05:00
selftest-diagnostic.h
selftest-rtl.cc
selftest-rtl.h
selftest-run-tests.cc diagnostics: add automatic URL-ification within messages 2023-11-03 21:46:53 -04:00
selftest.cc input.h: eliminate implicit users of global_dc's file_cache 2023-11-14 11:01:40 -05:00
selftest.h input.h: eliminate implicit users of global_dc's file_cache 2023-11-14 11:01:40 -05:00
sese.cc
sese.h
shortest-paths.h
shrink-wrap.cc
shrink-wrap.h
signop.h
simplify-rtx.cc Only allow (copysign x, NEG_CONST) -> (fneg (fabs x)) simplification for constant folding [PR112483] 2023-11-17 07:45:33 +08:00
sort.cc sort.cc: fix mentions of sorting networks in comments 2023-11-26 19:37:15 +03:00
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.h
ssa-iterators.h
ssa.h
stack-ptr-mod.cc
statistics.cc
statistics.h
stmt.cc
stmt.h
stor-layout.cc
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 input.h: eliminate implicit users of global_dc's file_cache 2023-11-14 11:01:40 -05:00
symbol-summary.h inter-procedural value range propagation 2023-11-20 19:37:45 +01:00
symtab-clones.cc
symtab-clones.h
symtab-thunks.cc
symtab-thunks.h
symtab.cc
sync-builtins.def
system.h gcc: configure: drop Valgrind 3.1 compatibility 2023-11-24 16:17:45 +03:00
target-def.h Restore build with GCC 4.8 to GCC 5 2023-12-05 17:53:50 +00:00
target-globals.cc Add register filter operand to define_register_constraint 2023-11-21 15:39:09 +00:00
target-globals.h Add register filter operand to define_register_constraint 2023-11-21 15:39:09 +00:00
target-hooks-macros.h
target-insns.def
target.def Restore build with GCC 4.8 to GCC 5 2023-12-05 17:53:50 +00:00
target.h
targhooks.cc Add a new target hook: TARGET_START_CALL_ARGS 2023-12-05 09:44:52 +00:00
targhooks.h Add a new target hook: TARGET_START_CALL_ARGS 2023-12-05 09:44:52 +00:00
timevar.cc json: reduce use of naked new in json-building code 2023-11-14 11:01:39 -05:00
timevar.def analyzer: new warning: -Wanalyzer-infinite-loop [PR106147] 2023-11-17 19:55:25 -05:00
timevar.h
toplev.cc gcc: Introduce -fhardened 2023-11-23 11:54:17 -05: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
tree-affine.h
tree-call-cdce.cc
tree-cfg.cc Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
tree-cfg.h
tree-cfgcleanup.cc
tree-cfgcleanup.h
tree-chrec.cc tree-optimization/112344 - relax final value-replacement fix 2023-11-24 08:49:59 +01:00
tree-chrec.h
tree-complex.cc
tree-core.h openmp: Add support for the 'indirect' clause in C/C++ 2023-11-07 15:44:50 +00:00
tree-data-ref.cc tree-optimization/112495 - alias versioning and address spaces 2023-11-13 15:00:39 +01:00
tree-data-ref.h
tree-dfa.cc
tree-dfa.h
tree-diagnostic-client-data-hooks.cc
tree-diagnostic-path.cc diagnostics: make m_text_callbacks private 2023-11-14 14:01:55 -05:00
tree-diagnostic.cc diagnostics: convert diagnostic_context to a class 2023-11-03 21:46:47 -04:00
tree-diagnostic.h
tree-dump.cc
tree-dump.h
tree-eh.cc rename make_eh_edges to make_eh_edge 2023-10-26 03:06:05 -03:00
tree-eh.h rename make_eh_edges to make_eh_edge 2023-10-26 03:06:05 -03:00
tree-emutls.cc
tree-hash-traits.h
tree-hasher.h
tree-if-conv.cc tree-optimization/112282 - wrong-code with ifcvt hoisting 2023-11-15 13:09:03 +01:00
tree-if-conv.h
tree-inline.cc middle-end/112785 - guard against last_clique overflow 2023-12-04 15:33:58 +01: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 tree-optimization/112281 - loop distribution and zero dependence distances 2023-11-20 14:58:10 +01:00
tree-nested.cc OpenACC 2.7: Implement self clause for compute constructs 2023-10-25 10:49:55 +02:00
tree-nested.h
tree-nrv.cc
tree-object-size.cc tree-optimization/109334: Improve computation for access attribute 2023-10-29 07:47:36 +01:00
tree-object-size.h
tree-outof-ssa.cc
tree-outof-ssa.h
tree-parloops.cc tree-optimization/112653 - PTA and return 2023-11-27 15:35:12 +01:00
tree-parloops.h
tree-pass.h Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
tree-phinodes.cc
tree-phinodes.h
tree-predcom.cc
tree-pretty-print.cc Consistently order 'OMP_CLAUSE_SELF' right after 'OMP_CLAUSE_IF' 2023-10-25 11:14:25 +02:00
tree-pretty-print.h
tree-profile.cc gcov: No atomic ops for -fprofile-update=single 2023-11-23 15:54:43 +01:00
tree-scalar-evolution.cc tree-optimization/112827 - more SCEV cprop fixes 2023-12-05 08:26:04 +01:00
tree-scalar-evolution.h tree-optimization/112305 - SCEV cprop and conditional undefined overflow 2023-10-31 13:10:04 +01:00
tree-sra.cc tree-sra: Avoid returns of references to SRA candidates 2023-11-29 16:25:26 +01:00
tree-sra.h
tree-ssa-address.cc
tree-ssa-address.h
tree-ssa-alias-compare.h
tree-ssa-alias.cc tree-optimization/112653 - PTA and return 2023-11-27 15:35:12 +01:00
tree-ssa-alias.h
tree-ssa-ccp.cc Introduce strub: machine-independent stack scrubbing 2023-12-05 21:07:36 -03:00
tree-ssa-ccp.h
tree-ssa-coalesce.cc
tree-ssa-coalesce.h
tree-ssa-copy.cc
tree-ssa-dce.cc middle-end/112830 - avoid gimplifying non-default addr-space assign to memcpy 2023-12-05 14:51:34 +01: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/112623 - forwprop VEC_PACK_TRUNC generation 2023-11-21 15:44:11 +01:00
tree-ssa-ifcombine.cc tree-optimization/112320 - bougs debug IL after SCCP 2023-11-02 11:27:51 +01:00
tree-ssa-live.cc
tree-ssa-live.h
tree-ssa-loop-ch.cc tree-optimization/112856 - fix LC SSA after loop header copying 2023-12-05 14:12:12 +01: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 tree-optimization/112856 - fix LC SSA after loop header copying 2023-12-05 14:12:12 +01:00
tree-ssa-loop-ivopts.cc tree-optimization/112305 - SCEV cprop and conditional undefined overflow 2023-10-31 13:10:04 +01:00
tree-ssa-loop-ivopts.h
tree-ssa-loop-manip.cc
tree-ssa-loop-manip.h
tree-ssa-loop-niter.cc Add type-generic clz/ctz/clrsb/ffs/parity/popcount builtins [PR111309] 2023-11-14 10:52:16 +01:00
tree-ssa-loop-niter.h
tree-ssa-loop-prefetch.cc
tree-ssa-loop-split.cc tree-optimization/111233 - loop splitting miscompile 2023-11-14 15:10:16 +01: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: popcount (X) == 1 to (X ^ (X - 1)) > (X - 1) optimization for direct optab [PR90693] 2023-11-20 10:03:20 +01:00
tree-ssa-math-opts.h
tree-ssa-operands.cc tree-optimization/112843 - update_stmt doing wrong things 2023-12-06 08:24:35 +01:00
tree-ssa-operands.h
tree-ssa-phiopt.cc Add type-generic clz/ctz/clrsb/ffs/parity/popcount builtins [PR111309] 2023-11-14 10:52:16 +01:00
tree-ssa-phiprop.cc
tree-ssa-pre.cc tree-optimization/112310 - code hoisting undefined behavior 2023-11-03 11:35:03 +01:00
tree-ssa-propagate.cc
tree-ssa-propagate.h
tree-ssa-reassoc.cc swap ops in reassoc to reduce cross backedge FMA 2023-11-23 20:56:31 +08:00
tree-ssa-reassoc.h
tree-ssa-sccvn.cc tree-optimization/112444 - avoid bougs PHI value-numbering 2023-11-09 11:48:32 +01:00
tree-ssa-sccvn.h
tree-ssa-scopedtables.cc
tree-ssa-scopedtables.h
tree-ssa-sink.cc
tree-ssa-strlen.cc
tree-ssa-strlen.h
tree-ssa-structalias.cc tree-optimization/112653 - PTA and return 2023-11-27 15:35:12 +01:00
tree-ssa-tail-merge.cc
tree-ssa-ter.cc
tree-ssa-ter.h
tree-ssa-threadbackward.cc
tree-ssa-threadedge.cc
tree-ssa-threadedge.h
tree-ssa-threadupdate.cc
tree-ssa-threadupdate.h
tree-ssa-uncprop.cc
tree-ssa-uninit.cc
tree-ssa.cc tree-optimization/112653 - PTA and return 2023-11-27 15:35:12 +01: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
tree-switch-conversion.cc
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: skip checking loop exits if loop malformed [PR111878] 2023-11-16 12:11:55 +00:00
tree-vect-loop.cc Fix ambiguity between vect_get_vec_defs with/without vectype 2023-12-01 12:54:50 +01:00
tree-vect-patterns.cc vect: Add bool pattern handling for COND_OPs. 2023-11-20 10:21:58 +01:00
tree-vect-slp-patterns.cc
tree-vect-slp.cc vect: Avoid duplicate_and_interleave for uniform vectors [PR112661] 2023-11-27 13:38:16 +00:00
tree-vect-stmts.cc tree-optimization/112818 - re-instantiate vector type size check for bswap 2023-12-04 14:26:12 +01: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 Fix ambiguity between vect_get_vec_defs with/without vectype 2023-12-01 12:54:50 +01:00
tree-vrp.cc inter-procedural value range propagation 2023-11-20 19:37:45 +01:00
tree-vrp.h
tree.cc middle-end/112732 - stray TYPE_ALIAS_SET in type variant 2023-11-28 16:58:08 +01:00
tree.def
tree.h openmp: Add support for the 'indirect' clause in C/C++ 2023-11-07 15:44:50 +00:00
treestruct.def
tristate.cc
tristate.h
tsan.cc
tsan.h
tsystem.h tsystem.h: Declare calloc/realloc #ifdef inhibit_libc 2023-12-06 08:57:29 +01:00
typeclass.h c, c++: Add new value for vector types for __builtin_classify_type 2023-11-20 10:44:31 +01:00
typed-splay-tree.cc
typed-splay-tree.h
ubsan.cc
ubsan.h
valtrack.cc
valtrack.h
value-pointer-equiv.cc
value-pointer-equiv.h
value-prof.cc
value-prof.h
value-query.cc
value-query.h tree-optimization/112843 - update_stmt doing wrong things 2023-12-06 08:24:35 +01:00
value-range-pretty-print.cc
value-range-pretty-print.h
value-range-storage.cc
value-range-storage.h
value-range.cc Remove simple ranges from trailing zero bitmasks. 2023-11-03 12:54:50 -04:00
value-range.h Use range_compatible_p in check_operands_p. 2023-12-01 14:13:19 -05:00
value-relation.cc
value-relation.h
var-tracking.cc [RA]: Modfify cost calculation for dealing with equivalences 2023-10-26 09:52:14 -04:00
varasm.cc varasm.cc: refer to assemble_external_libcall only ifdef ASM_OUTPUT_EXTERNAL 2023-11-28 19:21:32 +01:00
varasm.h
varpool.cc
vec-perm-indices.cc
vec-perm-indices.h
vec.cc
vec.h
vector-builder.h
vmsdbg.h
vmsdbgout.cc
vr-values.cc
vr-values.h
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 wide_int division/remainder [PR112733] 2023-11-30 09:13:00 +01:00
wide-int.h
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.