gcc/gcc
Tobias Burnus 6f4d39bb3f re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
2011-05-07  Tobias Burnus  <burnus@net-b.de>

        PR fortran/18918
        PR fortran/48919
        * trans.h: Move gfc_init_coarray_decl prototype ...
        * gfortran.h: ... to here.
        * parse.c (translate_all_program_units): Call
        * gfc_init_coarray_decl.
        (gfc_parse_file): Update translate_all_program_units call.
        * trans-decl.c (gfc_init_coarray_decl): Fix variable
        * declaration,
        new argument whether DECL_EXTERNAL should be used.
        (create_main_function): Update gfc_init_coarray_decl call.
        * trans-intrinsic.c (trans_this_image, trans_image_index,
        conv_intrinsic_cobound): Ditto.

From-SVN: r173528
2011-05-07 07:38:08 +02:00
..
ada generalize build_case_label to the rest of the compiler 2011-05-06 03:47:57 +00:00
c-family generalize build_case_label to the rest of the compiler 2011-05-06 03:47:57 +00:00
config rs6000.opt (rs6000_ieeequad, [...]): Remove TargetVariable entries. 2011-05-06 21:34:13 +01:00
cp decl.c (stabilize_save_expr_r): Set *walk_subtrees as appropriate. 2011-05-06 17:57:56 -04:00
doc re PR target/47930 (-marm is undocumented; driver accepts -mno-thumb) 2011-05-06 10:56:32 +00:00
fortran re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays]) 2011-05-07 07:38:08 +02:00
ginclude
go Use backend types for all type conversions. 2011-05-07 00:12:32 +00:00
java generalize build_case_label to the rest of the compiler 2011-05-06 03:47:57 +00:00
lto cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
objc don't use build_function_type in the ObjC/C++ frontends 2011-05-06 01:37:00 +00:00
objcp In gcc/c-family/: 2011-04-15 Nicola Pero <nicola.pero@meta-innovation.com> 2011-04-15 18:15:35 +00:00
po * de.po: Update. 2011-04-26 15:56:51 +01:00
testsuite re PR c++/48909 ([C++0x] ICE in cxx_eval_conditional_expression, at cp/semantics.c:6213) 2011-05-06 17:57:49 -04:00
ABOUT-GCC-NLS
acinclude.m4
aclocal.m4
addresses.h
alias.c Makefile.in (IPA_TYPE_ESCAPE_H): Remove. 2011-03-23 14:49:20 +00:00
alias.h
alloc-pool.c
alloc-pool.h
attribs.c ChangeLog gcc/ 2011-03-21 09:29:36 +01:00
auto-inc-dec.c
BASE-VER * BASE-VER: Change to 4.7.0. 2011-03-14 14:07:26 +01:00
basic-block.h basic-block.h (force_nonfallthru): Move to... 2011-04-07 21:11:51 +00:00
bb-reorder.c
bb-reorder.h
bitmap.c
bitmap.h
bt-load.c
builtin-attrs.def
builtin-types.def
builtins.c builtins.c (fold_builtin_classify_type): Use integer_type_node for the type of the result. 2011-04-29 15:00:04 +00:00
builtins.def
builtins.h
c-aux-info.c
c-config-lang.in
c-convert.c
c-decl.c tree.h (get_pending_sizes): Remove prototype. 2011-05-05 11:49:05 +00:00
c-errors.c
c-lang.c ada-tree.h (union lang_tree_node): Check for TS_COMMON before calling TREE_CHAIN. 2011-04-13 03:09:53 +00:00
c-lang.h
c-objc-common.c
c-objc-common.h
c-parser.c c-decl.c (finish_decl): Don't call get_pending_sizes. 2011-05-05 11:20:31 +01:00
c-tree.h c-decl.c (finish_decl): Don't call get_pending_sizes. 2011-05-05 11:20:31 +01:00
c-typeck.c c-decl.c (check_bitfield_type_and_width): Do not pass NULL to build_int_cst. 2011-05-04 14:56:14 +00:00
caller-save.c tree-ssa-forwprop.c (forward_propagate_into_cond): Avoid typo potentially leading to null pointer dereference. 2011-03-31 07:28:29 -06:00
calls.c calls.c (emit_library_call_value_1): Invoke promote_function_mode hook on libcall arguments. 2011-05-04 12:01:21 +00:00
cfg.c cfg.c (redirect_edge_succ_nodup): Duplicate the varm map before removing the edge. 2011-03-23 11:35:59 -06:00
cfganal.c Remove doubled up words. 2011-04-10 18:46:45 +00:00
cfgbuild.c
cfgcleanup.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
cfgexpand.c cfgexpand.c (stack_var): Remove OFFSET... 2011-04-21 19:16:57 +00:00
cfghooks.c cfghooks.c (redirect_edge_and_branch_force): Localize variable. 2011-04-11 21:54:59 +00:00
cfghooks.h basic-block.h (force_nonfallthru): Move to... 2011-04-07 21:11:51 +00:00
cfglayout.c cfglayout.c (insn_locators_alloc): Initialize curr_location and last_location to UNKNOWN_LOCATION. 2011-03-30 12:32:12 +00:00
cfglayout.h final.c (final_scan_insn): Handle NOTE_INSN_CALL_ARG_LOCATION. 2011-03-16 09:32:13 +01:00
cfgloop.c
cfgloop.h re PR target/48273 (ICE: in create_copy_of_insn_rtx, at sel-sched-ir.c:5604 with -fsel-sched-pipelining -fselective-scheduling2 -march=core2) 2011-04-08 15:49:43 +04:00
cfgloopanal.c
cfgloopmanip.c re PR bootstrap/48000 (LTO bootstrap failed with bootstrap-profiled) 2011-03-07 17:41:53 +01:00
cfgrtl.c basic-block.h (force_nonfallthru): Move to... 2011-04-07 21:11:51 +00:00
cgraph.c cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
cgraph.h cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
cgraphbuild.c cgraphbuild.c (build_cgraph_edges): Update call of cgraph_create_edge and cgraph_create_indirect_edge. 2011-04-26 22:05:50 +00:00
cgraphunit.c cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
ChangeLog cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +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.dataflow
ChangeLog.graphite
ChangeLog.lib
ChangeLog.ptr
ChangeLog.tree-ssa
ChangeLog.tuples
cif-code.def lto-symtab.c (lto_cgraph_replace_node): When call statement is present, also set gimple_call_set_cannot_inline. 2011-04-17 14:22:20 +00:00
collect2-aix.c
collect2-aix.h
collect2.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
collect2.h
combine-stack-adj.c
combine.c re PR debug/47994 (-fcompare-debug failure with -O2 -fpeel-loops -fno-rerun-cse-after-loop -fno-tree-loop-optimize -fno-web) 2011-05-04 03:37:40 +00:00
common.opt Implement -Wno-maybe-uninitialized 2011-04-26 16:06:09 +00:00
compare-elim.c
conditions.h
config.build MAINTAINERS (crx port, [...]): Remove. 2011-03-22 19:58:18 +00:00
config.gcc config.gcc (hppa*64*-*-hpux11*): Modify tm_file and extra_options for 11.31. 2011-05-05 15:49:28 +00:00
config.host MAINTAINERS (crx port, [...]): Remove. 2011-03-22 19:58:18 +00:00
config.in re PR driver/46944 (gcc should accept -fuse-linker-plugin only if linker handles -plugin) 2011-03-16 09:41:16 +00:00
configure configure.ac (gcc_cv_as_sparc_gotdata_op): Specify alignment. 2011-04-26 18:29:11 +00:00
configure.ac configure.ac (gcc_cv_as_sparc_gotdata_op): Specify alignment. 2011-04-26 18:29:11 +00:00
convert.c
convert.h
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
coretypes.h
coverage.c coverage.c (tree_coverage_counter_ref): Use integer_type_node for array-ref indices. 2011-05-04 14:58:51 +00:00
coverage.h split checksum into cfg checksum and line checksum 2011-04-29 00:19:35 +00:00
cppbuiltin.c
cppbuiltin.h
cppdefault.c
cppdefault.h
cppspec.c
cprop.c cprop.c (struct reg_use): Remove. 2011-04-05 19:49:52 +00:00
crtstuff.c
cse.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
cselib.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
cselib.h
cstamp-h.in
DATESTAMP Daily bump. 2011-05-07 00:19:13 +00:00
dbgcnt.c
dbgcnt.def
dbgcnt.h
dbxout.c dbxout.c: (debug_nesting... 2011-04-06 09:29:53 +00:00
dbxout.h
dce.c
dce.h
ddg.c Free sccs field 2011-04-17 07:41:33 +00:00
ddg.h
debug.c emit-rtl.c (try_split): Don't call copy_call_info debug hook. 2011-03-16 09:40:07 +01:00
debug.h debug.h (debug_flush_symbol_queue, [...]): Delete. 2011-04-05 12:02:55 +00:00
defaults.h
DEV-PHASE
df-core.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
df-problems.c re PR rtl-optimization/47612 (RTL crash when cc0 setter moved away from cc0 user) 2011-05-04 20:24:15 +00:00
df-scan.c
df.h
dfp.c
dfp.h
diagnostic-core.h
diagnostic.c
diagnostic.def
diagnostic.h
dojump.c * dojump.c (do_jump_by_parts_greater_rtx): Optimize in specific cases. 2011-03-24 21:56:38 +00:00
dominance.c
domwalk.c
domwalk.h
double-int.c
double-int.h
dse.c cfgcleanup.c (mark_effect): Use bitmap_set_range/bitmap_clear_range instead of loop. 2011-03-19 20:33:45 +03:00
dse.h
dwarf2asm.c dwarf2asm.c (dw2_asm_output_encoded_addr_rtx): Add missing va_end. 2011-03-25 10:39:10 -06:00
dwarf2asm.h
dwarf2out.c dwarf2out.c (contains_subprogram_definition): New function. 2011-05-06 10:34:01 -07:00
dwarf2out.h dwarf2out.h (dwarf2out_frame_debug_init): Declare. 2011-04-01 17:35:13 +00:00
ebitmap.c
ebitmap.h
emit-rtl.c gengenrtl.c (special_rtx): PC, CC0 and RETURN are special. 2011-05-03 11:52:38 +00:00
emit-rtl.h
emutls.c
errors.c
errors.h
et-forest.c
et-forest.h
except.c generalize build_case_label to the rest of the compiler 2011-05-06 03:47:57 +00:00
except.h
exec-tool.in
explow.c explow.c (promote_mode): Move variable declarations before code. 2011-05-04 13:51:01 +00:00
expmed.c expmed.c (expand_variable_shift): Rename to ... 2011-05-05 12:26:05 +00:00
expmed.h
expr.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
expr.h expr.h (expand_shift): Rename to ... 2011-04-29 14:20:41 +00:00
final.c re PR middle-end/48597 (x86-64 unwind register save location misses half-register write?) 2011-04-28 19:01:02 +02:00
fixed-value.c
fixed-value.h
flag-types.h
flags.h
fold-const.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
fp-test.c
FSFChangeLog
FSFChangeLog.10
FSFChangeLog.11
function.c function.c (init_function_start): Call decide_function_section. 2011-05-03 13:08:36 +00:00
function.h tree.h (get_pending_sizes): Remove prototype. 2011-05-05 11:49:05 +00:00
fwprop.c
gbl-ctors.h
gcc-plugin.h
gcc.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
gcc.h
gccspec.c
gcov-dump.c split checksum into cfg checksum and line checksum 2011-04-29 00:19:35 +00:00
gcov-io.c * gcov-io.c: Use GCC Runtime Library Exception. 2011-04-06 17:04:18 +01:00
gcov-io.h split checksum into cfg checksum and line checksum 2011-04-29 00:19:35 +00:00
gcov-iov.c
gcov.c split checksum into cfg checksum and line checksum 2011-04-29 00:19:35 +00:00
gcse.c gcse.c (modify_mem_list): Convert to an array of VECs. 2011-04-05 17:20:44 +00:00
gcse.h
gdbinit.in
genattr.c
genattrtab.c
genautomata.c
gencheck.c
genchecksum.c
gencodes.c
genconditions.c
genconfig.c
genconstants.c
genemit.c gengenrtl.c (special_rtx): PC, CC0 and RETURN are special. 2011-05-03 11:52:38 +00:00
genenums.c
genextract.c
genflags.c
gengenrtl.c gengenrtl.c (special_rtx): PC, CC0 and RETURN are special. 2011-05-03 11:52:38 +00:00
gengtype-lex.l
gengtype-parse.c
gengtype-state.c gengtype-state.c (read_a_state_token): Fix argument to obstack_free. 2011-04-21 08:53:43 -06:00
gengtype.c gengtype.c (open_base_files): Add ipa-inline.h include. 2011-04-22 20:04:42 +00:00
gengtype.h gengtype.h: Updated copyright year. 2011-04-19 09:45:18 +00:00
genhooks.c Remove doubled up words. 2011-04-10 18:46:45 +00:00
genmddeps.c
genmodes.c
genmultilib
genopinit.c md.texi (vec_load_lanes, [...]): Document. 2011-05-03 07:46:54 +00:00
genoutput.c recog.h (insn_operand_data): Add an "allows_mem" field. 2011-04-15 09:35:03 +00:00
genpeep.c
genpreds.c genpreds.c (process_define_predicate): Move most processing to gensupport.c. 2011-04-12 12:51:10 +00:00
genrecog.c genpreds.c (process_define_predicate): Move most processing to gensupport.c. 2011-04-12 12:51:10 +00:00
gensupport.c * gensupport.c (read_md_rtx): Fix typo in comment. 2011-04-23 00:33:15 +00:00
gensupport.h gensupport.h (pattern_stats): New structure. 2011-04-01 08:15:08 +00:00
ggc-common.c
ggc-internal.h
ggc-none.c
ggc-page.c
ggc-zone.c
ggc.h
gimple-fold.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
gimple-fold.h re PR tree-optimization/46562 (CCP currently needs iteration for &a[i]) 2011-03-24 11:23:29 +00:00
gimple-iterator.c except.c (set_nothrow_function_flags): Call cgraph_get_node instead of cgraph_node. 2011-04-11 16:57:06 +02:00
gimple-low.c Makefile.in (INTERNAL_FN_DEF, [...]): Define. 2011-04-20 08:21:25 +00:00
gimple-pretty-print.c Makefile.in (INTERNAL_FN_DEF, [...]): Define. 2011-04-20 08:21:25 +00:00
gimple-pretty-print.h
gimple.c * gimple.c (walk_gimple_op) <GIMPLE_CALL>: Fix couple of oversights. 2011-04-21 14:15:51 +00:00
gimple.def
gimple.h Makefile.in (INTERNAL_FN_DEF, [...]): Define. 2011-04-20 08:21:25 +00:00
gimplify.c generalize build_case_label to the rest of the compiler 2011-05-06 03:47:57 +00:00
glimits.h
godump.c godump.c (go_format_type): Use exported Go name for anonymous field name. 2011-04-21 23:38:34 +00:00
graph.c
graph.h
graphds.c
graphds.h
graphite-blocking.c
graphite-clast-to-gimple.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
graphite-clast-to-gimple.h Fix PR47127: call cloog_state_malloc and cloog_state_free only once. 2011-03-12 22:05:38 +00:00
graphite-cloog-compat.h re PR bootstrap/48102 (Bootstrap failure: error: macro "build_cloog_prog" requires 4 arguments, but only 3 given) 2011-03-14 09:18:52 +01:00
graphite-cloog-util.c
graphite-cloog-util.h
graphite-dependences.c
graphite-dependences.h
graphite-flattening.c
graphite-interchange.c
graphite-poly.c
graphite-poly.h
graphite-ppl.c
graphite-ppl.h
graphite-scop-detection.c
graphite-scop-detection.h
graphite-sese-to-poly.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
graphite-sese-to-poly.h
graphite.c Fix PR47127: call cloog_state_malloc and cloog_state_free only once. 2011-03-12 22:05:38 +00:00
gsstruct.def
gstab.h
gsyms.h
gsyslimits.h
gthr-aix.h
gthr-dce.h
gthr-gnat.c
gthr-gnat.h
gthr-lynx.h
gthr-mipssde.h
gthr-nks.h
gthr-posix95.h
gthr-posix.c
gthr-posix.h
gthr-rtems.h
gthr-single.h
gthr-tpf.h
gthr-vxworks.h
gthr-win32.h
gthr.h gthr-solaris.h: Remove. 2011-03-21 12:33:34 +00:00
haifa-sched.c haifa-sched.c (sched_emit_insn): Emit insn before first non-scheduled insn. 2011-05-02 13:16:55 +00:00
hard-reg-set.h
highlev-plugin-common.h
hooks.c hooks.h (hook_bool_mode_uhwi_false): Declare. 2011-05-03 07:46:10 +00:00
hooks.h hooks.h (hook_bool_mode_uhwi_false): Declare. 2011-05-03 07:46:10 +00:00
host-default.c
hosthooks-def.h
hosthooks.h
hwint.c
hwint.h
ifcvt.c re PR target/43920 (Choosing conditional execution over conditional branches for code size in some cases.) 2011-04-07 08:10:34 +00:00
implicit-zee.c
incpath.c Changelog c-family/ 2011-03-25 20:20:52 +01:00
incpath.h
init-regs.c
input.c
input.h
insn-addr.h
insn-notes.def final.c (final_scan_insn): Handle NOTE_INSN_CALL_ARG_LOCATION. 2011-03-16 09:32:13 +01:00
integrate.c reload.h (reg_equiv_constant): Move into new structure reg_equivs, define accessor macro. 2011-03-30 09:18:30 -06:00
integrate.h reload.h (reg_equiv_constant): Move into new structure reg_equivs, define accessor macro. 2011-03-30 09:18:30 -06:00
internal-fn.c md.texi (vec_load_lanes, [...]): Document. 2011-05-03 07:46:54 +00:00
internal-fn.def md.texi (vec_load_lanes, [...]): Document. 2011-05-03 07:46:54 +00:00
internal-fn.h internal-fn.h (internal_fn_name_array): Declare. 2011-04-28 01:25:01 +00:00
intl.c
intl.h
ipa-cp.c cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
ipa-inline-analysis.c cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
ipa-inline-transform.c cgraphunit.c (cgraph_preserve_function_body_p): Accept a cgraph node instead of a decl. 2011-04-29 00:49:46 +02:00
ipa-inline.c cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
ipa-inline.h ipa-inline.c (caller_growth_limits): Fix thinko when 2011-05-01 19:11:07 +00:00
ipa-prop.c cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
ipa-prop.h ipa-prop.c (ipa_propagate_indirect_call_infos): Remove obsolette WPA hack. 2011-04-24 10:43:00 +00:00
ipa-pure-const.c cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
ipa-ref-inline.h
ipa-ref.c
ipa-ref.h
ipa-reference.c cgraph.h (cgraph_postorder): Remove declaration. 2011-04-30 01:42:15 +02:00
ipa-reference.h
ipa-split.c gengtype.c (open_base_files): Add ipa-inline.h include. 2011-04-22 20:04:42 +00:00
ipa-utils.c cgraph.h (cgraph_node_set_def, [...]): Move out of GTY; replace hash by pointer map. 2011-05-03 17:22:58 +00:00
ipa-utils.h cgraph.h (cgraph_postorder): Remove declaration. 2011-04-30 01:42:15 +02:00
ipa.c cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
ira-build.c reginfo.c (memory_move_cost): Change rclass argument type form 'enum reg_class' to reg_class_t. 2011-05-01 16:33:13 +04:00
ira-color.c re PR libstdc++/4435 (Object file has undefined basic_string symbol as local.) 2011-04-08 17:17:50 +00:00
ira-conflicts.c ira-conflicts.c (build_object_conflicts): Add unused attribute to parent_max. 2011-03-29 16:44:19 +00:00
ira-costs.c target.def (legitimate_constant_p): New hook. 2011-04-21 09:38:43 +00:00
ira-emit.c Remove doubled up words. 2011-04-10 18:46:45 +00:00
ira-int.h reginfo.c (memory_move_cost): Change rclass argument type form 'enum reg_class' to reg_class_t. 2011-05-01 16:33:13 +04:00
ira-lives.c [multiple changes] 2011-03-29 01:02:05 +00:00
ira.c reginfo.c (memory_move_cost): Change rclass argument type form 'enum reg_class' to reg_class_t. 2011-05-01 16:33:13 +04:00
ira.h [multiple changes] 2011-03-29 01:02:05 +00:00
jump.c gengenrtl.c (special_rtx): PC, CC0 and RETURN are special. 2011-05-03 11:52:38 +00:00
langhooks-def.h dwarf2out.c (dwarf_attr_name): Map DW_AT_GNAT_descriptive_type. 2011-04-01 23:38:57 +00:00
langhooks.c
langhooks.h dwarf2out.c (dwarf_attr_name): Map DW_AT_GNAT_descriptive_type. 2011-04-01 23:38:57 +00:00
LANGUAGES
lcm.c
libfuncs.h
libgcc2.c libgcc2.c (__lshrdi3, [...]): Use W_TYPE_SIZE. 2011-03-23 01:34:55 +00:00
libgcc2.h
libgcc-libsystem.ver
libgcc-std.ver
libgcov.c split checksum into cfg checksum and line checksum 2011-04-29 00:19:35 +00:00
limitx.h
limity.h
lists.c
longlong.h
loop-doloop.c
loop-init.c
loop-invariant.c [multiple changes] 2011-03-29 01:02:05 +00:00
loop-iv.c
loop-unroll.c
loop-unswitch.c
lower-subreg.c expr.h (expand_shift): Rename to ... 2011-04-29 14:20:41 +00:00
lto-cgraph.c cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
lto-compress.c
lto-compress.h
lto-opts.c lto-opts.c (register_user_option_p, [...]): Make type argument unsigned. 2011-03-29 22:59:34 +01:00
lto-section-in.c lto-section-in.c (lto_input_1_unsigned): Move to lto-streamer.h 2011-05-02 12:37:13 +00:00
lto-section-out.c lto-section-in.c (lto_input_1_unsigned): Move to lto-streamer.h 2011-05-02 12:37:13 +00:00
lto-streamer-in.c tree.h (get_pending_sizes): Remove prototype. 2011-05-05 11:49:05 +00:00
lto-streamer-out.c cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
lto-streamer.c lto-streamer.c (lto_streamer_cache_insert_1, [...]): Use pointer map instead of hashtable. 2011-05-02 16:44:04 +00:00
lto-streamer.h lto-streamer.c (lto_streamer_cache_insert_1, [...]): Use pointer map instead of hashtable. 2011-05-02 16:44:04 +00:00
lto-symtab.c cgraph.h (cgraph_node): Remove function declaration. 2011-04-12 11:27:18 +02:00
lto-wrapper.c
machmode.def
machmode.h
main.c
Makefile.in * config/alpha/alpha.h (CODE_MASK, MIPS_IS_STAB, MIPS_MARK_STAB) 2011-05-04 11:04:50 +00:00
matrix-reorg.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
mcf.c
mips-tdump.c * config/alpha/alpha.h (CODE_MASK, MIPS_IS_STAB, MIPS_MARK_STAB) 2011-05-04 11:04:50 +00:00
mips-tfile.c * config/alpha/alpha.h (CODE_MASK, MIPS_IS_STAB, MIPS_MARK_STAB) 2011-05-04 11:04:50 +00:00
mkconfig.sh
mkmap-flat.awk
mkmap-symver.awk
mode-classes.def
mode-switching.c
modulo-sched.c New flag to apply SMS when SC equals 1 2011-04-17 14:32:24 +00:00
omega.c
omega.h
omp-builtins.def
omp-low.c generalize build_case_label to the rest of the compiler 2011-05-06 03:47:57 +00:00
ONEWS
opt-functions.awk opt-functions.awk (var_type_struct): Handle Enum options. 2011-05-05 15:59:55 +01:00
opt-gather.awk
opt-include.awk
optabs.c expr.h (expand_shift): Rename to ... 2011-04-29 14:20:41 +00:00
optabs.h md.texi (vec_load_lanes, [...]): Document. 2011-05-03 07:46:54 +00:00
optc-gen.awk opt-functions.awk (var_type_struct): Handle Enum options. 2011-05-05 15:59:55 +01:00
opth-gen.awk lto-opts.c (register_user_option_p, [...]): Make type argument unsigned. 2011-03-29 22:59:34 +01:00
opts-common.c opts-common.c (decode_cmdline_options_to_array): Remove variable argv_copied. 2011-04-12 17:29:23 +01:00
opts-diagnostic.h
opts-global.c Proper handling of -Werror=coverage-mismatch 2011-04-22 19:11:49 +00:00
opts.c Implement -Wno-maybe-uninitialized 2011-04-26 16:06:09 +00:00
opts.h options.texi (ToLower): Document. 2011-04-04 11:17:11 +01:00
output.h
params.c
params.def gengtype.c (open_base_files): Add ipa-inline.h include. 2011-04-22 20:04:42 +00:00
params.h invoke.texi (max-stores-to-sink): Document. 2011-03-24 08:23:39 +00:00
passes.c cgraph.c (cgraph_add_thunk): Create real function node instead of alias node... 2011-05-06 23:00:49 +00:00
plugin.c
plugin.def
plugin.h
pointer-set.c
pointer-set.h
postreload-gcse.c postreload-gcse.c (gcse_after_reload_main): Add calls to statistics_counter_event. 2011-04-13 19:39:02 +00:00
postreload.c reginfo.c (memory_move_cost): Change rclass argument type form 'enum reg_class' to reg_class_t. 2011-05-01 16:33:13 +04:00
predict.c tree-inline.c (remap_eh_region_tree_nr): Use integer_type_node for the remapped region number. 2011-04-29 13:11:18 +00:00
predict.def
predict.h
prefix.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
prefix.h
pretty-print.c
pretty-print.h
print-rtl.c re PR debug/45882 (No debug info for vars depending on unused parameter) 2011-03-16 09:35:31 +01:00
print-tree.c tree.h (struct tree_int_cst, [...]): Include tree_typed instead of tree_common. 2011-04-13 17:04:36 +00:00
profile.c split checksum into cfg checksum and line checksum 2011-04-29 00:19:35 +00:00
profile.h Remove cgraph pid 2011-04-22 00:03:41 +00:00
read-md.c Changelog c-family/ 2011-03-25 20:20:52 +01:00
read-md.h
read-rtl.c
README.Portability discourage unnecessary use of if before free 2011-04-20 18:18:43 +00:00
real.c re PR middle-end/47903 (var-tracking.c: valgrind error) 2011-02-27 20:37:35 +01:00
real.h
realmpfr.c
realmpfr.h
recog.c target.def (legitimate_constant_p): New hook. 2011-04-21 09:38:43 +00:00
recog.h recog.h (insn_operand_data): Add an "allows_mem" field. 2011-04-15 09:35:03 +00:00
reg-notes.def
reg-stack.c basic-block.h (fixup_abnormal_edges): Adjust prototype. 2011-03-26 13:03:46 +00:00
regcprop.c
reginfo.c reginfo.c (memory_move_cost): Change rclass argument type form 'enum reg_class' to reg_class_t. 2011-05-01 16:33:13 +04:00
regmove.c [multiple changes] 2011-03-29 01:02:05 +00:00
regrename.c
regs.h Remove doubled up words. 2011-04-10 18:46:45 +00:00
regset.h
regstat.c Remove doubled up words. 2011-04-10 18:46:45 +00:00
reload1.c target.def (legitimate_constant_p): New hook. 2011-04-21 09:38:43 +00:00
reload.c target.def (legitimate_constant_p): New hook. 2011-04-21 09:38:43 +00:00
reload.h reginfo.c (memory_move_cost): Change rclass argument type form 'enum reg_class' to reg_class_t. 2011-05-01 16:33:13 +04:00
reorg.c
resource.c
resource.h
rtl-error.c
rtl-error.h
rtl.c gengenrtl.c (special_rtx): PC, CC0 and RETURN are special. 2011-05-03 11:52:38 +00:00
rtl.def re PR debug/45882 (No debug info for vars depending on unused parameter) 2011-03-16 09:35:31 +01:00
rtl.h function.c (init_function_start): Call decide_function_section. 2011-05-03 13:08:36 +00:00
rtlanal.c
rtlhooks-def.h
rtlhooks.c
sbitmap.c
sbitmap.h
sched-deps.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
sched-ebb.c sched-ebb.c (begin_schedule_ready): Remove second argument. 2011-04-01 17:46:17 +00:00
sched-int.h re PR rtl-optimization/48272 (internal compiler error: in setup_insn_reg_pressure_info, at haifa-sched.c:1124) 2011-04-08 17:25:29 +04:00
sched-rgn.c sched-ebb.c (begin_schedule_ready): Remove second argument. 2011-04-01 17:46:17 +00:00
sched-vis.c
sdbout.c emit-rtl.c (try_split): Don't call copy_call_info debug hook. 2011-03-16 09:40:07 +01:00
sdbout.h
sel-sched-dump.c
sel-sched-dump.h
sel-sched-ir.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
sel-sched-ir.h re PR rtl-optimization/48302 (ICE: SIGSEGV in reposition_prologue_and_epilogue_notes (function.c:5662) with -fcrossjumping -fselective-scheduling2) 2011-04-08 15:53:25 +04:00
sel-sched.c ipa-inline.c: Fix comment typos; do not inline gt-ipa-inline.h 2011-04-18 18:39:39 +00:00
sel-sched.h
sese.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
sese.h
simplify-rtx.c re PR debug/48204 (ICE: in decimal_to_decnumber, at dfp.c:115 with -fno-tree-ccp -fno-tree-dominator-opts -fno-tree-fre -g) 2011-03-24 19:58:58 +01:00
sparseset.c
sparseset.h
sreal.c
sreal.h
ssaexpand.h
stab.def
stack-ptr-mod.c
statistics.c
statistics.h
stmt.c tree-ssa-forwprop.c (forward_propagate_into_cond): Avoid typo potentially leading to null pointer dereference. 2011-03-31 07:28:29 -06:00
stor-layout.c re PR c++/40975 (ICE in copy_tree_r on array new) 2011-05-05 16:50:57 -04:00
store-motion.c
stringpool.c
sync-builtins.def
system.h ansidecl.h (ENUM_BITFIELD): New, from gcc/system.h. 2011-04-25 18:05:37 +00:00
target-def.h [multiple changes] 2011-03-29 01:02:05 +00:00
target-globals.c
target-globals.h
target-hooks-macros.h tm.texi.in: Document C target hooks as separate from general target hooks. 2011-04-06 12:08:17 +01:00
target.def hooks.h (hook_bool_mode_uhwi_false): Declare. 2011-05-03 07:46:10 +00:00
target.h tm.texi.in: Document C target hooks as separate from general target hooks. 2011-04-06 12:08:17 +01:00
targhooks.c calls.c (emit_library_call_value_1): Invoke promote_function_mode hook on libcall arguments. 2011-05-04 12:01:21 +00:00
targhooks.h tm.texi.in: Document C target hooks as separate from general target hooks. 2011-04-06 12:08:17 +01:00
timevar.c Upgrade the utility of timevars. 2011-05-02 22:19:48 +00:00
timevar.def Upgrade the utility of timevars. 2011-05-02 22:19:48 +00:00
timevar.h Upgrade the utility of timevars. 2011-05-02 22:19:48 +00:00
tlink.c Changelog c-family/ 2011-03-25 20:20:52 +01:00
toplev.c Upgrade the utility of timevars. 2011-05-02 22:19:48 +00:00
toplev.h
tracer.c
tree-affine.c
tree-affine.h
tree-browser.c
tree-browser.def Remove trailing white spaces. 2009-11-25 02:55:54 -08:00
tree-call-cdce.c
tree-cfg.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
tree-cfgcleanup.c
tree-chrec.c tree-nested.c (get_trampoline_type): Use size_int. 2011-04-29 12:00:55 +00:00
tree-chrec.h
tree-complex.c
tree-data-ref.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
tree-data-ref.h invoke.texi (max-stores-to-sink): Document. 2011-03-24 08:23:39 +00:00
tree-dfa.c tree-dfa.c (renumber_gimple_stmt_uids): Also number PHIs. 2011-03-30 15:43:59 +00:00
tree-diagnostic.c
tree-diagnostic.h
tree-dump.c Changelog c-family/ 2011-03-25 20:20:52 +01:00
tree-dump.h
tree-eh.c generalize build_case_label to the rest of the compiler 2011-05-06 03:47:57 +00:00
tree-emutls.c cgraph.h (cgraph_node_set_def, [...]): Move out of GTY; replace hash by pointer map. 2011-05-03 17:22:58 +00:00
tree-flow-inline.h re PR tree-optimization/46562 (CCP currently needs iteration for &a[i]) 2011-03-24 11:23:29 +00:00
tree-flow.h Makefile.in (tree-ssa-structalias.o): Remove gt-tree-ssa-structalias.h dependency. 2011-04-27 14:16:49 +00:00
tree-if-conv.c re PR c/47892 (Fails to vectorize comparison code, if-conversion fails) 2011-04-20 15:50:26 +00:00
tree-inline.c re PR c++/40975 (ICE in copy_tree_r on array new) 2011-05-05 16:50:57 -04:00
tree-inline.h lto-symtab.c (lto_cgraph_replace_node): When call statement is present, also set gimple_call_set_cannot_inline. 2011-04-17 14:22:20 +00:00
tree-into-ssa.c
tree-iterator.c
tree-iterator.h
tree-loop-distribution.c
tree-mudflap.c tree-nested.c (get_trampoline_type): Use size_int. 2011-04-29 12:00:55 +00:00
tree-mudflap.h
tree-nested.c tree-nested.c (get_trampoline_type): Use size_int. 2011-04-29 12:00:55 +00:00
tree-nomudflap.c
tree-nrv.c
tree-object-size.c re PR middle-end/48269 (Incorrect fortify warning for a packed struct member) 2011-03-24 12:44:58 +00:00
tree-optimize.c tree.h (get_pending_sizes): Remove prototype. 2011-05-05 11:49:05 +00:00
tree-outof-ssa.c
tree-parloops.c
tree-pass.h Makefile.in (IPA_TYPE_ESCAPE_H): Remove. 2011-03-23 14:49:20 +00:00
tree-phinodes.c
tree-predcom.c
tree-pretty-print.c re PR middle-end/47650 (wrong output of print_generic_decl() called from a plugin) 2011-03-15 13:39:28 +00:00
tree-pretty-print.h
tree-profile.c use tls for ic vars 2011-04-29 17:13:23 +00:00
tree-scalar-evolution.c
tree-scalar-evolution.h
tree-sra.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
tree-ssa-address.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
tree-ssa-alias.c tree-ssa-alias.c (indirect_refs_may_alias_p): Fix TARGET_MEM_REF handling. 2011-04-27 09:17:01 +00:00
tree-ssa-alias.h Makefile.in (tree-ssa-structalias.o): Remove gt-tree-ssa-structalias.h dependency. 2011-04-27 14:16:49 +00:00
tree-ssa-ccp.c Makefile.in (INTERNAL_FN_DEF, [...]): Define. 2011-04-20 08:21:25 +00:00
tree-ssa-coalesce.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
tree-ssa-copy.c re PR tree-optimization/48290 (FAIL: gcc.dg/vect/pr38529.c, ICE in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1072) 2011-04-15 14:02:41 +00:00
tree-ssa-copyrename.c postreload-gcse.c (gcse_after_reload_main): Add calls to statistics_counter_event. 2011-04-13 19:39:02 +00:00
tree-ssa-dce.c re PR middle-end/48590 (Alias analysis confused by builtin-stack-save/restore) 2011-04-14 12:19:28 +00:00
tree-ssa-dom.c Makefile.in (INTERNAL_FN_DEF, [...]): Define. 2011-04-20 08:21:25 +00:00
tree-ssa-dse.c tree-ssa-dse.c (struct dse_global_data, [...]): Remove. 2011-04-14 13:38:33 +00:00
tree-ssa-forwprop.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
tree-ssa-ifcombine.c
tree-ssa-live.c Makefile.in (tree-ssa-structalias.o): Remove gt-tree-ssa-structalias.h dependency. 2011-04-27 14:16:49 +00:00
tree-ssa-live.h
tree-ssa-loop-ch.c
tree-ssa-loop-im.c
tree-ssa-loop-ivcanon.c
tree-ssa-loop-ivopts.c remove useless if-before-free tests 2011-04-20 18:19:03 +00:00
tree-ssa-loop-manip.c
tree-ssa-loop-niter.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
tree-ssa-loop-prefetch.c
tree-ssa-loop-unswitch.c
tree-ssa-loop.c
tree-ssa-math-opts.c postreload-gcse.c (gcse_after_reload_main): Add calls to statistics_counter_event. 2011-04-13 19:39:02 +00:00
tree-ssa-operands.c gimple.h (gimple_asm_clobbers_memory_p): Declare. 2011-04-15 14:27:55 +00:00
tree-ssa-operands.h
tree-ssa-phiopt.c tree-ssa-forwprop.c (forward_propagate_into_cond): Avoid typo potentially leading to null pointer dereference. 2011-03-31 07:28:29 -06:00
tree-ssa-phiprop.c
tree-ssa-pre.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
tree-ssa-propagate.c
tree-ssa-propagate.h
tree-ssa-reassoc.c re PR tree-optimization/48734 (ICE in eliminate_redundant_comparison, at tree-ssa-reassoc.c:1321) 2011-04-26 15:33:49 +02:00
tree-ssa-sccvn.c re PR tree-optimization/48822 (G++ gets stucks and never finishes compilation when enabling -O2/3 optimization options.) 2011-05-02 13:11:27 +00:00
tree-ssa-sccvn.h
tree-ssa-sink.c re PR c/48146 (ICE tree check: expected ssa_name, have var_decl in has_zero_uses, at tree-flow-inline.h:342) 2011-03-16 12:41:08 +00:00
tree-ssa-structalias.c tree-ssa-structalias.c (get_fi_for_callee): Restructure. 2011-04-29 10:59:33 +00:00
tree-ssa-ter.c
tree-ssa-threadedge.c tree-ssa-threadedge.c (thread_across_edge): Add missing return. 2011-04-29 21:46:17 -06:00
tree-ssa-threadupdate.c tree-ssa-threadupdate.c (create_block_for_threading): Do not call remove_ctrl_stmt_and_useless_edges. 2011-05-06 09:13:35 -06:00
tree-ssa-uncprop.c
tree-ssa-uninit.c Implement -Wno-maybe-uninitialized 2011-04-26 16:06:09 +00:00
tree-ssa.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
tree-ssanames.c tree-flow.h (struct gimple_df): Make free_ssanames a VEC. 2011-04-13 20:32:30 +00:00
tree-stdarg.c tree-stdarg.c (va_list_counter_bump): Handle bumps via MEM_REF. 2011-03-23 16:02:30 +00:00
tree-stdarg.h
tree-switch-conversion.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
tree-tailcall.c re PR tree-optimization/41490 (tree-ssa-sink does not really work) 2011-03-15 11:09:09 +00:00
tree-vect-data-refs.c md.texi (vec_load_lanes, [...]): Document. 2011-05-03 07:46:54 +00:00
tree-vect-generic.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
tree-vect-loop-manip.c
tree-vect-loop.c tree-vect-loop.c (vectorizable_reduction): Check reduction cost before setting STMT_VINFO_TYPE. 2011-05-04 13:09:26 +00:00
tree-vect-patterns.c gimple.c (gimple_rhs_class_table): POLYNOMIAL_CHREC is not a valid RHS. 2011-03-22 11:12:57 +00:00
tree-vect-slp.c md.texi (vec_load_lanes, [...]): Document. 2011-05-03 07:46:54 +00:00
tree-vect-stmts.c md.texi (vec_load_lanes, [...]): Document. 2011-05-03 07:46:54 +00:00
tree-vectorizer.c
tree-vectorizer.h md.texi (vec_load_lanes, [...]): Document. 2011-05-03 07:46:54 +00:00
tree-vrp.c tree.h (int_const_binop): Remove notrunc argument. 2011-05-04 09:04:53 +00:00
tree.c generalize build_case_label to the rest of the compiler 2011-05-06 03:47:57 +00:00
tree.def
tree.h generalize build_case_label to the rest of the compiler 2011-05-06 03:47:57 +00:00
treestruct.def tree.h (struct typed_tree): New. 2011-04-12 02:18:41 +00:00
tsystem.h
typeclass.h
unwind-c.c
unwind-compat.c
unwind-compat.h
unwind-dw2-fde-compat.c
unwind-dw2-fde-darwin.c
unwind-dw2-fde-glibc.c
unwind-dw2-fde.c
unwind-dw2-fde.h
unwind-dw2.c unwind-dw2.c: Include sys/sdt.h if it exists. 2011-03-14 19:47:58 +00:00
unwind-dw2.h
unwind-generic.h
unwind-pe.h
unwind-sjlj.c
unwind.inc
value-prof.c Remove cgraph pid 2011-04-22 00:03:41 +00:00
value-prof.h
var-tracking.c re PR debug/48902 (var-tracking.c fails to compile for PCC_STATIC_STRUCT_RETURN) 2011-05-06 09:23:03 +02:00
varasm.c function.c (init_function_start): Call decide_function_section. 2011-05-03 13:08:36 +00:00
varpool.c
vec.c
vec.h
vecir.h
vecprim.h
version.c
version.h
vmsdbg.h
vmsdbgout.c vmsdbgout.c (write_srccorr): Compute file length from the string. 2011-04-21 13:01:26 +00:00
web.c
xcoff.h
xcoffout.c
xcoffout.h

Copyright (C) 2000, 2003 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 know 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
---------------

Irix6 "cc -n32" and OSF4 "cc" have problems with constant string
initializers with parens around it, e.g.

const char string[] = ("A string");

This is unfortunate since this is what the GNU gettext macro N_
produces.  You need to find a different way to code it.

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.