gcc

~vcs-imports/gcc/+git/gcc:aoliva/pr67355

Last commit made on 2015-11-26
Get this branch:
git clone -b aoliva/pr67355 https://git.launchpad.net/~vcs-imports/gcc/+git/gcc

Branch merges

Branch information

Name:
aoliva/pr67355
Repository:
lp:~vcs-imports/gcc/+git/gcc

Recent commits

270b1bc... by Alexandre Oliva <email address hidden>

[PR67355] drop dummy zero from reverse VTA ops, fix infinite recursion

VTA's cselib expression hashing compares expressions with the same
hash before adding them to the hash table. When there is a collision
involving a self-referencing expression, we could get infinite
recursion, in spite of the cycle breakers already in place. The
problem is currently latent in the trunk, because by chance we don't
get a collision.

Such value cycles are often introduced by reverse_op; most often,
they're indirect, and then value canonicalization takes care of the
cycle, but if the reverse operation simplifies to the original value,
we used to issue a (plus V (const_int 0)), because at some point
adding a plain value V to a location list as a reverse_op equivalence
caused other problems.

This dummy zero, in turn, caused the value canonicalizer to not fully
realize the equivalence, leading to more complex graphs and,
occasionally, to infinite recursion when comparing such
value-plus-zero expressions recursively.

Simply using V solves the infinite recursion from the PR testcase,
since the extra equivalence and the preexisting value canonicalization
together prevent recursion while the unrecognized equivalence
wouldn't, but it exposed another infinite recursion in
memrefs_conflict_p: get_addr had a cycle breaker in place, to skip RTL
referencing values introduced after the one we're examining, but it
wouldn't break the cycle if the value itself appeared in the
expression being examined.

After removing the dummy zero above, this kind of cycle in the
equivalence graph is no longer introduced by VTA itself, but dummy
zeros are also present in generated code, such as in the 32-bit x86's
pro_epilogue_adjust_stack_si_add epilogue insn generated as part of
the builtin longjmp in _Unwind_RaiseException building libgcc's
unwind-dw2.o. So, break the recursion cycle for them too.

for gcc/ChangeLog

 PR debug/67355
 * var-tracking.c (reverse_op): Don't add dummy zero to reverse
 ops that simplify back to the original value.
 * alias.c (refs_newer_value_p): Cut off recursion for
 expressions containing the original value.

4b8026f... by aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>

[PR67753] adjust for padding when bypassing memory in assign_parm_setup_block

Storing a register in memory as a full word and then accessing the
same memory address under a smaller-than-word mode amounts to
right-shifting of the register word on big endian machines. So, if
BLOCK_REG_PADDING chooses upward padding for BYTES_BIG_ENDIAN, and
we're copying from the entry_parm REG directly to a pseudo, bypassing
any stack slot, perform the shifting explicitly.

This fixes the miscompile of function_return_val_10 in
gcc.target/aarch64/aapcs64/func-ret-4.c for target aarch64_be-elf
introduced in the first patch for 67753.

for gcc/ChangeLog

 PR rtl-optimization/67753
 PR rtl-optimization/64164
 * function.c (assign_parm_setup_block): Right-shift
 upward-padded big-endian args when bypassing the stack slot.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230985 138bc75d-0d04-0410-961f-82ee72b054a4

db5ba70... by macro <macro@138bc75d-0d04-0410-961f-82ee72b054a4>

MIPS/GCC/doc: Reorder `-mcompact-branches='

Move the `-mcompact-branches=' option out of the middle of a block of
floating-point options. The option is not related to FP in any way.
Place it immediately below other branch instruction selection options.

 * doc/invoke.texi (Option Summary) <MIPS Options>: Reorder
 `-mcompact-branches='.
 (MIPS Options): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230984 138bc75d-0d04-0410-961f-82ee72b054a4

1c1e943... by mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>

Fix whitespacing.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230983 138bc75d-0d04-0410-961f-82ee72b054a4

e068cee... by jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>

 * Makefile.in (build/genmatch.o): Depend on internal-fn.def.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230982 138bc75d-0d04-0410-961f-82ee72b054a4

182eafc... by paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>

2015-11-26 Paolo Carlini <email address hidden>

 PR c++/67238
 * g++.dg/cpp0x/pr67238.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230981 138bc75d-0d04-0410-961f-82ee72b054a4

54c8b8e... by msebor <msebor@138bc75d-0d04-0410-961f-82ee72b054a4>

gcc/testsuite/
 * g++.dg/pr67876.C: Remove duplicate content.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230980 138bc75d-0d04-0410-961f-82ee72b054a4

7dd315a... by uweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>

gcc/cp/ChangeLog:

2015-11-26 Andreas Arnez <email address hidden>

 * cp-gimplify.c (genericize_cp_loop): Change LOOP_EXPR's location
 to start of loop body instead of start of loop.

gcc/testsuite/ChangeLog:

2015-11-26 Andreas Arnez <email address hidden>

 * g++.dg/guality/pr67192.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230979 138bc75d-0d04-0410-961f-82ee72b054a4

218477c... by dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>

        * doc/install.texi (Prerequisites): Increase ISL requirement to
        0.14 or 0.15.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230978 138bc75d-0d04-0410-961f-82ee72b054a4

f0b353b... by redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>

Ensure another pretty-printer test uses C++98 mode

 * testsuite/libstdc++-prettyprinters/debug.cc: Add -std=gnu++98 to
 dg-options and avoid use of uniform-init.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230977 138bc75d-0d04-0410-961f-82ee72b054a4