gcc/gcc
David S. Miller 9fd52c6c0f sparc.c: Include dwarf2out.h.
* config/sparc/sparc.c: Include dwarf2out.h.
	(emit_pic_helper): Delete.
	(pic_helper_symbol_name): Delete.
	(pic_helper_emitted_p): Delete.
	(pic_helper_needed): New.
	(USE_HIDDEN_LINKONCE): Define to '1' if HAVE_GAS_HIDDEN else '0'.
	(get_pc_thunk_name): New.
	(load_pic_register): Remove 'delay_pic_helper' arg.  Use
	get_thunk_pc_name and ggc_strdup to generate PIC thunk symbol.
	Set pic_helper_needed to true.  Don't call emit_pic_helper.
	(sparc_expand_prologue): Update load_pic_register call.
	(sparc_output_mi_thunk): Likewise.
	(sparc_file_end): Emit a hidden comdat symbol for the PIC
	thunk if possible.  Output CFI information as needed.

From-SVN: r157557
2010-03-18 22:34:12 -07:00
..
ada sol2-bi.h (CC1_SPEC): Default to -mcpu=v9 for -m32. 2010-03-10 23:25:37 +00:00
config sparc.c: Include dwarf2out.h. 2010-03-18 22:34:12 -07:00
cp re PR c++/43418 (trunk rev157534. compile c++ with --enable-build-with-cxx fails in cp_parser_for_init_statement) 2010-03-18 11:46:33 +00:00
doc Rewrite unfinished sentence in documentation. 2010-03-17 06:18:19 +00:00
fortran re PR fortran/43039 ([lto/-fwhole-file] fortran-dev - ICE in gfc_conv_component_ref dynamic_dispatch_5.f03) 2010-03-18 21:23:35 +00:00
ginclude
java
lto re PR bootstrap/43276 (lto-elf.c:388:10: error: 'EM_SPARC') 2010-03-09 09:01:56 +00:00
objc re PR objc/43061 (47 new GCC HEAD@156527 regressions) 2010-02-19 19:06:38 +00:00
objcp
po * zh_CN.po: Update. 2010-03-09 15:18:43 +00:00
testsuite re PR target/36399 (ABI bug on darwin/x86-32) 2010-03-18 22:56:38 +00:00
ABOUT-GCC-NLS
acinclude.m4
aclocal.m4
addresses.h
alias.c alias.c (memrefs_conflict_p): Distinguish must-alias from don't know. 2010-02-16 10:01:51 +00:00
alias.h
alloc-pool.c
alloc-pool.h
attribs.c
auto-inc-dec.c
BASE-VER
basic-block.h
bb-reorder.c
bitmap.c
bitmap.h
bt-load.c
builtin-attrs.def
builtin-types.def
builtins.c re PR middle-end/43419 (gcc replaces pow(x, 0.5) by sqrt(x), invalid when x is -0) 2010-03-18 16:07:53 +00:00
builtins.def
c-aux-info.c
c-common.c re PR c++/43126 ("at this point in file" warnings are upside down) 2010-02-22 22:30:45 +00:00
c-common.def
c-common.h
c-config-lang.in
c-convert.c
c-cppbuiltin.c
c-decl.c re PR c/43248 (ICE: tree check: expected class 'type', have 'exceptional' (error_mark) in useless_type_conversion_p, at tree-ssa.c:1233) 2010-03-04 11:59:19 -08:00
c-dump.c
c-errors.c
c-format.c
c-format.h
c-gimplify.c
c-lang.c
c-lang.h
c-lex.c
c-objc-common.c
c-objc-common.h
c-omp.c
c-opts.c re PR c/20631 (Support -std=c90 as alias for -std=c89) 2010-02-26 17:09:29 +00:00
c-parser.c
c-pch.c * c-pch.c (pch_init): Clear v. 2010-02-11 21:49:05 +01:00
c-ppoutput.c
c-pragma.c
c-pragma.h
c-pretty-print.c * c-pretty-print.c (pp_c_specifier_qualifier_list): Print vector size. 2010-03-03 00:11:13 -05:00
c-pretty-print.h
c-semantics.c
c-tree.h
c-typeck.c re PR c/43128 (c-c++-common/pr41779.c doesn't work) 2010-02-24 13:09:37 +00:00
c.opt re PR c/20631 (Support -std=c90 as alias for -std=c89) 2010-02-26 17:09:29 +00:00
caller-save.c re PR debug/42918 ("-fcompare-debug failure" with "-O2 -ftracer" (2)) 2010-02-17 09:54:59 +01:00
calls.c
cfg.c cfg.c (alloc_aux_for_block): Remove inline. 2010-02-24 15:27:46 +00:00
cfganal.c
cfgbuild.c
cfgcleanup.c re PR debug/43051 (VTA causes a stack living parameter unavailable in most of the function) 2010-03-16 11:50:42 +01:00
cfgexpand.c tree.h: Declare make_decl_rtl_for_debug. 2010-03-18 20:41:40 +00:00
cfghooks.c
cfghooks.h
cfglayout.c
cfglayout.h
cfgloop.c
cfgloop.h
cfgloopanal.c
cfgloopmanip.c
cfgrtl.c re PR middle-end/42233 (c++ builtin_expect code generation regression) 2010-02-19 10:53:51 +01:00
cgraph.c re PR middle-end/42344 (ICE in rs6000.md with ipa-sra for 252.eon) 2010-02-20 10:08:20 +10:30
cgraph.h re PR middle-end/42450 (another GCC 4.5 ICE on C++ templated code) 2010-03-18 21:07:13 +01:00
cgraphbuild.c
cgraphunit.c re PR middle-end/42450 (another GCC 4.5 ICE on C++ templated code) 2010-03-18 21:07:13 +01:00
ChangeLog sparc.c: Include dwarf2out.h. 2010-03-18 22:34:12 -07: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.dataflow
ChangeLog.graphite Fix PR43354: Correctly handle default definitions. 2010-03-13 17:35:45 +00:00
ChangeLog.lib
ChangeLog.ptr
ChangeLog.tree-ssa
ChangeLog.tuples
cif-code.def
collect2-aix.c
collect2-aix.h
collect2.c intl.c (fake_ngettext): New function. 2010-02-14 19:44:07 +00:00
collect2.h intl.c (fake_ngettext): New function. 2010-02-14 19:44:07 +00:00
combine-stack-adj.c
combine.c re PR debug/43051 (VTA causes a stack living parameter unavailable in most of the function) 2010-03-16 11:50:42 +01:00
common.opt common.opt (dumpdir): Remove redundant tab. 2010-03-18 03:01:09 +00:00
conditions.h
config.build
config.gcc config.gcc (sparc64-*-solaris2*, [...]): Merge into... 2010-03-03 18:14:50 +00:00
config.host
config.in configure.ac: Test if linker and assembler properly support GOTDATA_OP relocations. 2010-02-20 19:58:51 -08:00
configure configure.ac (gcc_cv_as_cfi_advance_working): Skip a multiple of four. 2010-03-11 18:54:17 -08:00
configure.ac configure.ac (gcc_cv_as_cfi_advance_working): Skip a multiple of four. 2010-03-11 18:54:17 -08:00
convert.c re PR c/43007 (No longer folds (unsigned int) ((long long unsigned int) spi_bias / 1008)) 2010-02-10 11:54:14 +00:00
convert.h
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
coretypes.h
coverage.c
coverage.h
cppdefault.c
cppdefault.h
cppspec.c
crtstuff.c
cse.c
cselib.c re PR debug/43051 (VTA causes a stack living parameter unavailable in most of the function) 2010-03-16 11:50:42 +01:00
cselib.h re PR debug/43051 (VTA causes a stack living parameter unavailable in most of the function) 2010-03-16 11:50:42 +01:00
cstamp-h.in
DATESTAMP Daily bump. 2010-03-19 00:16:39 +00:00
dbgcnt.c
dbgcnt.def
dbgcnt.h
dbxout.c
dbxout.h
dce.c
dce.h
ddg.c
ddg.h
debug.c
debug.h
defaults.h
DEV-PHASE
df-byte-scan.c
df-core.c
df-problems.c
df-scan.c
df.h
dfp.c
dfp.h
diagnostic.c toplev.h (inform_n, error_n): Declare. 2010-03-01 09:56:41 +00:00
diagnostic.def
diagnostic.h diagnostic.c (diagnostic_initialize): Update. 2010-02-26 22:06:56 +00:00
dojump.c re PR middle-end/42233 (c++ builtin_expect code generation regression) 2010-02-19 19:19:06 +01:00
dominance.c
domwalk.c
domwalk.h
double-int.c
double-int.h
dse.c re PR debug/43051 (VTA causes a stack living parameter unavailable in most of the function) 2010-03-16 11:50:42 +01:00
dse.h
dummy-checksum.c
dwarf2asm.c
dwarf2asm.h
dwarf2out.c tree.h: Declare make_decl_rtl_for_debug. 2010-03-18 20:41:40 +00:00
dwarf2out.h
ebitmap.c ebitmap.c: Change calls to verify_popcount with calls to sbitmap_verify_popcount. 2010-02-25 20:51:27 -05:00
ebitmap.h
emit-rtl.c
emit-rtl.h
emutls.c
errors.c
errors.h
et-forest.c
et-forest.h
except.c set LABEL_PRESERVE_P for landing pad labels 2010-03-01 15:34:44 +01:00
except.h
exec-tool.in
explow.c
expmed.c re PR middle-end/32693 ([H8] : ICE: in gen_rtx_SUBREG, at emit-rtl.c:693) 2010-03-03 15:10:17 -07:00
expr.c re PR tree-optimization/43213 (Worse code generated with -O2) 2010-03-01 12:56:44 +00:00
expr.h re PR middle-end/42233 (c++ builtin_expect code generation regression) 2010-02-19 10:53:51 +01:00
final.c
fixed-value.c
fixed-value.h
flags.h
fold-const.c
fp-test.c
FSFChangeLog
FSFChangeLog.10
FSFChangeLog.11
function.c re PR debug/43190 (Used pointer typedefs eliminated from debug info) 2010-02-26 16:58:57 +01:00
function.h
fwprop.c
gbl-ctors.h
gcc-plugin.h
gcc.c re PR driver/43021 (Driver no longer handles fancy names) 2010-02-11 12:23:08 +00:00
gcc.h
gccbug.in
gccspec.c
gcov-dump.c
gcov-io.c
gcov-io.h
gcov-iov.c
gcov.c
gcse.c re PR debug/43051 (VTA causes a stack living parameter unavailable in most of the function) 2010-03-16 11:50:42 +01:00
gdbinit.in
genattr.c
genattrtab.c
genautomata.c
gencheck.c
genchecksum.c
gencodes.c
genconditions.c
genconfig.c
genconstants.c
genemit.c
genextract.c
genflags.c
gengenrtl.c
gengtype-lex.l
gengtype-parse.c
gengtype.c
gengtype.h
genmddeps.c
genmodes.c
genmultilib
genopinit.c
genoutput.c
genpeep.c
genpreds.c
genrecog.c
gensupport.c gensupport.c (process_one_cond_exec): Derive name for COND_EXEC patterns from predicated pattern. 2010-02-17 15:05:40 +00:00
gensupport.h
ggc-common.c
ggc-none.c
ggc-page.c
ggc-zone.c
ggc.h
gimple-iterator.c re PR debug/42897 (yet another ice in verify_ssa) 2010-03-06 20:30:10 +00:00
gimple-low.c
gimple-pretty-print.c
gimple.c re PR tree-optimization/43186 (A loop in tree_unroll_loops_completely never ends) 2010-02-26 16:01:52 +00:00
gimple.def
gimple.h re PR tree-optimization/43186 (A loop in tree_unroll_loops_completely never ends) 2010-02-26 16:01:52 +00:00
gimplify.c re PR middle-end/41250 (hppa has DECL_VALUE_EXPR decls appearing in the function) 2010-03-01 15:43:32 +00:00
glimits.h
graph.c
graph.h
graphds.c
graphds.h
graphite-blocking.c
graphite-clast-to-gimple.c Use ssizetype when long_long_integer_type_node is NULL. 2010-03-13 17:35:29 +00:00
graphite-clast-to-gimple.h re PR tree-optimization/42771 ([graphite] ICE: in graphite_loop_normal_form, at graphite-sese-to-poly.c (2)) 2010-02-11 19:42:38 +00:00
graphite-dependences.c Cleanup data dep polyhedron construction. 2010-03-08 17:49:09 +00:00
graphite-dependences.h
graphite-interchange.c
graphite-poly.c re PR tree-optimization/42771 ([graphite] ICE: in graphite_loop_normal_form, at graphite-sese-to-poly.c (2)) 2010-02-11 19:42:38 +00:00
graphite-poly.h New function combine_context_id_scat. 2010-03-08 17:49:02 +00:00
graphite-ppl.c graphite-ppl.c (ppl_min_for_le_polyhedron): Renamed ppl_min_for_le_pointset. 2010-03-08 17:49:16 +00:00
graphite-ppl.h graphite-ppl.c (ppl_min_for_le_polyhedron): Renamed ppl_min_for_le_pointset. 2010-03-08 17:49:16 +00:00
graphite-scop-detection.c Fix PR43083: Do not handle regions ending with multiple edges on the exit BB. 2010-02-23 12:59:48 +00:00
graphite-scop-detection.h
graphite-sese-to-poly.c graphite-sese-to-poly.c (split_reduction_stmt): Skip debug statements before splitting block. 2010-03-16 20:04:04 +00:00
graphite-sese-to-poly.h Make build_poly_scop not return a bool. 2010-03-13 17:34:44 +00:00
graphite.c Add PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION. 2010-03-13 17:34:51 +00:00
graphite.h
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-solaris.h
gthr-tpf.h
gthr-vxworks.h
gthr-win32.h
gthr.h
haifa-sched.c
hard-reg-set.h
highlev-plugin-common.h
hooks.c
hooks.h
host-default.c
hosthooks-def.h
hosthooks.h
hwint.h
ifcvt.c
incpath.c
incpath.h
init-regs.c
input.h
insn-addr.h
insn-notes.def
integrate.c
integrate.h
intl.c intl.c (fake_ngettext): New function. 2010-02-14 19:44:07 +00:00
intl.h intl.c (fake_ngettext): New function. 2010-02-14 19:44:07 +00:00
ipa-cp.c
ipa-inline.c
ipa-prop.c ipa-prop.h (struct ipa_param_descriptor): Removed the called field. 2010-03-08 12:00:07 +01:00
ipa-prop.h ipa-prop.h (struct ipa_param_descriptor): Removed the called field. 2010-03-08 12:00:07 +01:00
ipa-pure-const.c re PR objc/43061 (47 new GCC HEAD@156527 regressions) 2010-02-19 19:06:38 +00:00
ipa-reference.c re PR objc/43061 (47 new GCC HEAD@156527 regressions) 2010-02-19 19:06:38 +00:00
ipa-reference.h
ipa-struct-reorg.c re PR tree-optimization/43317 (ICE: Segmentation fault with -fipa-struct-reorg -g) 2010-03-15 13:05:05 +00:00
ipa-struct-reorg.h
ipa-type-escape.c re PR objc/43061 (47 new GCC HEAD@156527 regressions) 2010-02-19 19:06:38 +00:00
ipa-type-escape.h
ipa-utils.c
ipa-utils.h
ipa.c re PR middle-end/42450 (another GCC 4.5 ICE on C++ templated code) 2010-03-18 21:07:13 +01:00
ira-build.c
ira-color.c
ira-conflicts.c ira-conflicts.c (add_insn_allocno_copies): Use find_reg_note instead of loop. 2010-02-10 20:52:31 +00:00
ira-costs.c
ira-emit.c
ira-int.h
ira-lives.c ira-lives.c (check_and_make_def_use_conflict): Don't fall out array boundary. 2010-03-09 01:30:00 +00:00
ira.c
ira.h
jump.c
lambda-code.c re PR tree-optimization/42917 ("-fcompare-debug failure" with -ftree-loop-linear) 2010-03-16 11:33:45 +00:00
lambda-mat.c
lambda-trans.c
lambda.h
langhooks-def.h
langhooks.c
langhooks.h
LANGUAGES
lcm.c
libfuncs.h
libgcc2.c
libgcc2.h
libgcc-libsystem.ver
libgcc-std.ver
libgcov.c
limitx.h
limity.h
lists.c
longlong.h
loop-doloop.c re PR middle-end/42233 (c++ builtin_expect code generation regression) 2010-02-19 13:47:18 +01:00
loop-init.c
loop-invariant.c Remove the REG_EQUAL note if we don't know its invariant status. 2010-03-18 06:10:49 -07:00
loop-iv.c
loop-unroll.c
loop-unswitch.c re PR middle-end/42233 (c++ builtin_expect code generation regression) 2010-02-19 10:53:51 +01:00
lower-subreg.c
lto-cgraph.c
lto-compress.c
lto-compress.h
lto-opts.c
lto-section-in.c
lto-section-out.c
lto-streamer-in.c re PR lto/43200 ([LTO] tree check: expected array_type, have pointer_type in array_ref_low_bound) 2010-03-11 13:13:53 +00:00
lto-streamer-out.c re PR c++/12909 (ambiguity in mangling vector types) 2010-03-03 14:02:08 -05:00
lto-streamer.c
lto-streamer.h re PR c++/12909 (ambiguity in mangling vector types) 2010-03-03 14:02:08 -05:00
lto-symtab.c
lto-wpa-fixup.c
lto-wrapper.c
machmode.def
machmode.h
main.c
Makefile.in re PR debug/43051 (VTA causes a stack living parameter unavailable in most of the function) 2010-03-16 11:50:42 +01:00
matrix-reorg.c
mcf.c
mips-tdump.c
mips-tfile.c
mkconfig.sh
mkmap-flat.awk
mkmap-symver.awk
mode-classes.def
mode-switching.c
modulo-sched.c
omega.c
omega.h
omp-builtins.def
omp-low.c
ONEWS
opt-functions.awk
opt-gather.awk
optabs.c re PR middle-end/42233 (c++ builtin_expect code generation regression) 2010-02-19 10:53:51 +01:00
optabs.h
optc-gen.awk c.opt (-ftemplate-depth=): New. 2010-02-24 20:41:01 +00:00
opth-gen.awk c.opt (-ftemplate-depth=): New. 2010-02-24 20:41:01 +00:00
opts-common.c
opts.c
opts.h
output.h
params.c
params.def Fix documentation of the new parameters. 2010-03-13 17:35:22 +00:00
params.h
passes.c If a pass occurs in several pass lists... 2010-02-22 14:18:10 +00:00
plugin.c
plugin.def
plugin.h
pointer-set.c
pointer-set.h
postreload-gcse.c
postreload.c re PR debug/43051 (VTA causes a stack living parameter unavailable in most of the function) 2010-03-16 11:50:42 +01:00
predict.c
predict.def
predict.h
prefix.c
prefix.h
pretty-print.c
pretty-print.h
print-rtl.c
print-tree.c
profile.c
profile.h
read-rtl.c
README.Portability
real.c
real.h
recog.c
recog.h
reg-notes.def re PR debug/43290 (ICE in dwarf2out_frame_debug_expr) 2010-03-10 19:17:10 +01:00
reg-stack.c
regcprop.c re PR debug/43161 (Wrong debug info in guality/vla-1.c (f2)) 2010-02-26 12:01:28 +01:00
reginfo.c
regmove.c
regrename.c re PR rtl-optimization/42216 (changes in scheduling regress 464.h264ref 20%) 2010-03-17 09:25:35 +00:00
regs.h
regstat.c
reload1.c reload1.c (rtx_p, [...]): Declare. 2010-03-02 11:56:50 -07:00
reload.c
reload.h
reorg.c reorg.c (delete_computation): Comment fixes. 2010-02-14 12:58:16 +00:00
resource.c
resource.h
rtl-error.c
rtl.c
rtl.def reorg.c (delete_computation): Comment fixes. 2010-02-14 12:58:16 +00:00
rtl.h re PR debug/43051 (VTA causes a stack living parameter unavailable in most of the function) 2010-03-16 11:50:42 +01:00
rtlanal.c
rtlhooks-def.h
rtlhooks.c
sbitmap.c
sbitmap.h
sched-deps.c re PR debug/43051 (VTA causes a stack living parameter unavailable in most of the function) 2010-03-16 11:50:42 +01:00
sched-ebb.c
sched-int.h
sched-rgn.c
sched-vis.c
sdbout.c
sdbout.h
sel-sched-dump.c reorg.c (delete_computation): Comment fixes. 2010-02-14 12:58:16 +00:00
sel-sched-dump.h
sel-sched-ir.c
sel-sched-ir.h
sel-sched.c
sel-sched.h
sese.c Fold convert SSA_NAMEs in the scalar expander. 2010-03-08 17:49:22 +00:00
sese.h re PR tree-optimization/42771 ([graphite] ICE: in graphite_loop_normal_form, at graphite-sese-to-poly.c (2)) 2010-02-11 19:42:38 +00:00
simplify-rtx.c re PR debug/43051 (VTA causes a stack living parameter unavailable in most of the function) 2010-03-16 11:50:42 +01:00
sparseset.c
sparseset.h
sreal.c
sreal.h
ssaexpand.h
stab.def
stack-ptr-mod.c
statistics.c
statistics.h
stmt.c re PR middle-end/42233 (c++ builtin_expect code generation regression) 2010-02-19 10:53:51 +01:00
stor-layout.c re PR c++/42837 (FAIL: g++.dg/abi/packed1.C execution test) 2010-02-23 13:31:58 -05:00
store-motion.c
stringpool.c
stub-objc.c
sync-builtins.def
system.h
target-def.h
target.h
targhooks.c
targhooks.h
timevar.c
timevar.def
timevar.h
tlink.c
toplev.c diagnostic.c (diagnostic_initialize): Update. 2010-02-26 22:06:56 +00:00
toplev.h toplev.h (inform_n, error_n): Declare. 2010-03-01 09:56:41 +00:00
tracer.c
tree-affine.c
tree-affine.h
tree-browser.c
tree-browser.def
tree-call-cdce.c
tree-cfg.c re PR tree-optimization/43379 (ICE: error: SSA_NAME_OCCURS_IN_ABNORMAL_PHI should be set with -O2 -ftracer) 2010-03-16 12:31:38 +00:00
tree-cfgcleanup.c re PR tree-optimization/43402 (dom1 miscompiles binary search) 2010-03-18 12:20:50 +00:00
tree-chrec.c Fix PR43306: correct evolution_function_right_is_integer_cst. 2010-03-13 17:34:59 +00:00
tree-chrec.h
tree-complex.c
tree-data-ref.c
tree-data-ref.h
tree-dfa.c
tree-dump.c
tree-dump.h
tree-eh.c re PR middle-end/43365 (Destructor not called when returning in exception handler) 2010-03-16 16:02:35 -07:00
tree-flow-inline.h
tree-flow.h
tree-if-conv.c
tree-inline.c re PR middle-end/42450 (another GCC 4.5 ICE on C++ templated code) 2010-03-18 21:07:13 +01:00
tree-inline.h
tree-into-ssa.c
tree-iterator.c
tree-iterator.h
tree-loop-distribution.c re PR tree-optimization/43236 (-ftree-loop-distribution produces wrong code in reload1.c:delete_output_reload(), bootstrap fails) 2010-03-10 15:53:51 +03:00
tree-loop-linear.c
tree-mudflap.c
tree-mudflap.h
tree-nested.c
tree-nomudflap.c
tree-nrv.c
tree-object-size.c
tree-optimize.c
tree-outof-ssa.c re PR middle-end/43300 (ICE: in emit_move_insn, at expr.c:3432) 2010-03-15 16:13:28 +00:00
tree-parloops.c
tree-pass.h
tree-phinodes.c re PR debug/42897 (yet another ice in verify_ssa) 2010-03-06 20:30:10 +00:00
tree-predcom.c
tree-pretty-print.c
tree-profile.c
tree-scalar-evolution.c
tree-scalar-evolution.h
tree-sra.c re PR tree-optimization/43347 (Warning about symbols generated by SRA being used uninitialized) 2010-03-17 13:02:35 +01:00
tree-ssa-address.c
tree-ssa-alias.c re PR ada/43096 (miscompilation of ACATS c37105a at -O2) 2010-02-26 23:10:24 +00:00
tree-ssa-alias.h
tree-ssa-ccp.c re PR tree-optimization/43220 (Paritially optimized __builtin_save_stack/__builtin_restore_stack causes segmentation fault) 2010-03-01 16:57:02 +00:00
tree-ssa-coalesce.c
tree-ssa-copy.c
tree-ssa-copyrename.c
tree-ssa-dce.c
tree-ssa-dom.c
tree-ssa-dse.c re PR tree-optimization/43269 (removing non dead store) 2010-03-08 13:30:27 +00:00
tree-ssa-forwprop.c
tree-ssa-ifcombine.c
tree-ssa-live.c
tree-ssa-live.h
tree-ssa-loop-ch.c
tree-ssa-loop-im.c
tree-ssa-loop-ivcanon.c re PR tree-optimization/43186 (A loop in tree_unroll_loops_completely never ends) 2010-02-27 23:28:46 +00:00
tree-ssa-loop-ivopts.c Fix PR43209: Do not decrease the cost of an IV candidate when the cost is infinite. 2010-03-04 12:12:50 +00:00
tree-ssa-loop-manip.c
tree-ssa-loop-niter.c
tree-ssa-loop-prefetch.c
tree-ssa-loop-unswitch.c
tree-ssa-loop.c
tree-ssa-math-opts.c re PR tree-optimization/43280 (gcc4.5 -m32 -O2: misoptimizes sha256!) 2010-03-11 13:51:00 +00:00
tree-ssa-operands.c
tree-ssa-operands.h
tree-ssa-phiopt.c
tree-ssa-phiprop.c
tree-ssa-pre.c re PR rtl-optimization/40761 (IRA memory hog for insanely nested loops) 2010-03-04 13:25:27 +00:00
tree-ssa-propagate.c
tree-ssa-propagate.h
tree-ssa-reassoc.c
tree-ssa-sccvn.c
tree-ssa-sccvn.h
tree-ssa-sink.c
tree-ssa-structalias.c
tree-ssa-ter.c
tree-ssa-threadedge.c
tree-ssa-threadupdate.c
tree-ssa-uncprop.c
tree-ssa.c
tree-ssanames.c
tree-stdarg.c
tree-stdarg.h
tree-switch-conversion.c
tree-tailcall.c re PR middle-end/42749 (-O2 and verify_stmts failed again) 2010-02-22 14:09:26 +00:00
tree-vect-data-refs.c
tree-vect-generic.c
tree-vect-loop-manip.c
tree-vect-loop.c re PR debug/42897 (yet another ice in verify_ssa) 2010-03-06 20:28:04 +00:00
tree-vect-patterns.c
tree-vect-slp.c tree-vect-slp.c (vect_slp_analyze_bb): Fix typo. 2010-02-22 09:47:59 +00:00
tree-vect-stmts.c re PR tree-optimization/43188 ("error: alignment of array elements is greater than element size") 2010-02-26 13:34:38 +00:00
tree-vectorizer.c
tree-vectorizer.h re PR tree-optimization/43074 (ICE in vectorizable_reduction, at tree-vect-loop.c:3491) 2010-02-16 11:35:03 +00:00
tree-vrp.c re PR middle-end/43255 (ICE in extract_range_from_assert, at tree-vrp.c:1423) 2010-03-11 15:08:24 +00:00
tree.c re PR tree-optimization/43257 (IPA-SRA changes DECL_ASSEMBLER_NAME) 2010-03-11 23:27:26 +01:00
tree.def
tree.h tree.h: Declare make_decl_rtl_for_debug. 2010-03-18 20:41:40 +00:00
treestruct.def
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.h
unwind-generic.h
unwind-pe.h
unwind-sjlj.c
unwind.inc
value-prof.c
value-prof.h
var-tracking.c re PR target/43399 (bootstrap failure in stage1) 2010-03-18 21:18:53 +01:00
varasm.c tree.h: Declare make_decl_rtl_for_debug. 2010-03-18 20:41:40 +00:00
varpool.c re PR c++/12909 (ambiguity in mangling vector types) 2010-03-03 14:01:58 -05:00
varray.c
varray.h
vec.c
vec.h
vecprim.h
version.c
version.h
vmsdbg.h
vmsdbgout.c
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.


free and realloc
----------------

Some implementations crash upon attempts to free or realloc the null
pointer.  Thus if mem might be null, you need to write

  if (mem)
    free (mem);


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.