[Bug target/63610] Fixing the libtool bug for Yosemite (darwin14)

2014-11-14 Thread fxcoudert at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63610

--- Comment #15 from Francois-Xavier Coudert fxcoudert at gcc dot gnu.org ---
(In reply to howarth from comment #14)
 You aren't seeing regressions because you're not setting
 MACOSX_DEPLOYMENT_TARGET  during the gcc build.

Oh, so that's it! Thanks for puzzling it out.

I'll ask RM for permission to backport to all active branches (4.8 and 4.9).
Before I do that, can you confirm that the patch works as you expect on trunk,
with MACOSX_DEPLOYMENT_TARGET set? Just to be extra sure.


[Bug target/63610] Fixing the libtool bug for Yosemite (darwin14)

2014-11-14 Thread iains at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63610

--- Comment #16 from Iain Sandoe iains at gcc dot gnu.org ---
Hmm the patch for __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ has been
applied to 4.9 (AFAICT), although not to 4.8,

Jack, what does your 4.9 compiler give for:

gcc -dM -E -x c /dev/null |grep ENVIRO

?

If the __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ is being set correctly,
what is causing the need for MACOSX_DEPLOYMENT_TARGET?


[Bug target/63810] gcc sets incorrect macro for OS X deployment targets

2014-11-14 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810

--- Comment #3 from Lawrence Velázquez larryv at macports dot org ---
Created attachment 33968
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33968action=edit
patch against trunk for handling deployment targets correctly

This is more of a rewrite than just a patch. I've divorced parsing of the
version string from assembly of legacy macro values from assembly of modern
macro values. It should hopefully be easier to make adjustments in the future,
since this code is more than a crude DFA implementation.

[Bug other/51153] OpenACC implementation

2014-11-14 Thread tschwinge at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51153

Thomas Schwinge tschwinge at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
Version|4.7.0   |5.0
   Keywords||openacc
   Last reconfirmed||2014-11-14
  Component|target  |other
 CC||tschwinge at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |tschwinge at gcc dot 
gnu.org
 Ever confirmed|0   |1


[Bug target/63610] Fixing the libtool bug for Yosemite (darwin14)

2014-11-14 Thread fxcoudert at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63610

--- Comment #17 from Francois-Xavier Coudert fxcoudert at gcc dot gnu.org ---
(In reply to Iain Sandoe from comment #16)
 Hmm the patch for __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ has been
 applied to 4.9 (AFAICT)

Yes it has.


 although not to 4.8

You're right. Provided that the patches are simple, maybe it's good enough to
document them (as I have in the __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
patch for 4.8) and let distributors apply them.


[Bug target/63810] gcc sets incorrect macro for OS X deployment targets

2014-11-14 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810

--- Comment #4 from Lawrence Velázquez larryv at macports dot org ---
Created attachment 33969
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33969action=edit
patch against 4.9 branch for handling deployment targets correctly

Patched GCC 4.9.2 matched the behavior of Apple LLVM Compiler 6.0
(clang-600.0.54) over 8,451 out of 8,464 test strings. The 13 mismatches are
due to a bug in clang.

[Bug target/63810] gcc sets incorrect macro for OS X deployment targets

2014-11-14 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810

--- Comment #5 from Lawrence Velázquez larryv at macports dot org ---
Created attachment 33970
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33970action=edit
patch against 4.8 branch for handling deployment targets correctly

This patch incorporates and supersedes attachment 33932 from bug 61407.

[Bug c/63862] New: C frontend converts shift-count to int while standard wants integer promotions

2014-11-14 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63862

Bug ID: 63862
   Summary: C frontend converts shift-count to int while standard
wants integer promotions
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rguenth at gcc dot gnu.org
CC: jsm28 at gcc dot gnu.org

/* Convert the non vector shift-count to an integer, regardless
 of size of value being shifted.  */
  if (TREE_CODE (TREE_TYPE (op1)) != VECTOR_TYPE
   TYPE_MAIN_VARIANT (TREE_TYPE (op1)) != integer_type_node)
op1 = convert (integer_type_node, op1);

while C99 6.5.7 says The integer promotions are performed on each of the
operands.

The above pessimizes gcc.c-torture/execute/shiftopt-1.c which does

void
utest (unsigned int x)
{
  if (-1  x != -1)
link_error ();
}

and thus expects us to know that the shift amount is nonnegative.  But
with the C frontend generating -1  (int)x we don't know that anymore
(and thus if I fix the bogus fold-const.c code which strips sign-changing
conversions on x before asking tree_expr_nonnegative_p it fails to optimize).


[Bug ipa/63814] g++.dg/ipa/pr61160-1.C fails with -m32 on darwin14

2014-11-14 Thread izamyatin at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

--- Comment #12 from Igor Zamyatin izamyatin at gmail dot com ---
So far it seems the issue unlikely caused by PIC-related changes in i686 - test
passes with -fno-devirtualize.


[Bug target/62173] [5.0 regression] [AArch64] Performance regression due to r213488

2014-11-14 Thread jiwang at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62173

--- Comment #5 from Jiong Wang jiwang at gcc dot gnu.org ---
The root cause is AArch64's TARGET_LEGITIMIZE_ADDRESS are not doing well when
the input is ((reg + reg) + offset).

looks like currently we have considered reg + non_normal_offset, and trying to
split non_normal_offset to base + offset.

while for ((reg1 + reg2) + offset), if reg + offset is valid, then we should
legitimize it to

reg3 = reg1 + offset
return reg3 + reg2

will send out the patch after pass tests and benchmarking.


[Bug target/61407] Build errors on latest OS X 10.10 Yosemite with Xcode 6 on GCC 4.8.3

2014-11-14 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407

--- Comment #52 from Lawrence Velázquez larryv at macports dot org ---
Attachment 33932 should be superseded by attachment 33970 from bug 63810.

[Bug target/62173] [5.0 regression] [AArch64] Performance regression due to r213488

2014-11-14 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62173

Ramana Radhakrishnan ramana at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Target Milestone|--- |5.0


[Bug libobjc/63863] New: New warnings in libobjc due to the move over to GNU11 by default

2014-11-14 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63863

Bug ID: 63863
   Summary: New warnings in libobjc due to the move over to GNU11
by default
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libobjc
  Assignee: unassigned at gcc dot gnu.org
  Reporter: pinskia at gcc dot gnu.org

/var/lib/jenkins/workspace/GCCupstream/libobjc/sendmsg.c:338:13: warning:
‘get_implementation’ is static but used in inline function ‘get_imp’ which is
not static
   res = get_implementation(nil, class, sel);
 ^
/var/lib/jenkins/workspace/GCCupstream/libobjc/sendmsg.c:335:15: warning:
‘sarray_get_safe’ is static but used in inline function ‘get_imp’ which is not
static
   void *res = sarray_get_safe (class-dtable, (size_t) sel-sel_id);
   ^
/var/lib/jenkins/workspace/GCCupstream/libobjc/sendmsg.c:143:21: warning:
‘__objc_word_forward’ is static but used in inline function
‘__objc_get_forward_imp’ which is not static
 return (IMP)__objc_word_forward;
 ^
/var/lib/jenkins/workspace/GCCupstream/libobjc/sendmsg.c:141:21: warning:
‘__objc_double_forward’ is static but used in inline function
‘__objc_get_forward_imp’ which is not static
 return (IMP)__objc_double_forward;
 ^
/var/lib/jenkins/workspace/GCCupstream/libobjc/sendmsg.c:139:21: warning:
‘__objc_block_forward’ is static but used in inline function
‘__objc_get_forward_imp’ which is not static
 return (IMP)__objc_block_forward;
 ^

[Bug libobjc/63863] New warnings in libobjc due to the move over to GNU11 by default

2014-11-14 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63863

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-11-14
   Assignee|unassigned at gcc dot gnu.org  |pinskia at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
I will try to fix it this weekend.


[Bug target/63724] [AArch64] Inefficient immediate expansion and hoisting.

2014-11-14 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63724

Ramana Radhakrishnan ramana at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #2 from Ramana Radhakrishnan ramana at gcc dot gnu.org ---
Fixed by r217546


[Bug tree-optimization/63864] New: Missed optimization, related to SRA(??)

2014-11-14 Thread vermaelen.wouter at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63864

Bug ID: 63864
   Summary: Missed optimization, related to SRA(??)
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: vermaelen.wouter at gmail dot com

Hi,

In my code I replaced some 'manual' vector/matrix calculations with
(inlined) function calls using vector/matrix types. When using clang
both approaches result in nearly identical generated code. But when
using gcc the code becomes much worse.

I don't know too much about compiler internals, but if I had to make a
guess I'd say that for some reason SRA doesn't work in this case.

See the code below: 'test_ok()' is the original function,
'test_slow()' is the rewritten version. I tried to simplify the code
as much as possible while not making it too simple (so that neither
compiler starts vectorizing the code).

Tested with:
  g++ (GCC) 5.0.0 20141114 (experimental)

Wouter

 - - - 8 - - - 8 - - - 8 - - - 8 - - - 8 - - - 8 - - - 8 - - -

// Original code with 'manual' matrix multiplication
float test_ok(float m[3][3], float x, float y, float z, float s, float b) {
float p = x*s + b;
float q = y*s + b;
float r = z*s + b;

float u = m[0][0]*p + m[1][0]*q + m[2][0]*r;
float v = m[0][1]*p + m[1][1]*q + m[2][1]*r;
float w = m[0][2]*p + m[1][2]*q + m[2][2]*r;

return u + v + w;
}

// (Much simplified) vec3/mat3 types
struct vec3 {
vec3() {}
vec3(float x, float y, float z) { e[0] = x; e[1] = y; e[2] = z; }
float  operator[](int i) const { return e[i]; }
float operator[](int i)   { return e[i]; }
private:
float e[3];
};
struct mat3 { vec3 c[3]; };

inline vec3 operator+(const vec3 x, const vec3 y) {
vec3 r;
for (int i = 0; i  3; ++i) r[i] = x[i] + y[i];
return r;
}

inline vec3 operator*(const vec3 x, float y) {
vec3 r;
for (int i = 0; i  3; ++i) r[i] = x[i] * y;
return r;
}

inline vec3 operator*(const vec3 x, const vec3 y) {
vec3 r;
for (int i = 0; i  3; ++i) r[i] = x[i] * y[i];
return r;
}

inline vec3 operator*(const mat3 m, const vec3 v) {
return m.c[0] * v[0] + m.c[1] * v[1] + m.c[2] * v[2];
}

// Rewritten version of the original function
float test_slow(mat3 m, float x, float y, float z, float s, float b) {
vec3 t = m * (vec3(x,y,z) * s + vec3(b,b,b));
return t[0] + t[1] + t[2];
}


[Bug fortran/63865] New: [OpenACC] support acc cache

2014-11-14 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63865

Bug ID: 63865
   Summary: [OpenACC] support acc cache
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Keywords: openacc, rejects-valid
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: burnus at gcc dot gnu.org
CC: cesar at codesourcery dot com, tschwinge at gcc dot gnu.org

Currently (branch, submitted patches), acc cache is implemented as sorry() -
and several existing test cases are disabled.

See also: https://gcc.gnu.org/ml/fortran/2014-11/msg00025.html


[Bug target/63724] [AArch64] Inefficient immediate expansion and hoisting.

2014-11-14 Thread ramana at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63724

--- Comment #3 from Ramana Radhakrishnan ramana at gcc dot gnu.org ---
Author: ramana
Revision: 217546
Modified property: svn:log

Modified: svn:log at Fri Nov 14 11:03:00 2014
--
--- svn:log (original)
+++ svn:log Fri Nov 14 11:03:00 2014
@@ -1,1 +1,14 @@
-Fix typo in *arith_shift_insn_shiftsi
+Fix PR target/63724
+
+2014-11-14  Ramana Radhakrishnan  ramana.radhakrish...@arm.com
+
+PR target/63724
+* config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Split out
+numerical immediate handling to...
+(aarch64_internal_mov_immediate): ...this. New.
+(aarch64_rtx_costs): Use aarch64_internal_mov_immediate.
+(aarch64_mov_operand_p): Relax predicate.
+* config/aarch64/aarch64.md (movmode:GPI): Do not expand CONST_INTs.
+(*movsi_aarch64): Turn into define_insn_and_split and new alternative
+for 'n'.
+(*movdi_aarch64): Likewise.


[Bug sanitizer/63813] [5 Regression][UBSAN] ICE in ubsan_type_descriptor, at ubsan.c:346

2014-11-14 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63813

--- Comment #5 from Marek Polacek mpolacek at gcc dot gnu.org ---
Jakub tells me this started with r217260.


[Bug sanitizer/63866] New: ICE in C++ printer with -fdump-ipa

2014-11-14 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63866

Bug ID: 63866
   Summary: ICE in C++ printer with -fdump-ipa
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: sanitizer
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mpolacek at gcc dot gnu.org
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org

Likely TYPE_NAME/TYPE_STUB_DECL aren't set properly for __ubsan_*_data.

int main () { int i = __INT_MAX__; i++; asm ( : +g (i)); }

$ ./cc1plus -quiet -fsanitize=undefined x.C -fdump-ipa-all
x.C:1:62: internal compiler error: tree check: expected tree that contains
‘decl common’ structure, have ‘identifier_node’ in dump_aggr_type, at
cp/error.c:650
 int main () { int i = __INT_MAX__; i++; asm ( : +g (i)); }
  ^
0x123cf49 tree_contains_struct_check_failed(tree_node const*,
tree_node_structure_enum, char const*, int, char const*)
/home/marek/src/gcc/gcc/tree.c:9365
0x6646b1 contains_struct_check(tree_node*, tree_node_structure_enum, char
const*, int, char const*)
/home/marek/src/gcc/gcc/tree.h:2871
0x79d47b dump_aggr_type
/home/marek/src/gcc/gcc/cp/error.c:650
0x79c0ed dump_type
/home/marek/src/gcc/gcc/cp/error.c:453
0x79ecd7 dump_type_prefix
/home/marek/src/gcc/gcc/cp/error.c:819
0x79f819 dump_simple_decl
/home/marek/src/gcc/gcc/cp/error.c:971
0x7a0298 dump_decl
/home/marek/src/gcc/gcc/cp/error.c:1072
0x7a8d7f decl_as_string(tree_node*, int)
/home/marek/src/gcc/gcc/cp/error.c:2787
0x7a8e73 lang_decl_name(tree_node*, int, bool)
/home/marek/src/gcc/gcc/cp/error.c:2822
0x8796ed cxx_printable_name_internal
/home/marek/src/gcc/gcc/cp/tree.c:2026
0x879934 cxx_printable_name(tree_node*, int)
/home/marek/src/gcc/gcc/cp/tree.c:2062
0xa186c4 symtab_node::name() const
/home/marek/src/gcc/gcc/symtab.c:475
0xa19150 symtab_node::dump_base(_IO_FILE*)
/home/marek/src/gcc/gcc/symtab.c:787
0x128d1d8 varpool_node::dump(_IO_FILE*)
/home/marek/src/gcc/gcc/varpool.c:224
0xa19c37 symtab_node::dump(_IO_FILE*)
/home/marek/src/gcc/gcc/symtab.c:903
0xa19c88 symtab_node::dump_table(_IO_FILE*)
/home/marek/src/gcc/gcc/symtab.c:914
0xa342c1 symbol_table::compile()
/home/marek/src/gcc/gcc/cgraphunit.c:2276
0xa34401 symbol_table::finalize_compilation_unit()
/home/marek/src/gcc/gcc/cgraphunit.c:2342
0x798258 cp_write_global_declarations()
/home/marek/src/gcc/gcc/cp/decl2.c:4677
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.

[Bug sanitizer/63866] ICE in C++ printer with -fdump-ipa

2014-11-14 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63866

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-11-14
   Assignee|unassigned at gcc dot gnu.org  |mpolacek at gcc dot 
gnu.org
   Target Milestone|--- |5.0
 Ever confirmed|0   |1

--- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org ---
Mine.


[Bug sanitizer/63866] ICE in C++ printer with -fdump-ipa

2014-11-14 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63866

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
Started with r205684.


[Bug target/63610] Fixing the libtool bug for Yosemite (darwin14)

2014-11-14 Thread howarth at bromo dot med.uc.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63610

--- Comment #18 from howarth at bromo dot med.uc.edu ---
(In reply to Francois-Xavier Coudert from comment #17)
 (In reply to Iain Sandoe from comment #16)
  Hmm the patch for __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ has been
  applied to 4.9 (AFAICT)
 
 Yes it has.
 
 
  although not to 4.8
 
 You're right. Provided that the patches are simple, maybe it's good enough
 to document them (as I have in the
 __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ patch for 4.8) and let
 distributors apply them.

There is nothing in the gcc build that *needs* to have MACOSX_DEPLOYMENT_TARGET
set, however some packaging environments, like fink and MacPorts, happen to set
MACOSX_DEPLOYMENT_TARGET by default and thus triggers the configure/libtool.m4
bug...

https://trac.macports.org/ticket/44596#comment:35

The Apple programmers told of the libtool.m4 bug so far all are of the view
that configure/libtool.m4 shouldn't really be defaulting to -undefined
dynamic_lookup as that can mask undefined symbols in release code (but should
be default -undefined error).

https://trac.macports.org/ticket/44596#comment:48

However that is a really libtool bug.


[Bug tree-optimization/63864] Missed late memory CSE

2014-11-14 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63864

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-11-14
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
Summary|Missed optimization,|Missed late memory CSE
   |related to SRA(??)  |
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
Confirmed - mine.  Note that SRA cannot decompose arrays but I see a lot
of missed CSE opportunities here which is because we unroll the loops
completely only very late and the only memory CSE pass after that is
DOM which is somewhat very limited here...

I'll try to improve that.  Related to some other PR.


[Bug sanitizer/63839] ICE: tree check: expected ssa_name, have var_decl in simplify_builtin_call, at tree-ssa-forwprop.c:1441 with -fsanitize=unreachable

2014-11-14 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63839

--- Comment #5 from Marek Polacek mpolacek at gcc dot gnu.org ---
Author: mpolacek
Date: Fri Nov 14 11:22:12 2014
New Revision: 217553

URL: https://gcc.gnu.org/viewcvs?rev=217553root=gccview=rev
Log:
PR sanitizer/63839
* asan.c (ATTR_CONST_NORETURN_NOTHROW_LEAF_LIST,
ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST): Define.
* builtin-attrs.def (ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST):
Define.
* builtins.c (fold_builtin_0): Don't include ubsan.h.  Don't
instrument BUILT_IN_UNREACHABLE here.
* sanitizer.def (BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE): Make
const.
* sanopt.c (pass_sanopt::execute): Instrument BUILT_IN_UNREACHABLE.
* tree-ssa-ccp.c (optimize_unreachable): Bail out if
SANITIZE_UNREACHABLE.
* ubsan.c (ubsan_instrument_unreachable): Rewrite for GIMPLE.
* ubsan.h (ubsan_instrument_unreachable): Adjust declaration.
testsuite/
* c-c++-common/ubsan/pr63839.c: New test.
* c-c++-common/ubsan/unreachable-2.c: New test.

Added:
trunk/gcc/testsuite/c-c++-common/ubsan/pr63839.c
trunk/gcc/testsuite/c-c++-common/ubsan/unreachable-2.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/asan.c
trunk/gcc/builtin-attrs.def
trunk/gcc/builtins.c
trunk/gcc/sanitizer.def
trunk/gcc/sanopt.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-ccp.c
trunk/gcc/ubsan.c
trunk/gcc/ubsan.h


[Bug sanitizer/63839] ICE: tree check: expected ssa_name, have var_decl in simplify_builtin_call, at tree-ssa-forwprop.c:1441 with -fsanitize=unreachable

2014-11-14 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63839

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #6 from Marek Polacek mpolacek at gcc dot gnu.org ---
Fixed.


[Bug ipa/63856] [5 Regression] ICE: verify_gimple failed: invalid argument to gimple call with -O2 -fPIC

2014-11-14 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63856

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |5.0


[Bug bootstrap/63853] [5.0 Regression] The use of strchrnul breaks bootstrap on x86_64-apple-darwin14.

2014-11-14 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63853

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||build
   Priority|P3  |P1
 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |5.0

--- Comment #13 from Richard Biener rguenth at gcc dot gnu.org ---
Fixed.


[Bug ipa/63851] [5 Regression] ipa-icf miscompiles gfortran.dg/assumed_rank_(8|9|10).f90 at -O2 and above

2014-11-14 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63851

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||wrong-code
 Target||x86_64-apple-darwin14
   Priority|P3  |P1
   Target Milestone|--- |5.0
Summary|ipa-icf miscompiles |[5 Regression] ipa-icf
   |gfortran.dg/assumed_rank_(8 |miscompiles
   ||9|10).f90 at -O2 and above |gfortran.dg/assumed_rank_(8
   |||9|10).f90 at -O2 and above


[Bug target/60580] aarch64 generates wrong code for __attribute__ ((optimize(no-omit-frame-pointer)))

2014-11-14 Thread jiwang at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60580

Jiong Wang jiwang at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jiwang at gcc dot gnu.org

--- Comment #7 from Jiong Wang jiwang at gcc dot gnu.org ---
I'd take this for long term, hopefully could find a acceptable solution.

X86 is default with -fomit-frame-pointer which makes the logic a little bit
simpler, and thus X86 could survive in more normal case, but still fail in some
corner cases.

the fundamental problem is aarch64 and also x86 want to implement a finer
control of frame pointer which let leaf function be possible without setting up
frame record even under -fno-omit-frame-pointer. While gcc generic code is not
aware of that.


[Bug middle-end/60580] aarch64 generates wrong code for __attribute__ ((optimize(no-omit-frame-pointer)))

2014-11-14 Thread jiwang at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60580

Jiong Wang jiwang at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P4
  Component|target  |middle-end
Version|4.8.3   |5.0
   Severity|normal  |minor


[Bug fortran/63867] New: LEN is lost for a CHARACTER variable inside SELECT TYPE

2014-11-14 Thread mrestelli at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63867

Bug ID: 63867
   Summary: LEN is lost for a CHARACTER variable inside SELECT
TYPE
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mrestelli at gmail dot com

Consider the following code:

program p
 implicit none

 character(len=5) :: str

 str = 'abcde'
 call checklen1(str)
 call checklen2(str)

contains

 subroutine checklen1(s)
  character(len=*), intent(in) :: s

   call checklen2(s)

 end subroutine checklen1

 subroutine checklen2(s)
  class(*), intent(in) :: s

   select type(s)
type is(character(len=*))
 write(*,*) Len is ,len(s)
 write(*,*) s is   ,s
   end select

 end subroutine checklen2

end program p


When compiled with gfortran it prints

$ ./test
 Len is0
 s is   
 Len is5
 s is   abcde

while the expected output is twice the same, i.e.

$ ./test
 Len is5
 s is   abcde
 Len is5
 s is   abcde


I.e., inside the SELECT TYPE the lenght of the string is lost, but
only when the actual argument is itself a dummy argument with LEN=* .


 $ gfortran --version
GNU Fortran (GCC) 5.0.0 20141114 (experimental)


Marco


[Bug target/63848] [5.0 regression] FAIL: c-c++-common/torture/builtin-arith-overflow-17.c -O0 execution test

2014-11-14 Thread matthew.fortune at imgtec dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63848

Matthew Fortune matthew.fortune at imgtec dot com changed:

   What|Removed |Added

 CC||matthew.fortune at imgtec dot 
com

--- Comment #1 from Matthew Fortune matthew.fortune at imgtec dot com ---
I am seeing multiple failures for the builtin-arith-overflow tests on MIPS64 as
well. I have not yet had time to investigate much but it may be due to some
missing sign extension and/or performing a range test using bitwise comparison.


[Bug bootstrap/63853] [5.0 Regression] The use of strchrnul breaks bootstrap on x86_64-apple-darwin14.

2014-11-14 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63853

--- Comment #14 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Thanks for the commit. Any plan to take into account the Jakub's remarks in
comment 11?


[Bug fortran/63867] LEN is lost for a CHARACTER variable inside SELECT TYPE

2014-11-14 Thread mrestelli at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63867

--- Comment #1 from mrestelli mrestelli at gmail dot com ---
Also, I should add that changing 

type is(character(len=*))

to

type is(character(len=:))

given an internal compiler error (anyway, the code then is invalid)

Marco


[Bug bootstrap/63853] [5.0 Regression] The use of strchrnul breaks bootstrap on x86_64-apple-darwin14.

2014-11-14 Thread iverbin at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63853

--- Comment #15 from Ilya Verbin iverbin at gmail dot com ---
(In reply to Dominique d'Humieres from comment #14)
 Thanks for the commit. Any plan to take into account the Jakub's remarks in
 comment 11?

Yes, I added them to my TODO list.


[Bug libgomp/63868] New: [5 Regression] Multiple failures in the libgomp test suite between r217458 and r217501.

2014-11-14 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63868

Bug ID: 63868
   Summary: [5 Regression] Multiple failures in the libgomp test
suite between r217458 and r217501.
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libgomp
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dominiq at lps dot ens.fr
CC: jakub at gcc dot gnu.org

Multiple failures appeared in the libgomp test suite between r217458 and
r217501,
see for instance https://gcc.gnu.org/ml/gcc-regression/2014-11/msg00309.html.

On x86_64-apple-darwin14, all the failures are UNRESOLVED and the errors are of
the kind

[Book15] f90/bug% gfc -fopenmp
/opt/gcc/work/libgomp/testsuite/libgomp.fortran/target1.f90
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:1940:Expected
comma after segment-name
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:1940:Rest of line
ignored. 1st junk character valued 32 ( ).
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:1944:Expected
comma after segment-name
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:1944:Rest of line
ignored. 1st junk character valued 32 ( ).
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:2290:Expected
comma after segment-name
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:2290:Rest of line
ignored. 1st junk character valued 32 ( ).
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:2293:Expected
comma after segment-name
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:2293:Rest of line
ignored. 1st junk character valued 32 ( ).
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:2332:Expected
comma after segment-name
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:2332:Rest of line
ignored. 1st junk character valued 32 ( ).
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:2332:Junk
character 48 (0).
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:2332:Rest of line
ignored. 1st junk character valued 111 (o).
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccH5c7Zy.s:2427:Expected
comma after segment-name
...

with the default as and

[Book15] f90/bug% gfc -fopenmp
/opt/gcc/work/libgomp/testsuite/libgomp.fortran/target1.f90 -Wa,-q
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccrwTRRF.s:1940:28: error:
unexpected token in '.section' directive
.section .gnu.offload_vars
  ^
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccrwTRRF.s:1945:29: error:
unexpected token in '.section' directive
.section .gnu.offload_funcs
   ^
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccrwTRRF.s:2292:52: error:
unexpected token in '.section' directive
.section .gnu.offload_lto_.inline.7a3ca29239cf7041
  ^
/var/folders/8q/sh_swgz96r7f5vnn08f7fxr0gn/T//ccrwTRRF.s:2296:72: error:
unexpected token in '.section' directive
.section .gnu.offload_lto___target1_MOD_foo._omp_fn.2.7a3ca29239cf7041
  ^
...

withe the clang one.


[Bug target/63848] [5.0 regression] FAIL: c-c++-common/torture/builtin-arith-overflow-17.c -O0 execution test

2014-11-14 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63848

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 CC||ktkachov at gcc dot gnu.org

--- Comment #2 from ktkachov at gcc dot gnu.org ---
Seeing these on aarch64-none-elf as well btw


[Bug libgomp/63868] [5 Regression] Multiple failures in the libgomp test suite between r217458 and r217501.

2014-11-14 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63868

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||iverbin at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
Perhaps we should just disable all offloading for Darwin, at least unless some
Darwin maintainer steps up and adds the needed support for that.


[Bug libgomp/63868] [5 Regression] Multiple failures in the libgomp test suite between r217458 and r217501.

2014-11-14 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63868

--- Comment #2 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 Perhaps we should just disable all offloading for Darwin, at least unless
 some Darwin maintainer steps up and adds the needed support for that.

Well, this won't solve the failures on linux!


[Bug driver/63869] New: gcc-4.9.2 make failed

2014-11-14 Thread atsushi.nishizawa at iar dot nagoya-u.ac.jp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63869

Bug ID: 63869
   Summary: gcc-4.9.2 make failed
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: driver
  Assignee: unassigned at gcc dot gnu.org
  Reporter: atsushi.nishizawa at iar dot nagoya-u.ac.jp

Created attachment 33971
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33971action=edit
log file which may be written during the compilation

I tried to build gcc-4.9.2 from the source.
configure is successfully finished and I tried to make but it failed with
following message.

configure: error: GNU Fortran is not working; please report a bug in
http://gcc.gnu.org/bugzilla, attaching */config.log

attached please find the config.log


[Bug libgomp/63868] [5 Regression] Multiple failures in the libgomp test suite between r217458 and r217501.

2014-11-14 Thread iverbin at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63868

Ilya Verbin iverbin at gmail dot com changed:

   What|Removed |Added

 CC||iverbin at gmail dot com

--- Comment #3 from Ilya Verbin iverbin at gmail dot com ---
(In reply to Dominique d'Humieres from comment #2)
  Perhaps we should just disable all offloading for Darwin, at least unless
  some Darwin maintainer steps up and adds the needed support for that.
 
 Well, this won't solve the failures on linux!

Failures on linux ( https://gcc.gnu.org/ml/gcc-regression/2014-11/msg00309.html
) are caused by another issue (not by errors during assembling), I'm
investigating them.
I agree to disable generation of offload IR sections temporary for darwin.


[Bug target/63870] New: [Aarch64] [ARM] Errors in use of NEON instrinsics are reported incorrectly

2014-11-14 Thread cbaylis at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63870

Bug ID: 63870
   Summary: [Aarch64] [ARM] Errors in use of NEON instrinsics are
reported incorrectly
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: cbaylis at gcc dot gnu.org
  Reporter: cbaylis at gcc dot gnu.org
CC: alan.lawrence at arm dot com
Target: arm-unknown-linux-gnueabi, aarch64-linux-gnu

Created attachment 33972
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33972action=edit
Example tests

Several NEON intrinsics have arguments which must be a constant integer in a
fixed range. At present, these constraints are enforced for most intrinsics
during assembly output, or, in some cases, not checked at all.

This can be fixed by using the %K format specifier to the error message. See 
https://gcc.gnu.org/ml/gcc-patches/2014-11/msg01248.html for a proposed patch
and explanation.

Once that patch is applied, it is necessary to rework the expansion of the
builtins so that the constraints are checked during expansion. Some of this
work has been started for Aarch64
(https://gcc.gnu.org/ml/gcc-patches/2014-11/msg00421.html)


Example demonstration of incorrect error messages using attached test cases on
an ARM target. Note that the error message is reported at the end of each
function, rather than the line where the error occurs.

$ arm-unknown-linux-gnueabihf-gcc -c neon_const_range_tests/* -mfpu=neon
neon_const_range_tests/vld1.c: In function ‘f_vld1_lane’:
neon_const_range_tests/vld1.c:10:1: error: lane out of range
 }
 ^
neon_const_range_tests/vld4.c: In function ‘f_vld4_lane’:
neon_const_range_tests/vld4.c:10:1: error: lane out of range
 }
 ^
neon_const_range_tests/vmul_lane.c: In function ‘f_vmul_lane’:
neon_const_range_tests/vmul_lane.c:10:1: error: lane out of range
 }
 ^
neon_const_range_tests/vshl.c: In function ‘f_vshl’:
neon_const_range_tests/vshl.c:10:1: error: constant out of range
 }
 ^
neon_const_range_tests/vshrn_n.c: In function ‘f_vshrn_n’:
neon_const_range_tests/vshrn_n.c:10:1: error: constant out of range
 }
 ^
neon_const_range_tests/vst1.c: In function ‘f_vst1_lane’:
neon_const_range_tests/vst1.c:9:1: error: lane out of range
 }
 ^
neon_const_range_tests/vst4.c: In function ‘f_vst4_lane’:
neon_const_range_tests/vst4.c:9:1: error: lane out of range
 }
 ^

[Bug go/63816] internal compiler error: in expand_expr_addr_expr_1 on gcc version 5.0.0 20141109 (experimental)

2014-11-14 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63816

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-11-14
 Ever confirmed|0   |1

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
I'm seeing the same ICE on ppc64 with a modified libstdc++


[Bug bootstrap/63573] [5 Regression] libgo: ICE building libgo on powerpc-linux-gnu

2014-11-14 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63573

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 CC||tekaev at kth dot se

--- Comment #19 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
*** Bug 63816 has been marked as a duplicate of this bug. ***


[Bug go/63816] internal compiler error: in expand_expr_addr_expr_1 on gcc version 5.0.0 20141109 (experimental)

2014-11-14 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63816

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||trippels at gcc dot gnu.org
 Resolution|--- |DUPLICATE

--- Comment #2 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
ipa-icf related. dup.

*** This bug has been marked as a duplicate of bug 63573 ***


[Bug c++/63871] New: -Weffc++ does not understand type deduction for return types

2014-11-14 Thread david at doublewise dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63871

Bug ID: 63871
   Summary: -Weffc++ does not understand type deduction for return
types
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: david at doublewise dot net

Source file:


class C {};
auto  operator++(C  c) {
return c;
}

int main() {
}



gcc-4.9 source/main.cpp -Weffc++ -std=c++1y
source/main.cpp:112:25: warning: prefix ‘auto operator++(C)’ should return
‘C’ [-Weffc++]
 auto  operator++(C  c) {



I get the same error with the return type specified as `auto ` or
`decltype(auto)`.

[Bug c++/63871] -Weffc++ does not understand type deduction for return types

2014-11-14 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63871

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
-Weffc++ hasn't been updated or maintained in years, it still uses the rules
form the 1st edition of Effective C++ ... I wish people would stop using it.

PR 16166 is the place where -Weffc++ PRs go to die.

*** This bug has been marked as a duplicate of bug 16166 ***


[Bug c++/16166] -Weffc++ finer granularity

2014-11-14 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=16166

--- Comment #10 from Jonathan Wakely redi at gcc dot gnu.org ---
*** Bug 63871 has been marked as a duplicate of this bug. ***


[Bug c/59984] OpenMP and Cilk Plus SIMD pragma makes loop incorrect

2014-11-14 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59984

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|NEW
 CC||jamborm at gcc dot gnu.org,
   ||rguenth at gcc dot gnu.org
   Assignee|jakub at gcc dot gnu.org   |unassigned at gcc dot 
gnu.org

--- Comment #13 from Jakub Jelinek jakub at gcc dot gnu.org ---
(In reply to Stupachenko Evgeny from comment #12)
 Created attachment 33963 [details]
 test case where pragma simd disable vectorization
 
 The following test case compiled with -Ofast vectorize the loop in the
 GetXsum function.
 Adding -fopenmp leads to failed vectorization due to:
 
 simd_issue.cpp:26:18: note: not vectorized: data ref analysis failed
 D.2329[_7].x = _12;
 
 It looks like before the patch in this Bug loop was vectorized with -fopenmp.

The testcase is invalid, you need reduction(+:sim) clause, otherwise the loop
has invalid inter-iteration dependencies.

That said, even with that, with C it vectorizes fine, while with C++ it
doesn't.

In *.einline the C - C++ difference is (before that I don't see such):
-  D.1856[_19].x = _24;
-  _26 = D.1856[_19];
-  _27 = MEM[(const struct XY *)_26].x;
+  D.2352[_19].x = _24;
+  _26 = D.2352[_19];
+  _40 = MEM[(float *)_26];

In *.ealias the C - C++ difference is:
-  D.1856[_19].x = _24;
-  _27 = MEM[(const struct XY *)D.1856][_19].x;
+  D.2352[_19].x = _24;
+  _26 = D.2352[_19];
+  _40 = MEM[(float *)_26];

and apparently FRE1 handles the former but not the latter.  Richard?
As the struct contains float at that offset, I don't see why FRE1 shouldn't
optimize that to _40 = _24.

Shorter testcase for the FRE1 missed-optimization:
struct S { float a, b; };

float
foo (int x, float y)
{
  struct S z[1024];
  z[x].a = y;
  struct S *p = z[x];
  float *q = (float *) p;
  return *q;
}

(dunno why the inliner handles things differently between C and C++ on the #c12
testcase).  Now, as for vectorizing it even if FRE isn't able to optimize it,
we currently don't support interleaved accesses to the omp simd array
attributed arrays, perhaps we could at least some easy cases thereof, and
supposedly we should teach SRA about those too (like, if the arrays aren't
addressable and aren't accesses as whole, but just individual fields, split it
into separate omp simd array accesses instead.  In this particular case due
to the FRE missed optimization it is addressable though.
Or perhaps teach fold to gimple folding to fold that:
  q_5 = z[x_2(D)];
  _6 = *q_5;
back into:
  _6 = z[x_2(D)].x;
?


[Bug go/63731] Fallback to netgo does not work

2014-11-14 Thread ian at airs dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63731

--- Comment #3 from Ian Lance Taylor ian at airs dot com ---
The gc linker does not use the external linker merely because you link against
the net package.  You need to also pass -linkmode external in ldflags.


[Bug c++/63779] g++ 4.9 generates invalid object provoking a GOT relative relocation must reference a local symbol linker error on SunOS

2014-11-14 Thread ro at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63779

Rainer Orth ro at gcc dot gnu.org changed:

   What|Removed |Added

 CC||ro at gcc dot gnu.org

--- Comment #1 from Rainer Orth ro at gcc dot gnu.org ---
(In reply to Richard PALO from comment #0)

It would be far more useful to see the relocations ld is complaining about, not
just the symbols.

 I attach the .ii and .s temps for both gcc48 and gcc49

Unfortunately, you didn't.

  Rainer


[Bug c++/63872] New: -Wunused-local-typedefs warns incorrectly on a typedef that's referenced from a template

2014-11-14 Thread thakis at chromium dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63872

Bug ID: 63872
   Summary: -Wunused-local-typedefs warns incorrectly on a typedef
that's referenced from a template
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: thakis at chromium dot org

$ cat test2.cc
typedef char YesType;
struct NoType { YesType dummy[2]; };

template typename T
struct ShouldAbortOnSelfReset {
  template typename U
  static NoType Test(const typename U::AllowSelfReset*);

  template typename U
  static YesType Test(...);

  static const bool value = sizeof(TestT(0)) == sizeof(YesType);
};

templateclass T
struct Foo {
  void reset() {
ShouldAbortOnSelfResetT::value;
  }
};

void f() {
  struct NoOpDeleter {
typedef void AllowSelfReset;
inline void operator()(int*) {}
  };

  FooNoOpDeleter f;
  f.reset();
}

$ ~/gcc482prefix/bin/gcc -c test2.cc -std=c++11 -Wall
test2.cc: In function ‘void f()’:
test2.cc:24:18: warning: typedef ‘f()::NoOpDeleter::AllowSelfReset’ locally
defined but not used [-Wunused-local-typedefs]
 typedef void AllowSelfReset;
  ^
test2.cc: In instantiation of ‘void FooT::reset() [with T =
f()::NoOpDeleter]’:
test2.cc:29:11:   required from here


Warning on this is very dangerous, since removing the typedef will change the
meaning of the code but it's still going to compile.

This is with 4.8.2, but it also happens in gcc 4.9.

[Bug c++/63779] g++ 4.9 generates invalid object provoking a GOT relative relocation must reference a local symbol linker error on SunOS

2014-11-14 Thread richard at netbsd dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63779

--- Comment #2 from Richard PALO richard at netbsd dot org ---
Sorry. Given the size, I'll use the following directory for any information
needed: http://www.netbsd.org/~richard/xulrunner31-g++-issue/

Index of /~richard/xulrunner31-g++-issue

Parent Directory
MediaDecoderReader.cpp
MediaDecoderReader.h
MediaDecoderReader.ii
MediaDecoderReader.o
MediaDecoderReader.o.gkd
MediaDecoderReader.s
ld-debug.txt.gz

I included the gzip'd output of the link with:
LD_OPTIONS=-Dfiles,detail,reloc,got,sections,output=ld-debug.txt

Anything else useful to provide?


[Bug c++/63872] -Wunused-local-typedefs warns incorrectly on a typedef that's referenced from a template

2014-11-14 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63872

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-11-14
Version|unknown |4.8.2
 Ever confirmed|0   |1

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
That's just a bug, a typedef defined at class scope is not a local typedef,
even if it's in a local class.


[Bug web/63873] New: target links in Concepts Index in gccint do not work

2014-11-14 Thread manu at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63873

Bug ID: 63873
   Summary: target links in Concepts Index in gccint do not work
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: web
  Assignee: unassigned at gcc dot gnu.org
  Reporter: manu at gcc dot gnu.org
CC: dmalcolm at gcc dot gnu.org

From https://gcc.gnu.org/onlinedocs/gccint/Concept-Index.html#Concept-Index
we get
https://gcc.gnu.org/onlinedocs/gccint/Unary-and-Binary-Expressions.html#index-INIT_005fEXPR-1907
which does not exist because this description list does not have any ids.

Texinfo bug? or GCC bug? 

Also, compare

https://gcc.gnu.org/onlinedocs/gccint/Concept-Index.html#Concept-Index

with

https://dmalcolm.fedorapeople.org/gcc/libgccjit-api-docs/genindex.html

Can we move into the 21st century already?


[Bug target/63874] New: vtable address generation goes through memory

2014-11-14 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63874

Bug ID: 63874
   Summary: vtable address generation goes through memory
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: pinskia at gcc dot gnu.org
Target: aarch64

Take:
struct a
{
  virtual void f(void);
  virtual ~a();
};
struct b : a
{
  virtual void f(void);
  virtual ~b();
};
void b::f(void){}
b::~b(void){}

Currently b::~b() produces:
_ZN1bD2Ev:
.LFB2:
.cfi_startproc
ldrx1, .LC0
strx1, [x0]
b_ZN1aD2Ev
.cfi_endproc

This really should be:
_ZN1bD2Ev:
.LFB1:
.cfi_startproc
adrpx1, _ZTV1b+16
addx1, x1, :lo12:_ZTV1b+16
strx1, [x0]
b_ZN1aD2Ev

Which is produced if I don't have a definition of b::f() in the same TU causing
the vtable not to be defined weak in this TU.


[Bug c++/63875] New: Bogus unused-but-set-parameter warning when expanding a variadic template argument pack

2014-11-14 Thread tejohnson at google dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63875

Bug ID: 63875
   Summary: Bogus unused-but-set-parameter warning when expanding
a variadic template argument pack
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: tejohnson at google dot com

The following test case warns about a variable that is set but unused. The
parameter is unused when the argument pack has nothing in it, but it is never
set.

% cat b.cc
template class... Ts
void Sink(Ts...) {}

struct S {
  int Get(int) { return 0; }
};

template int... Is
void F(S s) {
  Sink(s.Get(Is)...);
}

int main() {
  F({});
}

$ g++ -c -O b.cc -std=c++11 -Wall -Wunused-but-set-parameter
b.cc: In instantiation of 'void F(S) [with int ...Is = {}]':
b.cc:14:9:   required from here
b.cc:9:10: warning: parameter 's' set but not used [-Wunused-but-set-parameter]
 void F(S s) {


Google ref b/10709546.
  ^


[Bug c++/63872] -Wunused-local-typedefs warns incorrectly on a typedef that's referenced from a template

2014-11-14 Thread thakis at chromium dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63872

--- Comment #2 from thakis at chromium dot org ---
I think warning on unused typedefs in local classes is generally a useful
feature, not a bug. The bug here is that it's warning on a typedef in a local
class that is being used.


[Bug c/63862] C frontend converts shift-count to int while standard wants integer promotions

2014-11-14 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63862

--- Comment #1 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
If the middle-end handles arbitrary integer types for shift counts, it 
should be fine to remove this conversion (but check that the ubsan code 
will handle arbitrary integer types).  I suspect this is also visible as 
an ubsan bug (that is, that these conversions will cause shifts by e.g. 
0x1ULL not to be detected as undefined).


[Bug c/63862] C frontend converts shift-count to int while standard wants integer promotions

2014-11-14 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63862

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-11-14
 CC||mpolacek at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |mpolacek at gcc dot 
gnu.org
   Target Milestone|--- |5.0
 Ever confirmed|0   |1

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
I'll give this a try in stage3 then.


[Bug c++/63876] New: static data members of template classes w/ default ctors gives undefined reference error

2014-11-14 Thread aleaverfay at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63876

Bug ID: 63876
   Summary: static data members of template classes w/ default
ctors gives undefined reference error
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: aleaverfay at gmail dot com

Created attachment 33973
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33973action=edit
.cc, .hh, and .ii files along with the compilation command

Static data members of template classes that use default constructors don't
seem to get  symbols emitted for them.

I have a case where I cannot use anything besides the default constructor for
this static data member: std::mutex.

I've created a small test case that gives me the same problem.

gcc version: 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
system type: Ubuntu 14.04.1
(I don't know what options were given to g++ when it was built; how do I find
that out?)
command line: (also in attachment) 

g++ -std=c++0x main.cc test.cc -I.

compiler output:

/tmp/cci1VgZe.o: In function `Foo::set_bar(int)':
test.cc:(.text+0x86): undefined reference to `CRTP_classFoo::mutex_'
collect2: error: ld returned 1 exit status


[Bug ipa/63814] g++.dg/ipa/pr61160-1.C fails with -m32 on darwin14

2014-11-14 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

--- Comment #13 from H.J. Lu hjl.tools at gmail dot com ---
(In reply to Igor Zamyatin from comment #11)
 Will take a look. Thanks!

On Linux, the 32-bit PIC regression was introduced by r202145.


[Bug ipa/63814] g++.dg/ipa/pr61160-1.C fails with -m32 on darwin14

2014-11-14 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

--- Comment #14 from H.J. Lu hjl.tools at gmail dot com ---
(In reply to H.J. Lu from comment #13)
 (In reply to Igor Zamyatin from comment #11)
  Will take a look. Thanks!
 
 On Linux, the 32-bit PIC regression was introduced by r202145.

It is a -fdevirtualize-speculatively bug.


[Bug ipa/63814] [4.9/5 Regression] g++.dg/ipa/pr61160-1.C fails with -m32 -fPIC

2014-11-14 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 Target|x86_64-apple-darwin14   |i686
   Host|x86_64-apple-darwin14   |
Version|5.0 |4.9.3
   Target Milestone|--- |4.9.3
Summary|g++.dg/ipa/pr61160-1.C  |[4.9/5 Regression]
   |fails with -m32 on darwin14 |g++.dg/ipa/pr61160-1.C
   ||fails with -m32 -fPIC
  Build|x86_64-apple-darwin14   |


[Bug c++/63876] static data members of template classes w/ default ctors gives undefined reference error

2014-11-14 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63876

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |INVALID
   Severity|major   |normal

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
You've only declared a specialization, this is not a definition:

template std::mutex CRTP_class Foo ::mutex_;


You can make it a definition with an initializer:

template std::mutex CRTP_class Foo ::mutex_{};


[Bug ipa/63814] [4.9/5 Regression] g++.dg/ipa/pr61160-1.C fails with -m32 -fPIC

2014-11-14 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

--- Comment #15 from H.J. Lu hjl.tools at gmail dot com ---
(In reply to H.J. Lu from comment #14)
 (In reply to H.J. Lu from comment #13)
  (In reply to Igor Zamyatin from comment #11)
   Will take a look. Thanks!
  
  On Linux, the 32-bit PIC regression was introduced by r202145.
 
 It is a -fdevirtualize-speculatively bug.

It only happens when --param ipa-cp-eval-threshold is used.


[Bug ipa/63814] [4.9/5 Regression] g++.dg/ipa/pr61160-1.C fails with -m32 -fPIC

2014-11-14 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

--- Comment #16 from H.J. Lu hjl.tools at gmail dot com ---
-fdevirtualize-speculatively doesn't work well with IPA-CP cloning
under 32-bit PIC.


[Bug java/61552] Unneeded check for libart

2014-11-14 Thread Arfrever.FTA at GMail dot Com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61552

--- Comment #1 from Arfrever Frehtes Taifersar Arahesis Arfrever.FTA at GMail 
dot Com ---
Created attachment 33974
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33974action=edit
gcc_delete_libart_check.patch


[Bug c/63877] New: - -Wmissing-declarations produces false alarms for C99 inline functions

2014-11-14 Thread eggert at gnu dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877

Bug ID: 63877
   Summary: - -Wmissing-declarations produces false alarms for C99
inline functions
   Product: gcc
   Version: 4.9.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: eggert at gnu dot org

This is a followup to PR c/54113, which was about -Wmissing-prototypes.  This
followup bug report is the same, except it is about -Wmissing-declarations.

-Wmissing-declarations produces false alarms for C99-style
inline functions.  We can use the same example as for PR c/54113.
Suppose foo.h contains this:

  inline float square(float x) {return x*x;}
  inline float cube(float x) {return x*x*x;}

and foo.c contains this:

  #include foo.h
  extern float square(float x);
  extern float cube(float x);

Then the command:

  gcc -c -Wmissing-declarations foo.c

outputs:

  In file included from foo.c:1:0:
  foo.h:1:14: warning: no previous declaration for 'square'
[-Wmissing-declarations]
   inline float square(float x) {return x*x;}
  ^
  foo.h:2:14: warning: no previous declaration for 'cube'
[-Wmissing-declarations]
   inline float cube(float x) {return x*x*x;}
  ^

The diagnostics should not be output, as this is the normal
way to use inline functions in C.

To fix this, I suggest that the diagnostic be suppressed
for inline functions, at least for C99 mode.


[Bug c/63877] - -Wmissing-declarations produces false alarms for C99 inline functions

2014-11-14 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-11-14
 CC||mpolacek at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |mpolacek at gcc dot 
gnu.org
   Target Milestone|--- |5.0
 Ever confirmed|0   |1

--- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org ---
Mine.


[Bug c/63878] New: Variables of incomplete type can be defined with -fno-fat-lto-objects

2014-11-14 Thread mustrumr97 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63878

Bug ID: 63878
   Summary: Variables of incomplete type can be defined with
-fno-fat-lto-objects
   Product: gcc
   Version: 4.9.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mustrumr97 at gmail dot com

a.c:
struct a x;

gcc -flto -fno-fat-lto-objects -c a.c # ok
gcc -flto -ffat-lto-objects -c a.c # fail

I think this should always be rejected.


[Bug ipa/63814] [4.9/5 Regression] g++.dg/ipa/pr61160-1.C fails with -m32 -fPIC

2014-11-14 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

--- Comment #17 from H.J. Lu hjl.tools at gmail dot com ---
Without -fPIC, r202145 gave

pr63814.C:44:1: error: edge points to wrong declaration:
 }
 ^
 function_decl 0x7f56f87c6400 MixinFunc.constprop
type method_type 0x7f56f87bdf18
type pointer_type 0x7f56f8643c78 type void_type 0x7f56f8643bd0 void
public unsigned SI
size integer_cst 0x7f56f8627fc0 constant 32
unit size integer_cst 0x7f56f8627fe0 constant 4
align 32 symtab 0 alias set 4 canonical type 0x7f56f8643c78
pointer_to_this pointer_type 0x7f56f8652888
QI
size integer_cst 0x7f56f8645180 constant 8
unit size integer_cst 0x7f56f86451a0 constant 1
align 8 symtab 0 alias set -1 canonical type 0x7f56f87bdf18 method
basetype record_type 0x7f56f87a0738 CExample
arg-types tree_list 0x7f56f87c86b8 value pointer_type 0x7f56f87a09d8
chain tree_list 0x7f56f8636aa0 value void_type 0x7f56f8643bd0
void
addressable used static autoinline decl_5 QI defer-output file pr63814.C
line 24 col 9 align 16 context record_type 0x7f56f87a0738 CExample
full-name void* CExample::MixinFunc.constprop()
pending-inline-info 0x7f56f87aa880
 Instead of: function_decl 0x7f56f8783900 _ZThn4_N8CExample9MixinFuncEiPv
type method_type 0x7f56f87a0bd0
type pointer_type 0x7f56f8643c78 type void_type 0x7f56f8643bd0 void
public unsigned SI
size integer_cst 0x7f56f8627fc0 constant 32
unit size integer_cst 0x7f56f8627fe0 constant 4
align 32 symtab 0 alias set 4 canonical type 0x7f56f8643c78
pointer_to_this pointer_type 0x7f56f8652888
QI
size integer_cst 0x7f56f8645180 constant 8
unit size integer_cst 0x7f56f86451a0 constant 1
align 8 symtab 0 alias set -1 canonical type 0x7f56f87a0bd0 method
basetype record_type 0x7f56f87a0738 CExample
arg-types tree_list 0x7f56f879f5a0 value pointer_type 0x7f56f87a09d8
chain tree_list 0x7f56f879f1e0 value integer_type 0x7f56f86435e8
int
chain tree_list 0x7f56f879f208 value pointer_type
0x7f56f8643c78
chain tree_list 0x7f56f8636aa0 value void_type
0x7f56f8643bd0 void
pointer_to_this pointer_type 0x7f56f87a7150
addressable asm_written used public weak virtual decl_5 QI file pr63814.C
line 24 col 9 align 8 context record_type 0x7f56f87a0738 CExample
arguments parm_decl 0x7f56f87aaa80 this
type pointer_type 0x7f56f87a0a80 type record_type 0x7f56f87a0738
CExample
readonly unsigned SI size integer_cst 0x7f56f8627fc0 32 unit size
integer_cst 0x7f56f8627fe0 4
align 32 symtab 0 alias set -1 canonical type 0x7f56f87a0a80
readonly used unsigned SI file pr63814.C line 24 col 39 size
integer_cst 0x7f56f8627fc0 32 unit size integer_cst 0x7f56f8627fe0 4
align 32 context function_decl 0x7f56f8783900
_ZThn4_N8CExample9MixinFuncEiPv arg-type pointer_type 0x7f56f87a0a80
chain parm_decl 0x7f56f87aab00 arg type integer_type 0x7f56f86435e8
int
used SI file pr63814.C line 24 col 24 size integer_cst
0x7f56f8627fc0 32 unit size integer_cst 0x7f56f8627fe0 4
align 32 context function_decl 0x7f56f8783900
_ZThn4_N8CExample9MixinFuncEiPv
arg-type integer_type 0x7f56f86435e8 int chain parm_decl
0x7f56f87aab80 arg2
full-name virtual void* CExample::_ZThn4_N8CExample9MixinFuncEiPv(int,
void*)
   
main/14 (int main()) @0x7f56f87b1390
  Type: function definition analyzed
  Visibility: externally_visible public
  References: _ZTV5CBase/17 (addr)_ZTV6MMixin/16 (addr)_ZTV8CExample/15
(addr)_ZTV8CExample/15 (addr)
  Referring: 
  Availability: available
  Function flags: body only_called_at_startup
  Called by: 
  Calls: _ZN8CExample9MixinFuncEiPv.constprop.0/36 (1.00 per call) (can throw
external) 
pr63814.C:44:1: internal compiler error: verify_cgraph_node failed
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.


[Bug c/63878] Variables of incomplete type can be defined with -fno-fat-lto-objects

2014-11-14 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63878

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||accepts-invalid
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-11-14
 Ever confirmed|0   |1

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
The problem is the error message is emitted way too late and not by the
front-end but by the middle-end.

Confirmed.


[Bug c++/63876] static data members of template classes w/ default ctors gives undefined reference error

2014-11-14 Thread aleaverfay at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63876

--- Comment #2 from Andrew Leaver-Fay aleaverfay at gmail dot com ---
Thank you!


[Bug target/63810] gcc sets incorrect macro for OS X deployment targets

2014-11-14 Thread howarth at bromo dot med.uc.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810

--- Comment #6 from howarth at bromo dot med.uc.edu ---
The proposed patch for gcc trunk fails to build here against r217590

/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/./prev-gcc/xg++
-B/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/./prev-gcc/
-B/sw/lib/gcc5.0/x86_64-apple-darwin14.0.0/bin/ -nostdinc++
-B/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/prev-x86_64-apple-darwin14.0.0/libstdc++-v3/src/.libs
-B/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/prev-x86_64-apple-darwin14.0.0/libstdc++-v3/libsupc++/.libs

-I/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/prev-x86_64-apple-darwin14.0.0/libstdc++-v3/include/x86_64-apple-darwin14.0.0

-I/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/prev-x86_64-apple-darwin14.0.0/libstdc++-v3/include
 -I/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20141114/libstdc++-v3/libsupc++
-L/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/prev-x86_64-apple-darwin14.0.0/libstdc++-v3/src/.libs
-L/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/prev-x86_64-apple-darwin14.0.0/libstdc++-v3/libsupc++/.libs
-c  -DIN_GCC_FRONTEND -DIN_GCC_FRONTEND -DIN_GCC_FRONTEND -g -O2  -gtoggle
-DIN_GCC-fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall
-Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute
-Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros
-Wno-overlength-strings -Werror -fno-common  -DHAVE_CONFIG_H -I. -I.
-I../../gcc-5-20141114/gcc -I../../gcc-5-20141114/gcc/.
-I../../gcc-5-20141114/gcc/../include
-I../../gcc-5-20141114/gcc/../libcpp/include -I/sw/include -I/sw/include 
-I../../gcc-5-20141114/gcc/../libdecnumber
-I../../gcc-5-20141114/gcc/../libdecnumber/dpd -I../libdecnumber
-I../../gcc-5-20141114/gcc/../libbacktrace  -DCLOOG_INT_GMP -I/sw/include
-I/sw/include -o darwin-c.o -MT darwin-c.o -MMD -MP -MF ./.deps/darwin-c.TPo
-DGCC_INCLUDE_DIR=\/sw/lib/gcc5.0/lib/gcc/x86_64-apple-darwin14.0.0/5.0.0/include\
-DFIXED_INCLUDE_DIR=\/sw/lib/gcc5.0/lib/gcc/x86_64-apple-darwin14.0.0/5.0.0/include-fixed\
-DGPLUSPLUS_INCLUDE_DIR=\/sw/lib/gcc5.0/lib/gcc/x86_64-apple-darwin14.0.0/5.0.0/../../../../include/c++/5.0.0\
-DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=0
-DGPLUSPLUS_TOOL_INCLUDE_DIR=\/sw/lib/gcc5.0/lib/gcc/x86_64-apple-darwin14.0.0/5.0.0/../../../../include/c++/5.0.0/x86_64-apple-darwin14.0.0\
-DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\/sw/lib/gcc5.0/lib/gcc/x86_64-apple-darwin14.0.0/5.0.0/../../../../include/c++/5.0.0/backward\
-DLOCAL_INCLUDE_DIR=\/usr/local/include\
-DCROSS_INCLUDE_DIR=\/sw/lib/gcc5.0/lib/gcc/x86_64-apple-darwin14.0.0/5.0.0/../../../../x86_64-apple-darwin14.0.0/sys-include\
-DTOOL_INCLUDE_DIR=\/sw/lib/gcc5.0/lib/gcc/x86_64-apple-darwin14.0.0/5.0.0/../../../../x86_64-apple-darwin14.0.0/include\
-DNATIVE_SYSTEM_HEADER_DIR=\/usr/include\ -DPREFIX=\/sw/lib/gcc5.0/\
-DSTANDARD_EXEC_PREFIX=\/sw/lib/gcc5.0/lib/gcc/\ 
../../gcc-5-20141114/gcc/config/darwin-c.c
../../gcc-5-20141114/gcc/config/darwin-c.c: In function ‘const char*
version_as_modern_macro(const long unsigned int*)’:
../../gcc-5-20141114/gcc/config/darwin-c.c:711:7: error: comparison between
signed and unsigned integer expressions [-Werror=sign-compare]
   != ((major  9) ? sizeof 99 : sizeof 9) - 1)
   ^
cc1plus: all warnings being treated as errors
../../gcc-5-20141114/gcc/config/t-darwin:26: recipe for target 'darwin-c.o'
failed
make[3]: *** [darwin-c.o] Error 1
make[3]: Leaving directory
'/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/gcc'
Makefile:4368: recipe for target 'all-stage2-gcc' failed
make[2]: *** [all-stage2-gcc] Error 2
make[2]: Leaving directory '/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir'
Makefile:20616: recipe for target 'stage2-bubble' failed
make[1]: *** [stage2-bubble] Error 2
make[1]: Leaving directory '/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir'
Makefile:906: recipe for target 'all' failed
make: *** [all] Error 2

[Bug c/63878] Variables of incomplete type can be defined with -fno-fat-lto-objects

2014-11-14 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63878

--- Comment #2 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
This is probably essentially the same as bug 24293 (reporting such an 
issue with -fsyntax-only).


[Bug c/24293] Undefined behaviour not diagnosed with -fsyntax-only

2014-11-14 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24293

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

  Known to fail||

--- Comment #4 from Andrew Pinski pinskia at gcc dot gnu.org ---
(In reply to Manuel López-Ibáñez from comment #3)
 Sorry for my ignorance, what is syntactically wrong with that?

It is semantically incorrect and not syntactically incorrect.  Basically
-fsyntax-only includes most of the semantics analysis, why not this one too.

[Bug target/63810] gcc sets incorrect macro for OS X deployment targets

2014-11-14 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810

--- Comment #7 from Lawrence Velázquez larryv at macports dot org ---
(In reply to howarth from comment #6)
 ../../gcc-5-20141114/gcc/config/darwin-c.c: In function ‘const char*
 version_as_modern_macro(const long unsigned int*)’:
 ../../gcc-5-20141114/gcc/config/darwin-c.c:711:7: error: comparison between
 signed and unsigned integer expressions [-Werror=sign-compare]
!= ((major  9) ? sizeof 99 : sizeof 9) - 1)
^

Seriously?

[Bug c/63878] Variables of incomplete type can be defined with -fno-fat-lto-objects

2014-11-14 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63878

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 Depends on||24293

--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org ---
Depends on bug 24293 then.  Funny how I said the same thing in the previous bug
and I even redid the analysis for this one and I forgot about the previous one
too :).


[Bug rtl-optimization/60079] [LRA] ICE when compiling attached case.

2014-11-14 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60079

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 Status|WAITING |NEW

--- Comment #5 from Andrew Pinski pinskia at gcc dot gnu.org ---
I can reproduce it but I have other changes in my toolchain which could be
exposing it.


[Bug rtl-optimization/60079] [LRA] ICE when compiling attached case.

2014-11-14 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60079

--- Comment #6 from Andrew Pinski pinskia at gcc dot gnu.org ---
/data1/src/gcc-cavium/toolchain-thunder/scripts/../src/newlib/libc/stdlib/strtol.c:
In function ‘_strtol_r’:
/data1/src/gcc-cavium/toolchain-thunder/scripts/../src/newlib/libc/stdlib/strtol.c:213:1:
internal compiler error: in update_reg_eliminate, at lra-eliminations.c:1202
 }
 ^

[Bug rtl-optimization/60079] [LRA] ICE when compiling attached case.

2014-11-14 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60079

--- Comment #7 from Andrew Pinski pinskia at gcc dot gnu.org ---
Note my testcase is with -mabi=ilp32 too.


[Bug target/63810] gcc sets incorrect macro for OS X deployment targets

2014-11-14 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810

Lawrence Velázquez larryv at macports dot org changed:

   What|Removed |Added

  Attachment #33968|0   |1
is obsolete||

--- Comment #8 from Lawrence Velázquez larryv at macports dot org ---
Created attachment 33975
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33975action=edit
updated trunk patch that satisfies -Werror=sign-compare

[Bug target/63810] gcc sets incorrect macro for OS X deployment targets

2014-11-14 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810

Lawrence Velázquez larryv at macports dot org changed:

   What|Removed |Added

  Attachment #33975|updated trunk patch that|patch against trunk for
description|satisfies   |handling deployment targets
   |-Werror=sign-compare|correctly

--- Comment #9 from Lawrence Velázquez larryv at macports dot org ---
Comment on attachment 33975
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33975
patch against trunk for handling deployment targets correctly

diff --git a/gcc/config/darwin-c.c b/gcc/config/darwin-c.c
index ffefa37..311cdd4 100644
--- a/gcc/config/darwin-c.c
+++ b/gcc/config/darwin-c.c
@@ -590,42 +590,167 @@ find_subframework_header (cpp_reader *pfile, const char 
*header, cpp_dir **dirp)
   return 0;
 }
 
-/* Return the value of darwin_macosx_version_min suitable for the
-   __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro, so '10.4.2'
-   becomes 1040 and '10.10.0' becomes 101000.  The lowest digit is
-   always zero, as is the second lowest for '10.10.x' and above.
-   Print a warning if the version number can't be understood.  */
+/*  Given a version string, return the version as a statically-allocated
+array of three non-negative integers.  If the version string is
+invalid, return null.
+
+Version strings must consist of one, two, or three tokens, each
+separated by a single period.  Each token must contain only the
+characters '0' through '9' and is converted to an equivalent
+integer.  Omitted tokens are treated as zeros.  For example:
+
+10  becomes   {10,0,0}
+10.10   becomes   {10,10,0}
+10.10.1 becomes   {10,10,1}
+10.10.1 becomes   {10,10,1}
+10.010.001  becomes   {10,10,1}
+10.10.1 becomes   {10,10,1}  */
+
+enum version_components { MAJOR, MINOR, TINY };
+
+static const unsigned long *
+parse_version (const char *version_str)
+{
+  size_t version_len;
+  char *end;
+  static unsigned long version_array[3];
+
+  if (! version_str)
+return NULL;
+
+  version_len = strlen (version_str);
+  if (version_len  1)
+return NULL;
+
+  /* Version string must consist of digits and periods only.  */
+  if (strspn (version_str, 0123456789.) != version_len)
+return NULL;
+
+  if (! ISDIGIT (version_str[0]) || ! ISDIGIT (version_str[version_len - 1]))
+return NULL;
+
+  version_array[MAJOR] = strtoul (version_str, end, 10);
+  version_str = end + ((*end == '.') ? 1 : 0);
+
+  /* Version string must not contain adjacent periods.  */
+  if (*version_str == '.')
+return NULL;
+
+  version_array[MINOR] = strtoul (version_str, end, 10);
+  version_str = end + ((*end == '.') ? 1 : 0);
+
+  version_array[TINY] = strtoul (version_str, end, 10);
+
+  /* Version string must contain no more than three tokens.  */
+  if (*end != '\0')
+return NULL;
+
+  return version_array;
+}
+
+/*  Given a three-component version represented as an array of
+non-negative integers, return a statically-allocated string suitable
+for the legacy __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro.
+If the version is invalid and cannot be coerced into a valid form,
+return null.
+
+The legacy format is a four-character string -- two chars for the
+major number and one each for the minor and tiny numbers.  Major
+numbers are zero-padded if necessary.  Minor and tiny numbers from
+10 through 99 are permitted but are clamped to 9 (for example,
+{10,9,10} produces 1099).  Versions containing numbers greater
+than 99 are rejected.  */
+
 static const char *
-version_as_macro (void)
+version_as_legacy_macro (const unsigned long *version)
 {
-  static char result[7] = 1000;
-  int minorDigitIdx;
+  unsigned long major = version[MAJOR];
+  unsigned long minor = version[MINOR];
+  unsigned long tiny = version[TINY];
+  static char result[sizeof ];
 
-  if (strncmp (darwin_macosx_version_min, 10., 3) != 0)
+  if (major  99 || minor  99 || tiny  99)
+return NULL;
+
+  minor = ((minor  9) ? 9 : minor);
+  tiny = ((tiny  9) ? 9 : tiny);
+
+  /* NOTE: Cast result of sizeof so that result of sprintf is not
+ converted to an unsigned type.  */
+  if (sprintf (result, %02lu%lu%lu, major, minor, tiny)
+  != (int) sizeof  - 1)
+return NULL;
+
+  return result;
+}
+
+/*  Given a three-component version represented as an array of
+non-negative integers, return a statically-allocated string suitable
+for the modern __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro
+or the __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ macro.  If the
+version is invalid, return null.
+
+The modern format is a five- or six-character string -- one or two
+chars for the major number and two each for the minor and tiny
+

[Bug target/63810] gcc sets incorrect macro for OS X deployment targets

2014-11-14 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810

Lawrence Velázquez larryv at macports dot org changed:

   What|Removed |Added

  Attachment #33969|0   |1
is obsolete||

--- Comment #10 from Lawrence Velázquez larryv at macports dot org ---
Created attachment 33976
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33976action=edit
patch against 4.9 branch for handling deployment targets correctly

New 4.9 patch that should satisfy -Werror=sign-compare.

[Bug target/63810] gcc sets incorrect macro for OS X deployment targets

2014-11-14 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810

Lawrence Velázquez larryv at macports dot org changed:

   What|Removed |Added

  Attachment #33970|0   |1
is obsolete||

--- Comment #11 from Lawrence Velázquez larryv at macports dot org ---
Created attachment 33977
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33977action=edit
patch against 4.8 branch for handling deployment targets correctly

Updated patch that should satisfy -Werror=sign-compare.

[Bug rtl-optimization/60079] [LRA] ICE when compiling attached case.

2014-11-14 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60079

--- Comment #8 from Andrew Pinski pinskia at gcc dot gnu.org ---
(In reply to Andrew Pinski from comment #7)
 Note my testcase is with -mabi=ilp32 too.

And the reduced testcase needs -mcpu=thunderx too.  I am trying to see if this
fails on the trunk or only with my code changes.


[Bug c/63760] Support __func__ in PROGMEM

2014-11-14 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63760

Georg-Johann Lay gjl at gcc dot gnu.org changed:

   What|Removed |Added

 Target|AVR |avr
   Priority|P3  |P5

--- Comment #3 from Georg-Johann Lay gjl at gcc dot gnu.org ---
(In reply to Andreas Schwab from comment #1)
 Why aren't read-only data being placed in progmem by default?

Suppose

char func (const char *X)
{
return *X;
}


Just that func does not alter *X does /not/ mean *X won't change in the
program.  It is completely legal for a program to use func like so:

void foo (char c)
{
func (c);
c++;
func (c);
}

Hence the default linker description file locates .rodata in RAM and the
compiler may not assume data is located in flash just because a particular
function does not change it.

With a different ABI that reserved, e.g., Bit 15 of the address to tag whether
the object lives in .rodata or not, it would be possible to achieve this, but
it would also add quite some overhead to runtime and flash usage and pressure
on Z register like address space __memx does.


[Bug c/63879] New: ICE compiling Linux Kernel fs/ext3/namei.c

2014-11-14 Thread sasha.levin at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63879

Bug ID: 63879
   Summary: ICE compiling Linux Kernel fs/ext3/namei.c
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: sasha.levin at oracle dot com
CC: mpolacek at gcc dot gnu.org

Created attachment 33978
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33978action=edit
Preprocessed source

I'm seeing very high memory usage followed by:

{standard input}: Assembler messages:
{standard input}:2183: Warning: end of file not at end of a line; newline
inserted
{standard input}:4163: Error: number of operands mismatch for `movq'
{standard input}: Error: open CFI at the end of file; missing .cfi_endproc
directive
gcc: internal compiler error: Killed (program cc1)
0x40c3cc execute
../../gcc/gcc.c:2912
0x410917 driver::do_spec_on_infiles() const
../../gcc/gcc.c:7674
0x40322b driver::main(int, char**)
../../gcc/gcc.c:6911

I've bisected this issue down to:

commit 1043013c91c08e3d8cd665b3f960f658918d69fe
Author: mpolacek mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4
Date:   Fri Nov 14 11:57:05 2014 +

* fold-const.c (fold_negate_expr): Don't fold INTEGER_CST if
that overflows when SANITIZE_SI_OVERFLOW is on.  Guard -(-A)
folding with TYPE_OVERFLOW_SANITIZED.

* c-c++-common/ubsan/overflow-negate-3.c: New test.


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

Preprocessed fs/ext3/namei.c attached.


[Bug rtl-optimization/60079] [LRA] ICE when compiling attached case.

2014-11-14 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60079

--- Comment #9 from Andrew Pinski pinskia at gcc dot gnu.org ---
I can't get a testcase that fails with the non-modified trunk.


[Bug c/63760] Support __func__ in PROGMEM

2014-11-14 Thread mojo at world3 dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63760

--- Comment #4 from mojo at world3 dot net ---
I agree, a separate __funcP__is the best option.


[Bug ipa/63814] [4.9/5 Regression] g++.dg/ipa/pr61160-1.C fails with -m32 -fPIC

2014-11-14 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

--- Comment #18 from H.J. Lu hjl.tools at gmail dot com ---
Igor, Kirill, I confirmed r216154 is the cause of this
bug.  You can checkout both r216153 and r216154.  You build
2 compilers and compare results. You can build a cross
compiler with

.../gcc/configure --enable-languages=c,c++ --disable-bootstrap
--target=x86_64-apple-darwin

you will see ICE.  If you build the native Linux compiler, you
will see run-time failure.  The difference between good and
bad assembly code is

--- good.s2014-11-14 14:54:54.362696443 -0800
+++ bad.s2014-11-14 15:12:54.608434347 -0800
@@ -84,12 +84,12 @@ _ZN8CExample9MixinFuncEiPv:
 .weak_ZThn4_N8CExample9MixinFuncEiPv
 .type_ZThn4_N8CExample9MixinFuncEiPv, @function
 _ZThn4_N8CExample9MixinFuncEiPv:
-.LFB13:
+.LFB15:
 .cfi_startproc
 subl$4, 4(%esp)
 jmp.LTHUNK0
 .cfi_endproc
-.LFE13:
+.LFE15:
 .size_ZThn4_N8CExample9MixinFuncEiPv,
.-_ZThn4_N8CExample9MixinFuncEiPv
 .section   
.text.unlikely._ZThn4_N8CExample9MixinFuncEiPv,axG,@progbits,_ZN8CExample9MixinFuncEiPv,comdat
 .LCOLDE2:
@@ -105,20 +105,52 @@ _ZThn4_N8CExample9MixinFuncEiPv:
 _Z4testR6MMixin:
 .LFB11:
 .cfi_startproc
-subl$16, %esp
-.cfi_def_cfa_offset 20
-movl20(%esp), %eax
+pushl%ebx
+.cfi_def_cfa_offset 8
+.cfi_offset 3, -8
+call__x86.get_pc_thunk.bx
+addl$_GLOBAL_OFFSET_TABLE_, %ebx
+subl$8, %esp
+.cfi_def_cfa_offset 16
+movl16(%esp), %eax
 movl(%eax), %edx
+movl(%edx), %edx
+cmpl_ZThn4_N8CExample9MixinFuncEiPv@GOT(%ebx), %edx
+jne.L10
+cmpl$48879, 12(%eax)
+jne.L14
+addl$8, %esp
+.cfi_remember_state
+.cfi_def_cfa_offset 8
+popl%ebx
+.cfi_restore 3
+.cfi_def_cfa_offset 4
+ret
+.p2align 4,,10
+.p2align 3
+.L10:
+.cfi_restore_state
+subl$4, %esp
+.cfi_def_cfa_offset 20
 pushl$0
 .cfi_def_cfa_offset 24
 pushl$1
 .cfi_def_cfa_offset 28
 pushl%eax
 .cfi_def_cfa_offset 32
-call*(%edx)
-addl$28, %esp
+call*%edx
+addl$16, %esp
+.cfi_def_cfa_offset 16
+addl$8, %esp
+.cfi_remember_state
+.cfi_def_cfa_offset 8
+popl%ebx
+.cfi_restore 3
 .cfi_def_cfa_offset 4
 ret
+.L14:
+.cfi_restore_state
+callabort@PLT
 .cfi_endproc
 .LFE11:
 .size_Z4testR6MMixin, .-_Z4testR6MMixin
@@ -265,11 +297,11 @@ _ZTV8CExample:
 .hidden__x86.get_pc_thunk.bx
 .type__x86.get_pc_thunk.bx, @function
 __x86.get_pc_thunk.bx:
-.LFB14:
+.LFB16:
 .cfi_startproc
 movl(%esp), %ebx
 ret
 .cfi_endproc
-.LFE14:
+.LFE16:
 .identGCC: (GNU) 5.0.0 20141013 (experimental)
 .section.note.GNU-stack,,@progbits

Please find out why PIC register change caused this.


[Bug ipa/63814] [4.9/5 Regression] g++.dg/ipa/pr61160-1.C fails with -m32 -fPIC

2014-11-14 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

--- Comment #19 from H.J. Lu hjl.tools at gmail dot com ---
r216154 is supposed to be RTL change.  But it generates quite different
gimples.


[Bug ipa/63814] [5 Regression] g++.dg/ipa/pr61160-1.C fails with -m32 -fPIC

2014-11-14 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

Version|4.9.3   |5.0
   Target Milestone|4.9.3   |5.0
Summary|[4.9/5 Regression]  |[5 Regression]
   |g++.dg/ipa/pr61160-1.C  |g++.dg/ipa/pr61160-1.C
   |fails with -m32 -fPIC   |fails with -m32 -fPIC


[Bug ipa/63814] [5 Regression] g++.dg/ipa/pr61160-1.C fails with -m32 -fPIC

2014-11-14 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

--- Comment #20 from H.J. Lu hjl.tools at gmail dot com ---
It may be easier to debug this with a MacOS cross compiler.  Where do
extra gimple statements:

@@ -96,3 +96,31 @@ MMixin::MMixin() (struct MMixin * const
 }


+built-in (struct CExample * const this)
+{
+  struct CExample * const adjusted_this.8;
+  void * retval.7;
+
+  bb 2:
+  this_2 = this_1(D) + 4294967292;
+  adjusted_this.8_3 = this_2;
+  retval.7_6 = CExample::MixinFunc.constprop (adjusted_this.8_3); [tail call]
+  return retval.7_6;
+
+}
+
+
+built-in (struct CExample * const this)
+{
+  struct CExample * const adjusted_this.10;
+  void * retval.9;
+
+  bb 2:
+  this_2 = this_1(D) + 4294967292;
+  adjusted_this.10_3 = this_2;
+  retval.9_6 = CExample::MixinFunc.constprop (adjusted_this.10_3); [tail call]
+  return retval.9_6;
+
+}
+
+

come from?


[Bug ipa/63814] [5 Regression] g++.dg/ipa/pr61160-1.C fails with -m32 -fPIC

2014-11-14 Thread hubicka at ucw dot cz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

--- Comment #21 from Jan Hubicka hubicka at ucw dot cz ---
 +built-in (struct CExample * const this)
 +{
 +  struct CExample * const adjusted_this.8;
 +  void * retval.7;
 +
 +  bb 2:
 +  this_2 = this_1(D) + 4294967292;
 +  adjusted_this.8_3 = this_2;
 +  retval.7_6 = CExample::MixinFunc.constprop (adjusted_this.8_3); [tail call]
 +  return retval.7_6;
 +
 +}
 +
 +
 +built-in (struct CExample * const this)
 +{
 +  struct CExample * const adjusted_this.10;
 +  void * retval.9;
 +
 +  bb 2:
 +  this_2 = this_1(D) + 4294967292;
 +  adjusted_this.10_3 = this_2;
 +  retval.9_6 = CExample::MixinFunc.constprop (adjusted_this.10_3); [tail 
 call]
 +  return retval.9_6;
 +
 +}
 +
 +
 
 come from?
This is expanded thunk produce dby cgraph_node::expand_thunk
Did not look into the testcase if it should be there or not.

Honza


[Bug c/63880] New: GCC overoptimization on local arrays of size 1

2014-11-14 Thread petzke at teltarif dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63880

Bug ID: 63880
   Summary: GCC overoptimization on local arrays of size 1
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: petzke at teltarif dot de

Created attachment 33979
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33979action=edit
Overoptimized C code: The loop is unrolled to a single iteration, which the
compiler should not rely on, at least not in C.

In general, C code may rely on the fact, that structs are allocated
sequentially, even, if this is considered a somewhat bad coding practice. So,
if one has the following structures in C:

typedef struct {
int nargs;
char * data[1];
} arglist;

struct {
arglist args;
char * moredata[1000];
} par;

it is actually safe to access par.args.data[2] through par.args.data[1000], as
they get basically mapped onto par.moredata[0] through par.moredata[999].
However, GCC version 4.8.2 seems to believe, that this access is off limits,
and actually optimizes a simple loop:
for(i = args-nargs; --i = 0; ) {
if(args-data[i][0]) { cnt++; }
}
to run at most once, when optimizing option -O3 is used. An example of a thus
over-optimized code snippet (compile with -m64 -Wall -O3 -S on Intel x86_64 -
cannot compile into an executable though) is attached as overoptimized.c.

It suffices to introduce a pointer to arglist to turn off that
overoptimization and actually get working code again. An exmpale is added as
works.c.

I assume, that this array size optimization is not applied on pointers to
structs, as these may be malloc()ed with the well-known trick of requesting
extra space to increase the array size of the last element. However, that trick
is not reserved to malloc(), it is also available to local vars via the
combined struct shown for par above. Of course, this is only true for *C*.
C++ may rip structs apart, but C may not.

Having said that:
* The loop optimization based on array size should still be applied, if the
above example arglist is *directly* defined as a local var.
* But if that arglist is part of another struct, that defines extra data
items at the end, the compiler should not assume, that the array won't be
accessed out of bounds. I know, that this out-of-bounds access is a somewhat
bad coding style, but there is code, that still relies on these dirty old C
tricks.


[Bug c/63880] GCC overoptimization on local arrays of size 1

2014-11-14 Thread petzke at teltarif dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63880

--- Comment #1 from Kai Petzke petzke at teltarif dot de ---
Created attachment 33980
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33980action=edit
A file with small modifications from overoptimized.c, that compiles correctly.


[Bug ipa/63814] [5 Regression] g++.dg/ipa/pr61160-1.C fails with -m32 -fPIC

2014-11-14 Thread jamborm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63814

--- Comment #22 from Martin Jambor jamborm at gcc dot gnu.org ---
(In reply to Jan Hubicka from comment #21)
 This is expanded thunk produce dby cgraph_node::expand_thunk
 Did not look into the testcase if it should be there or not.
 

Indeed.  expand_thunk creates this when
targetm.asm_out.can_output_mi_thunk returns false.  Therefore a change
in the back-end can cause this difference.  The back-end changes might
be OK, we have had a bug like this in IPA before.

Do I understand correctly that this bug is an ICE with checking
compiler and miscompilation with release-checking one?


  1   2   >