[Bug middle-end/36902] Array bound warning with dead code after optimization
--- Comment #22 from mueller at gcc dot gnu dot org 2008-08-25 07:59 --- there is currently no good way to detect if a block is dead during the VRP pass, as the VRP information is used for *determining* wether or not a block is dead. Is there a general warning-queuing implementation that I could make use of or is there some other warning that does that already? Iirc the is used/ might be used uninitialized type of warnings do not use something like that. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36902
[Bug target/36745] [4.4 Regression] ICE in gen_reg_rtx, at emit-rtl.c:868
--- Comment #2 from mueller at gcc dot gnu dot org 2008-07-07 09:00 --- Created an attachment (id=15868) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15868action=view) slightly shorter (different testcase, same bug) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36745
[Bug preprocessor/36453] PR36320 breaks boost
--- Comment #4 from mueller at gcc dot gnu dot org 2008-07-07 09:25 --- well, lets keep it at that for now -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36453
[Bug preprocessor/36453] PR36320 breaks boost
--- Comment #2 from mueller at gcc dot gnu dot org 2008-06-10 22:14 --- so the code should be changed to #elif defined(BOOST_PP_ITERATION_DEPTH) BOOST_PP_ITERATION_DEPTH() == 1 ? it is confusing that #elif behaves more like #if and not like #else\n#if -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36453
[Bug preprocessor/36453] New: PR36320 breaks boost
testcase: === Cut === #if !defined(BOOST_PP_IS_ITERATING) #elif BOOST_PP_ITERATION_DEPTH() == 1 #endif === Cut === error: missing binary operator before token ( from reading the PR36320, this behaviour doesn't seem to be intended. It was intended to only add a check for non-null argument. -- Summary: PR36320 breaks boost Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: preprocessor AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mueller at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36453
[Bug c++/31775] static object mangling conflicts with extern object
--- Comment #7 from mueller at gcc dot gnu dot org 2008-02-29 13:57 --- how about extern C void abort(); extern C { static int i; } int *p = i; int main() { int i; { extern int i; i = 1; *p = 2; if (i == 2) abort (); } return 0; } in this case, the i name should not be mangled, right? -- mueller at gcc dot gnu dot org changed: What|Removed |Added CC||mueller at gcc dot gnu dot ||org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31775
[Bug target/35135] unable to find a register to spill in class �GENERAL_REGS� with global registers
--- Comment #4 from mueller at gcc dot gnu dot org 2008-02-12 17:18 --- new testcase: -O2 -fno-gcse -fomit-frame-pointer === Cut === __extension__ typedef unsigned long long int uint64_t; typedef unsigned int target_ulong; register struct CPUX86State *env asm (ebp); register target_ulong T0 asm (ebx); register target_ulong T1 asm (esi); register target_ulong T2 asm (edi); typedef union { uint64_t _q[2]; } XMMReg; typedef struct CPUX86State { XMMReg xmm_regs[8]; } CPUX86State; save_raw_fp_state (CPUX86State * env, char * ptr) { int i, fpus, fptag, nb_xmm_regs; char *addr; nb_xmm_regs = 8 0; addr = ptr + 0xa0; for (i = 0; i nb_xmm_regs; i++) { env-xmm_regs[i]._q[0] = *(uint64_t *) (addr); addr += 16; } } === Cut === -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35135
[Bug target/35135] unable to find a register to spill in class �GENERAL_REGS� with global registers
--- Comment #3 from mueller at gcc dot gnu dot org 2008-02-12 16:31 --- the original code uses -fomit-frame-pointer -fno-gcse -O2. I can verify that -O3 fixes the issue. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35135
[Bug target/35135] New: [4.3 regression] unable to find a register to spill in class �GENERAL_REGS�
gcc -v -O2 -c test.c === Cut === extension__ typedef unsigned long long int uint64_t; typedef unsigned target_ulong; register target_ulong T0 asm (ebx); register target_ulong T1 asm (esi); register target_ulong T2 asm (edi); typedef struct CPUX86State { uint64_t xmm_regs[8]; } CPUX86State; save_raw_fp_state (CPUX86State * env) { int i; char *addr; for (i = 0; i 8; i++) env-xmm_regs[i] = *(uint64_t *) (addr); } === Cut === GNU C (SUSE Linux) version 4.3.0 20080131 (experimental) [trunk revision 131976] (i586-suse-linux) compiled by GNU C version 4.3.0 20080131 (experimental) [trunk revision 131976], GMP version 4.2.2, MPFR version 2.3.1. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 86307befc2a0b2e7a5d9beb62be4b74e test.c: In function save_raw_fp_state: test.c:18: error: unable to find a register to spill in class GENERAL_REGS test.c:18: error: this is the insn: (insn:HI 14 13 15 3 test.c:17 (set (mem/s:DI (plus:SI (mult:SI (reg/v:SI 64 [ i ]) (const_int 8 [0x8])) (reg/v/f:SI 66 [ env ])) [2 variable.xmm_regs S8 A8]) (reg:DI 67)) 63 {*movdi_2} (expr_list:REG_DEAD (reg:DI 67) (nil))) test.c:18: confused by earlier errors, bailing out -- Summary: [4.3 regression] unable to find a register to spill in class GENERAL_REGS Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mueller at gcc dot gnu dot org GCC host triplet: i686-suse-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35135
[Bug middle-end/34386] -Wstrict-aliasing=3 ineffective (tree-ssa-alias-warnings.c)
--- Comment #5 from mueller at gcc dot gnu dot org 2007-12-08 12:55 --- this seems to be readding the warning with relatively low false positive rate (e.g. didn't find a false one yet). --- cp/typeck.c (revision 130658) +++ cp/typeck.c (working copy) @@ -5269,11 +5268,16 @@ build_reinterpret_cast_1 (tree type, tre expr = build_unary_op (ADDR_EXPR, expr, 0); if (expr != error_mark_node) - expr = build_reinterpret_cast_1 - (build_pointer_type (TREE_TYPE (type)), expr, c_cast_p, - valid_p); - if (expr != error_mark_node) - expr = build_indirect_ref (expr, 0); +{ + if (strict_aliasing_warning (intype, type, expr)) + TREE_NO_WARNING (expr) = 1; + + expr = build_reinterpret_cast_1 + (build_pointer_type (TREE_TYPE (type)), expr, c_cast_p, +valid_p); + if (expr != error_mark_node) + expr = build_indirect_ref (expr, 0); +} return expr; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34386
[Bug middle-end/34386] -Wstrict-aliasing=3 ineffective (tree-ssa-alias-warnings.c)
--- Comment #4 from mueller at gcc dot gnu dot org 2007-12-08 02:23 --- testing patch for pointer_set conversion -- mueller at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |mueller at gcc dot gnu dot |dot org |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34386
[Bug middle-end/34386] -Wstrict-aliasing=3 ineffective (tree-ssa-alias-warnings.c)
--- Comment #3 from mueller at gcc dot gnu dot org 2007-12-08 02:07 --- this patch seems to be an alternative way of making -Wstrict-aliasing=3 work again for the testcase: --- c-common.c (revision 130658) +++ c-common.c (working copy) @@ -1035,7 +1035,8 @@ strict_aliasing_warning (tree otype, tre POINTER_TYPE_P (otype) !VOID_TYPE_P (TREE_TYPE (type return false; - if ((warn_strict_aliasing 1) TREE_CODE (expr) == ADDR_EXPR + if ((warn_strict_aliasing 1) + (TREE_CODE (expr) == CONVERT_EXPR || TREE_CODE (expr) == ADDR_EXPR) (DECL_P (TREE_OPERAND (expr, 0)) || handled_component_p (TREE_OPERAND (expr, 0 { -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34386
[Bug tree-optimization/34385] new miscompilation after PR34148 fix
--- Comment #1 from mueller at gcc dot gnu dot org 2007-12-07 22:46 --- Created an attachment (id=14710) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14710action=view) testcase compile with g++ -ansi -O2 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34385
[Bug middle-end/34386] -Wstrict-aliasing=3 ineffective (tree-ssa-alias-warnings.c)
-- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |ASSIGNED Last reconfirmed|2007-12-08 02:23:39 |2007-12-08 02:23:50 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34386
[Bug tree-optimization/34385] New: new miscompilation after PR34148 fix
the patch in PR34148 uncovered a new bug, avoidable with -fno-strict-aliasing -- Summary: new miscompilation after PR34148 fix Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mueller at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34385
[Bug middle-end/34386] -Wstrict-aliasing=3 ineffective (tree-ssa-alias-warnings.c)
-- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2007-12-08 02:23:39 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34386
[Bug tree-optimization/34385] new miscompilation after PR34148 fix
--- Comment #2 from mueller at gcc dot gnu dot org 2007-12-07 22:47 --- diff between broken -fdump-tree-optimized and working one is really small: --- out.cc.optimized.broken 2007-12-07 23:35:37.460943000 +0100 +++ out.cc.optimized.works 2007-12-07 23:35:53.641747000 +0100 @@ -40,6 +40,7 @@ D.1626 = (struct QHashNode *) D.1625; D.1626-key.d = 0B; D.1626-key = *str; + D.1628.i = (struct Node *) D.1626; return ((struct QHashNode *) ((const struct const_iterator *) D.1628)-i)-key; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34385
[Bug middle-end/34285] [4.3 Regression] buffer overflow incorrectly detected
--- Comment #3 from mueller at gcc dot gnu dot org 2007-11-29 10:47 --- fortify_source=2 is supposed to reject it (only sizeof the struct member, not the whole struct is allowed). use fortify_source=1 or fix your broken code. -- mueller at gcc dot gnu dot org changed: What|Removed |Added CC||mueller at gcc dot gnu dot ||org Status|UNCONFIRMED |RESOLVED Resolution||INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34285
[Bug middle-end/34285] [4.3 Regression] buffer overflow incorrectly detected
--- Comment #7 from mueller at gcc dot gnu dot org 2007-11-29 11:47 --- Andrew, read the comments or stop reopening. the behaviour is documented that way even. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34285
[Bug middle-end/34241] New: ICE in forward_propagate_into_cond
inline void *operator new (unsigned int, void *__p) throw () { return __p; } struct A { A(int, double); inline explicit A (int pattern, bool cs) { new (this) A (pattern, double(cs)); } }; A test () { const A a (42, true); } (gdb) bt #0 get_prop_source_stmt (name=0xb7c5d478, single_use_only=0 '\0', single_use_p=0xbfdc018b ) at ../../gcc/tree-ssa-forwprop.c:221 #1 0x08328d58 in forward_propagate_into_cond (cond_expr=0xb7bca7d0, stmt=0xb7bca7d0) at ../../gcc/tree-ssa-forwprop.c:378 #2 0x0832b5be in tree_ssa_forward_propagate_single_use_vars () at ../../gcc/tree-ssa-forwprop.c:1021 #3 0x0824a963 in execute_one_pass (pass=0x8727e80) at ../../gcc/passes.c:1118 #4 0x0824aaff in execute_pass_list (pass=0x8727e80) at ../../gcc/passes.c:1171 #5 0x0824ab12 in execute_pass_list (pass=0x8727840) at ../../gcc/passes.c:1172 #6 0x0824aeec in execute_ipa_pass_list (pass=0x8727800) at ../../gcc/passes.c:856 #7 0x083e6d25 in cgraph_optimize () at ../../gcc/cgraphunit.c:1339 #8 0x0809198d in cp_write_global_declarations () at ../../gcc/cp/decl2.c:3442 #9 0x082bf163 in toplev_main (argc=4, argv=0xbfdc0424) at ../../gcc/toplev.c:1055 #10 0x08121b7f in main (argc=Cannot access memory at address 0x7 ) at ../../gcc/main.c:35 the stmt where the def is NULL is: ssa_name 0xb7c5d478 nothrow var var_decl 0xb7bc9bb0 iftmp.0 version 3 in-free-list -- Summary: ICE in forward_propagate_into_cond Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: critical Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mueller at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34241
[Bug middle-end/34197] array overflow warning without line number
--- Comment #6 from mueller at gcc dot gnu dot org 2007-11-23 23:02 --- Subject: Bug 34197 Author: mueller Date: Fri Nov 23 23:02:21 2007 New Revision: 130385 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=130385 Log: 2007-11-23 Dirk Mueller [EMAIL PROTECTED] Richard Guenther [EMAIL PROTECTED] PR middle-end/34197 * tree-vrp.c (check_array_ref): Move check for valid location.. (check_array_bounds) here. Use EXPR_HAS_LOCATION(). Modified: trunk/gcc/ChangeLog trunk/gcc/tree-vrp.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34197
[Bug middle-end/34197] array overflow warning without line number
--- Comment #7 from mueller at gcc dot gnu dot org 2007-11-23 23:11 --- Fixed for 4.3 -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED Target Milestone|--- |4.3.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34197
[Bug middle-end/34197] array overflow warning without line number
--- Comment #4 from mueller at gcc dot gnu dot org 2007-11-22 22:34 --- thanks for the analysis. I would go for a slightly more verbose version of the same patch: --- gcc/tree-vrp.c (revision 130297) +++ gcc/tree-vrp.c (working copy) @@ -4339,7 +4339,7 @@ check_array_ref (tree ref, location_t* l low_sub = up_sub = TREE_OPERAND (ref, 1); - if (!up_bound || !locus || TREE_NO_WARNING (ref) + if (!up_bound || TREE_NO_WARNING (ref) || TREE_CODE (up_bound) != INTEGER_CST /* Can not check flexible arrays. */ || (TYPE_SIZE (TREE_TYPE (ref)) == NULL_TREE @@ -4441,6 +4441,11 @@ check_array_bounds (tree *tp, int *walk_ tree stmt = (tree)data; location_t *location = EXPR_LOCUS (stmt); + if (!EXPR_HAS_LOCATION (stmt)) { + *walk_subtree = FALSE; + return NULL_TREE; + } + *walk_subtree = TRUE; if (TREE_CODE (t) == ARRAY_REF) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34197
[Bug middle-end/32546] [4.3 Regression] 'warning: array subscript is above/below array bounds' on delete[]
--- Comment #6 from mueller at gcc dot gnu dot org 2007-11-22 22:40 --- *** This bug has been marked as a duplicate of 34197 *** -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||DUPLICATE http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32546
[Bug middle-end/34197] array overflow warning without line number
--- Comment #5 from mueller at gcc dot gnu dot org 2007-11-22 22:40 --- *** Bug 32546 has been marked as a duplicate of this bug. *** -- mueller at gcc dot gnu dot org changed: What|Removed |Added CC||gcc at abeckmann dot de http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34197
[Bug bootstrap/34110] gcc fails to build on i686
--- Comment #2 from mueller at gcc dot gnu dot org 2007-11-16 11:37 --- workaround: --- reg-stack.c (revision 130198) +++ reg-stack.c (working copy) @@ -925,7 +925,7 @@ swap_to_top (rtx insn, stack regstack, r /* Place operand 1 at the top of stack. */ regno = get_hard_regnum (temp_stack, src1); gcc_assert (regno = 0); - if (regno != FIRST_STACK_REG) + if (regno = 0 regno != FIRST_STACK_REG) { k = temp_stack.top - (regno - FIRST_STACK_REG); j = temp_stack.top; @@ -938,7 +938,7 @@ swap_to_top (rtx insn, stack regstack, r /* Place operand 2 next on the stack. */ regno = get_hard_regnum (temp_stack, src2); gcc_assert (regno = 0); - if (regno != FIRST_STACK_REG + 1) + if (regno = 0 regno != FIRST_STACK_REG + 1) { k = temp_stack.top - (regno - FIRST_STACK_REG); j = temp_stack.top - 1; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34110
[Bug c++/34111] New: new oveload resolution error
this used to work a few days ago still: -- Summary: new oveload resolution error Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mueller at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34111
[Bug c++/34111] new oveload resolution error
--- Comment #1 from mueller at gcc dot gnu dot org 2007-11-15 16:55 --- Created an attachment (id=14559) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14559action=view) the preprocessed source .ii file -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34111
[Bug bootstrap/34110] gcc fails to build on i686
--- Comment #1 from mueller at gcc dot gnu dot org 2007-11-15 18:21 --- temp_stack.reg[i_90] is the access, compare_for_stack_reg is the function, and i_90 has the VRP determined range [-1, 2147483646]. it shouldn't warn for that. I'll work on a patch. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2007-11-15 18:21:40 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34110
[Bug c++/34111] new overload resolution error
--- Comment #2 from mueller at gcc dot gnu dot org 2007-11-15 23:17 --- reduced testcase: class QChar { }; struct QString { QString(QChar); }; struct QPainter { void drawText (int x, int y, const QString ); }; class KHEChar:public QChar { public:KHEChar (QChar C); }; void drawByte (QPainter * P, char, KHEChar B) { P-drawText (0, 0, B); } -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2007-11-15 23:17:52 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34111
[Bug c++/33399] New: [4.2 regression] -fvisibility=hidden not working after including STL headers
Hi, g++ 4.2.1 doesn't seem to apply hidden visibility to classes after including e.g. ostream. the following testcase was reduced: === Cut === namespace std __attribute__ ((__visibility__ (default))) { template typename A class C; template typename A int foo (C A *); template typename A class C { public: friend int foo(C A *); }; extern template class C char ; } struct TestClass { void hidden(); }; void TestClass::hidden() {} === cut === g++ -O1 -fvisibility=hidden -fvisibility-inlines-hidden -fPIC testcase.cc -c -o nostl.o g++ -shared -o libnostl.so nostl.o nm -CD libnostl.so | grep TestClass gives 048c T TestClass::hidden() the symbol is properly hidden if I put the namespace std into default visibility or otherwise try to reduce the code further. -- Summary: [4.2 regression] -fvisibility=hidden not working after including STL headers Product: gcc Version: 4.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mueller at gcc dot gnu dot org GCC host triplet: i686-suse-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33399
[Bug c++/32470] fvisibility=hidden without effect in some cases
--- Comment #4 from mueller at gcc dot gnu dot org 2007-09-11 22:37 --- I can confirm it as well -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2007-09-11 22:37:55 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32470
[Bug c++/33399] [4.2 regression] -fvisibility=hidden not working after including STL headers
--- Comment #2 from mueller at gcc dot gnu dot org 2007-09-11 22:39 --- *** This bug has been marked as a duplicate of 32470 *** -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||DUPLICATE http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33399
[Bug c++/32470] [4.2 regression] fvisibility=hidden without effect in some cases
--- Comment #5 from mueller at gcc dot gnu dot org 2007-09-11 22:39 --- *** Bug 33399 has been marked as a duplicate of this bug. *** -- mueller at gcc dot gnu dot org changed: What|Removed |Added CC||mueller at gcc dot gnu dot ||org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32470
[Bug c++/32756] [4.3 Regression] wrong ambiguous overload error?
--- Comment #4 from mueller at gcc dot gnu dot org 2007-08-20 11:13 --- ping.. any results? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32756
[Bug c++/32756] [4.3 Regression] wrong ambiguous overload error?
--- Comment #6 from mueller at gcc dot gnu dot org 2007-08-20 12:43 --- I`d be happy to help with testing :) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32756
[Bug c++/32756] [4.3 Regression] wrong ambiguous overload error?
--- Comment #1 from mueller at gcc dot gnu dot org 2007-07-14 07:33 --- this was introduced by the following patch: 2007-05-30 Russell Yanofsky [EMAIL PROTECTED] Douglas Gregor [EMAIL PROTECTED] Pedro Lamarao [EMAIL PROTECTED] Howard Hinnant [EMAIL PROTECTED] PR c++/7412 PR c++/29939 -- mueller at gcc dot gnu dot org changed: What|Removed |Added CC||doug dot gregor at gmail dot ||com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32756
[Bug c++/32756] [4.3 Regression] wrong ambiguous overload error?
--- Comment #2 from mueller at gcc dot gnu dot org 2007-07-14 10:00 --- Created an attachment (id=13914) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13914action=view) patch the following patch moves the change of ranking described in the working draft under a dialect check, which hot-fixes this bug -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32756
[Bug middle-end/32546] 'warning: array subscript is above/below array bounds' on delete[]
--- Comment #2 from mueller at gcc dot gnu dot org 2007-07-13 11:10 --- unfortunately setting TREE_NO_WARNING on the synthesized delete[] parameters does not help because it is lost during middle end folding -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32546
[Bug middle-end/32546] 'warning: array subscript is above/below array bounds' on delete[]
--- Comment #1 from mueller at gcc dot gnu dot org 2007-07-13 11:05 --- this is yet another case of the middle end folding memory arithmetics back into an array ref that is out of bounds: operator delete [] ((void *) A + 0xfffc); (from orig dump) later it is: D.2607_30 = (*D.2517_7)[-4]; operator delete [] (D.2607_30); which will then trigger this warning (because -4 is clearly out of bounds). -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2007-07-13 11:05:25 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32546
[Bug c++/32756] New: wrong ambiguous overload error?
Hi, this might be invalid, needs verification. starting with gcc 4.3, the following testcase is rejected: === Cut === class QString; struct QByteArray { QByteArray (); bool operator!= (const QString s2) const; }; bool operator!= (const QByteArray a1, const QByteArray a2); struct QString { QString (); QString (const QByteArray a); }; QByteArray abbreviation (); void fromString () { QByteArray zoneAbbrev; if (abbreviation () != zoneAbbrev) { } } === Cut === ambiguity.cc:23: error: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second: ambiguity.cc:9: note: candidate 1: bool operator!=(const QByteArray, const QByteArray) ambiguity.cc:6: note: candidate 2: bool QByteArray::operator!=(const QString) const -- Summary: wrong ambiguous overload error? Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mueller at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32756
[Bug c++/31806] [4.1 Regression] miscompilation with -fschedule-insns2 -fno-threadsafe-statics
--- Comment #11 from mueller at gcc dot gnu dot org 2007-06-20 16:27 --- Subject: Bug 31806 Author: mueller Date: Wed Jun 20 16:27:23 2007 New Revision: 125887 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=125887 Log: 2007-06-20 Dirk Mueller [EMAIL PROTECTED] PR c++/31809 PR c++/31806 Backport from mainline: 2007-05-31 Jakub Jelinek [EMAIL PROTECTED] * decl.c (cp_finish_decl): Also clear was_readonly if a static var needs runtime initialization. 2007-05-30 Jakub Jelinek [EMAIL PROTECTED] * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC variables that need runtime initialization. * g++.dg/opt/static5.C: New testcase * g++.dg/opt/static6.C: Likewise Added: branches/gcc-4_1-branch/gcc/testsuite/g++.dg/opt/static5.C branches/gcc-4_1-branch/gcc/testsuite/g++.dg/opt/static6.C Modified: branches/gcc-4_1-branch/gcc/cp/ChangeLog branches/gcc-4_1-branch/gcc/cp/decl.c branches/gcc-4_1-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31806
[Bug c++/31809] [4.1 Regression] sometimes TREE_READONLY is still set for non read only variables causing wrong code
--- Comment #11 from mueller at gcc dot gnu dot org 2007-06-20 16:27 --- Subject: Bug 31809 Author: mueller Date: Wed Jun 20 16:27:23 2007 New Revision: 125887 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=125887 Log: 2007-06-20 Dirk Mueller [EMAIL PROTECTED] PR c++/31809 PR c++/31806 Backport from mainline: 2007-05-31 Jakub Jelinek [EMAIL PROTECTED] * decl.c (cp_finish_decl): Also clear was_readonly if a static var needs runtime initialization. 2007-05-30 Jakub Jelinek [EMAIL PROTECTED] * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC variables that need runtime initialization. * g++.dg/opt/static5.C: New testcase * g++.dg/opt/static6.C: Likewise Added: branches/gcc-4_1-branch/gcc/testsuite/g++.dg/opt/static5.C branches/gcc-4_1-branch/gcc/testsuite/g++.dg/opt/static6.C Modified: branches/gcc-4_1-branch/gcc/cp/ChangeLog branches/gcc-4_1-branch/gcc/cp/decl.c branches/gcc-4_1-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31809
[Bug c++/31809] [4.1 Regression] sometimes TREE_READONLY is still set for non read only variables causing wrong code
--- Comment #12 from mueller at gcc dot gnu dot org 2007-06-20 16:28 --- Fixed. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31809
[Bug c++/31806] [4.1 Regression] miscompilation with -fschedule-insns2 -fno-threadsafe-statics
--- Comment #12 from mueller at gcc dot gnu dot org 2007-06-20 16:28 --- Fixed -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31806
[Bug c++/31806] [4.1 Regression] miscompilation with -fschedule-insns2 -fno-threadsafe-statics
--- Comment #10 from mueller at gcc dot gnu dot org 2007-06-14 23:12 --- Subject: Bug 31806 Author: mueller Date: Thu Jun 14 23:12:25 2007 New Revision: 125726 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=125726 Log: 2007-06-14 Dirk Mueller [EMAIL PROTECTED] PR c++/31806 * g++.dg/opt/static6.C: New testcase. Added: trunk/gcc/testsuite/g++.dg/opt/static6.C Modified: trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31806
[Bug c++/31806] [4.1/4.2 Regression] miscompilation with -fschedule-insns2 -fno-threadsafe-statics
--- Comment #9 from mueller at gcc dot gnu dot org 2007-06-08 21:48 --- Subject: Bug 31806 Author: mueller Date: Fri Jun 8 21:48:34 2007 New Revision: 125580 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=125580 Log: 2007-06-08 Dirk Mueller [EMAIL PROTECTED] PR c++/31809 PR c++/31806 Backport from mainline: 2007-05-31 Jakub Jelinek [EMAIL PROTECTED] * decl.c (cp_finish_decl): Also clear was_readonly if a static var needs runtime initialization. 2007-05-30 Jakub Jelinek [EMAIL PROTECTED] * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC variables that need runtime initialization. PR c++/31809 Backport from mainline: 2007-05-30 Jakub Jelinek [EMAIL PROTECTED] * g++.dg/opt/static5.C: New test. Added: branches/gcc-4_2-branch/gcc/testsuite/g++.dg/opt/static5.C - copied unchanged from r125201, trunk/gcc/testsuite/g++.dg/opt/static5.C Modified: branches/gcc-4_2-branch/gcc/cp/ChangeLog branches/gcc-4_2-branch/gcc/cp/decl.c branches/gcc-4_2-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31806
[Bug c++/31809] [4.1/4.2 Regression] sometimes TREE_READONLY is still set for non read only variables causing wrong code
--- Comment #10 from mueller at gcc dot gnu dot org 2007-06-08 21:48 --- Subject: Bug 31809 Author: mueller Date: Fri Jun 8 21:48:34 2007 New Revision: 125580 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=125580 Log: 2007-06-08 Dirk Mueller [EMAIL PROTECTED] PR c++/31809 PR c++/31806 Backport from mainline: 2007-05-31 Jakub Jelinek [EMAIL PROTECTED] * decl.c (cp_finish_decl): Also clear was_readonly if a static var needs runtime initialization. 2007-05-30 Jakub Jelinek [EMAIL PROTECTED] * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC variables that need runtime initialization. PR c++/31809 Backport from mainline: 2007-05-30 Jakub Jelinek [EMAIL PROTECTED] * g++.dg/opt/static5.C: New test. Added: branches/gcc-4_2-branch/gcc/testsuite/g++.dg/opt/static5.C - copied unchanged from r125201, trunk/gcc/testsuite/g++.dg/opt/static5.C Modified: branches/gcc-4_2-branch/gcc/cp/ChangeLog branches/gcc-4_2-branch/gcc/cp/decl.c branches/gcc-4_2-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31809
[Bug c++/31806] [4.0/4.1/4.2 Regression] miscompilation with -fschedule-insns2 -fno-threadsafe-statics
--- Comment #8 from mueller at gcc dot gnu dot org 2007-06-06 15:02 --- testcase works with gcc 3.4 and gcc 3.3 -- mueller at gcc dot gnu dot org changed: What|Removed |Added Known to fail|4.1.3 |4.1.3 4.0.4 Known to work|4.3.0 4.2.0 | Summary|miscompilation with - |[4.0/4.1/4.2 Regression] |fschedule-insns2 -fno- |miscompilation with - |threadsafe-statics |fschedule-insns2 -fno- ||threadsafe-statics http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31806
[Bug c++/31809] [4.1/4.2/4.3 Regression] sometimes TREE_READONLY is still set for non read only variables causing wrong code
--- Comment #7 from mueller at gcc dot gnu dot org 2007-05-31 09:06 --- PR 31806 is not fixed by this, and it contains a reference type. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31809
[Bug c++/31809] [4.1/4.2/4.3 Regression] sometimes TREE_READONLY is still set for non read only variables causing wrong code
--- Comment #5 from mueller at gcc dot gnu dot org 2007-05-30 22:46 --- is it okay that was_readonly will eventually turn on TREE_READONLY() afterwards? -- mueller at gcc dot gnu dot org changed: What|Removed |Added CC||mueller at gcc dot gnu dot ||org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31809
[Bug c/32135] New: bogus array-ref fold triggering array overflow warning
Hi, -O2 Warray-bounds: === Cut === struct PhaseEntryType { char raw_field[50 + 1]; }; int ParsePhase (char in_cols[15][250], struct PhaseEntryType *P) { __builtin_strncpy (P-raw_field, in_cols[2], 50); } ~ === Cut === triggered by __builtin_strncpy ((char *) P-raw_field, (const char *) (char *) in_cols + 500B, 50); being gimplified to: D.1970 = (*in_cols)[500]; D.1971 = P-raw_field[0]; __builtin_strncpy (D.1971, D.1970, 50) -- Summary: bogus array-ref fold triggering array overflow warning Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mueller at gcc dot gnu dot org GCC host triplet: i686-suse-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32135
[Bug rtl-optimization/31806] New: miscompilation with -fschedule-insns2 -fthreadsafe-statics and static variables
Hi, the testcase below aborts with gcc 4.1.3 compiled with: g++ -O2 -fno-threadsafe-statics === Cut === extern C void abort(void); struct A { void *d; }; static const A staticA() { static A s_static; return s_static; } void assert_failed() { abort(); } A testMethod() { static const A s = staticA( ); if (s == 0) assert_failed(); return s; } int main() { testMethod(); return 0; } // g++ -O2 -fno-inline -fno-threadsafe-statics -o kglobaltest kglobaltest.cpp === Cut === The testcase was extracted from a KDE miscompilation. -fno-schedule-insns2 seems to work around it. the bug is visible in assembler: · call· _Z7staticAv·# · movl· _ZZ10testMethodvE1s, %ebx· # s, s.1 · movb· $1, _ZGVZ10testMethodvE1s· #, · testl· %ebx, %ebx· # s.1 · movl· %eax, _ZZ10testMethodvE1s· # tmp61, s the movl %eax,_ZZ10testMethodvE1s is moved below the movl· _ZZ10testMethodvE1s, %ebx, which causes the bug. -- Summary: miscompilation with -fschedule-insns2 -fthreadsafe- statics and static variables Product: gcc Version: 4.1.3 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mueller at gcc dot gnu dot org GCC host triplet: i686-suse-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31806
[Bug tree-optimization/31227] [4.3 Regression] -Warray-bounds doesn't play together with loop optimizations
--- Comment #6 from mueller at gcc dot gnu dot org 2007-04-18 21:09 --- Subject: Bug 31227 Author: mueller Date: Wed Apr 18 21:09:21 2007 New Revision: 123958 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=123958 Log: 2007-04-18 Dirk Mueller [EMAIL PROTECTED] PR diagnostic/31227 * tree-vrp.c (search_for_addr_array): New. (check_array_bounds): Suppress warning about address taken of array refs if its not de-referenced. * gcc.dg/Warray-bounds-3.c: New. Added: trunk/gcc/testsuite/gcc.dg/Warray-bounds-3.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-vrp.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31227
[Bug tree-optimization/31227] [4.3 Regression] -Warray-bounds doesn't play together with loop optimizations
--- Comment #7 from mueller at gcc dot gnu dot org 2007-04-18 21:10 --- Fixed in 4.3. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31227
[Bug tree-optimization/31227] [4.3 Regression] -Warray-bounds doesn't play together with loop optimizations
--- Comment #3 from mueller at gcc dot gnu dot org 2007-03-21 09:05 --- both are caused by our well known offender -fivopts. the problem why the existing workarounds don't work is because the adress is first converted to unsigned int before +/- modification is done. the traversal stops at the type conversion. I'm currently working on fixing that. -- mueller at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |mueller at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31227
[Bug tree-optimization/31227] [4.3 Regression] -Warray-bounds doesn't play together with loop optimizations
--- Comment #4 from mueller at gcc dot gnu dot org 2007-03-21 14:16 --- Created an attachment (id=13242) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13242action=view) patch this is the patch I'm currently testing. would be nice if you could confirm that this is also fixing your obj-c++ bootstrap problem (which I cannot reproduce). Thanks. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31227
[Bug tree-optimization/31227] [4.3 Regression] -Warray-bounds doesn't play together with loop optimizations
-- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|WAITING http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31227
[Bug middle-end/30864] [4.3 Regression] ice for legal code with -O2
--- Comment #7 from mueller at gcc dot gnu dot org 2007-03-20 12:48 --- testcase works after PR31146 fix *** This bug has been marked as a duplicate of 31146 *** -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||DUPLICATE http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30864
[Bug tree-optimization/31146] forwprop does not look through casts
--- Comment #8 from mueller at gcc dot gnu dot org 2007-03-20 12:48 --- *** Bug 30864 has been marked as a duplicate of this bug. *** -- mueller at gcc dot gnu dot org changed: What|Removed |Added CC||dcb314 at hotmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31146
[Bug middle-end/30864] [4.3 Regression] ice for legal code with -O2
--- Comment #6 from mueller at gcc dot gnu dot org 2007-03-19 13:21 --- it seems to be caused by -r121780 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30864
[Bug c++/30860] Should warn about boolean constant false used in pointer context
--- Comment #10 from mueller at gcc dot gnu dot org 2007-03-14 23:17 --- Subject: Bug 30860 Author: mueller Date: Wed Mar 14 23:17:03 2007 New Revision: 122934 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=122934 Log: 2007-03-15 Dirk Mueller [EMAIL PROTECTED] PR c++/30860 * call.c (convert_conversion_warnings): New.. (convert_like_real): .. factored out from here. (convert_conversion_warnings): Add warning about false being converted to NULL in argument passing. * g++.dg/warn/Wconversion2.C: New. Added: trunk/gcc/testsuite/g++.dg/warn/Wconversion2.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/call.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30860
[Bug c++/30860] Should warn about boolean constant false used in pointer context
--- Comment #11 from mueller at gcc dot gnu dot org 2007-03-14 23:20 --- Fixed for 4.3. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.3.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30860
[Bug c/17946] wanted: warning for a MASK when a MASK was probably intended
--- Comment #17 from mueller at gcc dot gnu dot org 2007-03-10 17:26 --- Subject: Bug 17946 Author: mueller Date: Sat Mar 10 17:26:33 2007 New Revision: 122798 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=122798 Log: 2007-03-10 Dirk Mueller [EMAIL PROTECTED] PR c++/17946 * gcc.dg/Wlogical-op-1.c: Remove duplicated part. * g++.dg/warn/Wlogical-op-1.C: Remove duplicated part. Modified: trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17946
[Bug c/17946] wanted: warning for a MASK when a MASK was probably intended
--- Comment #13 from mueller at gcc dot gnu dot org 2007-03-09 16:16 --- Subject: Bug 17946 Author: mueller Date: Fri Mar 9 16:16:35 2007 New Revision: 122751 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=122751 Log: 2007-03-09 Dirk Mueller [EMAIL PROTECTED] PR c++/17946 * doc/invoke.texi (-Wlogical-op): Document. * common.opt (-Wlogical-op): New. * c-common.h (warn_logical_operator): Declare. * c-common.c (warn_logical_operator): Define. * c-typeck.c (parser_build_binary_op): Call warn_logical_operator. * cp/call.c (build_new_op): Call warn_logical_operator. * testsuite/gcc.dg/Wlogical-op-1.c: New. * testsuite/g++.dg/warn/Wlogical-op-1.C: New. Added: trunk/gcc/testsuite/g++.dg/warn/Wlogical-op-1.C trunk/gcc/testsuite/gcc.dg/Wlogical-op-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/c-common.c trunk/gcc/c-common.h trunk/gcc/c-typeck.c trunk/gcc/common.opt trunk/gcc/cp/ChangeLog trunk/gcc/cp/call.c trunk/gcc/doc/invoke.texi trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17946
[Bug c/17946] wanted: warning for a MASK when a MASK was probably intended
--- Comment #14 from mueller at gcc dot gnu dot org 2007-03-09 16:17 --- Fixed for 4.3. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|--- |4.3.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17946
[Bug middle-end/31058] overflow warnings should not be enabled with -Wall
--- Comment #23 from mueller at gcc dot gnu dot org 2007-03-08 21:32 --- Great, this patch makes a -fprefetch-loop-arrays bootstrap succeed. I think LSHIFT_EXPR should be handled similar. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31058
[Bug middle-end/31058] bogus array overflow warnings in unrolled loops
--- Comment #7 from mueller at gcc dot gnu dot org 2007-03-07 10:59 --- I don't think this is the same testcase. you will get any warning in this case, because the compiler cannot determine that it is supposed to be dead code. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Summary|bogus array overflow|bogus array overflow |warnings in unreachable code|warnings in unrolled loops http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31058
[Bug middle-end/31058] bogus array overflow warnings in unrolled loops
--- Comment #9 from mueller at gcc dot gnu dot org 2007-03-07 11:34 --- well, the unrolled body is generated code, it could set TREE_NO_WARNING (for example). or it could avoid unrolling if its not a flex array. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31058
[Bug middle-end/31058] overflow warnings should not be enabled with -Wall
-- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2007-03-07 21:55:36 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31058
[Bug middle-end/31058] overflow warnings should not be enabled with -Wall
--- Comment #18 from mueller at gcc dot gnu dot org 2007-03-07 22:03 --- IIRC there are some cases that are only caught in the 2nd vrp run. It is still a possibility if this bug cannot be fixed otherwise. However, I don't see the issue with this testcase. a) its not a flex array b) the unrolled loop produces out of bounds accesses c) hence, the unrolled version cannot ever be used d) it shouldn't be produced in the first place. we can turn this bug about a false positive warning into a code bloat regression by removing the warning (or disabling it from -Wall). That doesn't fix it though. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31058
[Bug middle-end/31058] New: array overflow warning due to incorrect loop unrolling
building this testcase with -O2 -march=athlon -Wall -fprefetch-loop-arrays gives: warning: array subscript is above array bounds [...] which, according to VRP, seems to be valid. testcase is: === Cut === struct real_value { unsigned int cl:2; unsigned int decimal:1; unsigned long sig[5]; }; unsigned int uexp; static void clear_significand_below (struct real_value *r, unsigned int n) { int i, w = n / 32; for (i = 0; i w; ++i) r-sig[i] = 0; } void do_fix_trunc (struct real_value *r) { if (uexp 160) clear_significand_below (r, 160 - uexp); } === Cut === -- Summary: array overflow warning due to incorrect loop unrolling Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mueller at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31058
[Bug middle-end/31058] array overflow warning due to incorrect loop unrolling
--- Comment #1 from mueller at gcc dot gnu dot org 2007-03-06 15:22 --- after prefetch-loop-arrays run, vrp2 looks like this: L81:; D.1885_87 = r_4(D)-sig[i_13]; D.1886_88 = D.1885_87 + 160B; __builtin_prefetch (D.1886_88, 1); r_4(D)-sig[i_13] = 0; i_8 = i_13 + 1; i_26 = i_8; r_4(D)-sig[i_26] = 0; i_28 = i_26 + 1; i_30 = i_28; r_4(D)-sig[i_30] = 0; i_32 = i_30 + 1; i_34 = i_32; r_4(D)-sig[i_34] = 0; i_36 = i_34 + 1; i_38 = i_36; r_4(D)-sig[i_38] = 0; i_40 = i_38 + 1; i_42 = i_40; r_4(D)-sig[i_42] = 0; i_44 = i_42 + 1; i_46 = i_44; r_4(D)-sig[i_46] = 0; i_48 = i_46 + 1; i_50 = i_48; r_4(D)-sig[i_50] = 0; i_52 = i_50 + 1; i_54 = i_52; r_4(D)-sig[i_54] = 0; i_56 = i_54 + 1; i_58 = i_56; r_4(D)-sig[i_58] = 0; i_60 = i_58 + 1; i_62 = i_60; r_4(D)-sig[i_62] = 0; i_64 = i_62 + 1; i_66 = i_64; r_4(D)-sig[i_66] = 0; i_68 = i_66 + 1; i_70 = i_68; r_4(D)-sig[i_70] = 0; i_72 = i_70 + 1; i_74 = i_72; r_4(D)-sig[i_74] = 0; i_76 = i_74 + 1; i_78 = i_76; r_4(D)-sig[i_78] = 0; [...] and so on. since it definitely writes more than 5 ints, I don't see how it should *not* overflow the array. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31058
[Bug c/17946] wanted: warning for a MASK when a MASK was probably intended
--- Comment #12 from mueller at gcc dot gnu dot org 2007-02-19 10:21 --- I've submitted a patch -- mueller at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |mueller at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17946
[Bug c++/30860] Should warn about boolean constant false used in pointer context
--- Comment #1 from mueller at gcc dot gnu dot org 2007-02-19 16:43 --- manu, is this something already covered by your pending -Wconversion fixes? -- mueller at gcc dot gnu dot org changed: What|Removed |Added CC||manu at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30860
[Bug c++/30860] Should warn about boolean constant false used in pointer context
-- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2007-02-19 20:21:31 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30860
[Bug c++/30860] Should warn about boolean constant false used in pointer context
--- Comment #6 from mueller at gcc dot gnu dot org 2007-02-19 20:23 --- there is an implicit value conversion, boolean false to address 0. I think that is the definition of -Wconversion, no? anyway, I'll work on a patch. -- mueller at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |mueller at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30860
[Bug bootstrap/30510] [4.3 Regression] Gcc failed to bootstrap
--- Comment #21 from mueller at gcc dot gnu dot org 2007-02-05 12:43 --- Subject: Bug 30510 Author: mueller Date: Mon Feb 5 12:43:17 2007 New Revision: 121596 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=121596 Log: 2007-02-05 Dirk Mueller [EMAIL PROTECTED] PR bootstrap/30510 * parser.c (cp_parser_class_specifier): Always initialize bases. Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/parser.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30510
[Bug bootstrap/30510] [4.3 Regression] Gcc failed to bootstrap
--- Comment #22 from mueller at gcc dot gnu dot org 2007-02-05 12:43 --- Fixed in 4.3. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|REOPENED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30510
[Bug middle-end/30636] [4.3 Regression] incorrect array bounds warning on multi-dimensional arrays
--- Comment #8 from mueller at gcc dot gnu dot org 2007-02-01 13:27 --- removing diagnostic keyword again. This is latent wrong-code. -- mueller at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|mueller at gcc dot gnu dot |rguenth at gcc dot gnu dot |org |org Keywords|diagnostic | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30636
[Bug middle-end/30636] [4.3 Regression] incorrect array bounds warning on multi-dimensional arrays
-- mueller at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |mueller at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30636
[Bug middle-end/30636] [4.3 Regression] incorrect array bounds warning on multi-dimensional arrays
--- Comment #3 from mueller at gcc dot gnu dot org 2007-01-30 13:09 --- I'm not flagging this as diagnostic for now, because it is imho still a bug in ccp that could cause other side-effects (aliasing analysis?). if it is clear that the only problem this causes is the warning then I'll happily add a suppression for this case. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Keywords|diagnostic | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30636
[Bug c++/30601] [4.3 regression] -Wreturn-type warns about more than what the documentation says
--- Comment #13 from mueller at gcc dot gnu dot org 2007-01-30 16:20 --- Subject: Bug 30601 Author: mueller Date: Tue Jan 30 16:20:06 2007 New Revision: 121342 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=121342 Log: 2007-01-30 Dirk Mueller [EMAIL PROTECTED] PR c++/30601 * doc/invoke.texi (-Wreturn-type): Update description to match new behavior. Modified: trunk/gcc/ChangeLog trunk/gcc/doc/invoke.texi -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30601
[Bug c/8268] no compile time array index checking
--- Comment #45 from mueller at gcc dot gnu dot org 2007-01-30 17:17 --- Subject: Bug 8268 Author: mueller Date: Tue Jan 30 17:17:39 2007 New Revision: 121346 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=121346 Log: backport from mainline: 2007-01-21 Dirk Mueller [EMAIL PROTECTED] PR bootstrap/30511 * tree-vrp.c (check_array_bounds): do not warn about ADDR_EXPR's of ARRAY_REF's which are immediately used in binary expressions. 2007-01-19 Dirk Mueller [EMAIL PROTECTED] * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid duplicate evaluation. 2007-01-18 Dirk Mueller [EMAIL PROTECTED] Richard Guenther [EMAIL PROTECTED] PR diagnostic/8268 * doc/invoke.texi (Warray-bounds): Document -Warray-bounds. * common.opt (Warray-bounds): Add new warning option. * c-opts.c (c_common_handle_option): Define -Warray-bounds if -Wall is given. * Makefile.in: make tree-vrp.o depend on toplev.h * tree-vrp.c (vrp_finalize): Call check_array_refs if * -Warray-bounds is enabled. (check_array_refs, check_array_bounds, check_array_ref): New. Added: branches/suse/gcc-4_2-branch/gcc/testsuite/g++.dg/warn/Warray-bounds-2.C - copied unchanged from r120898, trunk/gcc/testsuite/g++.dg/warn/Warray-bounds-2.C branches/suse/gcc-4_2-branch/gcc/testsuite/g++.dg/warn/Warray-bounds.C - copied unchanged from r120898, trunk/gcc/testsuite/g++.dg/warn/Warray-bounds.C branches/suse/gcc-4_2-branch/gcc/testsuite/gcc.dg/Warray-bounds-2.c - copied unchanged from r120898, trunk/gcc/testsuite/gcc.dg/Warray-bounds-2.c branches/suse/gcc-4_2-branch/gcc/testsuite/gcc.dg/Warray-bounds.c - copied unchanged from r120898, trunk/gcc/testsuite/gcc.dg/Warray-bounds.c Modified: branches/suse/gcc-4_2-branch/gcc/Makefile.in branches/suse/gcc-4_2-branch/gcc/c-opts.c branches/suse/gcc-4_2-branch/gcc/common.opt branches/suse/gcc-4_2-branch/gcc/config/i386/i386.h branches/suse/gcc-4_2-branch/gcc/doc/invoke.texi branches/suse/gcc-4_2-branch/gcc/tree-vrp.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8268
[Bug bootstrap/30511] False array bound check causes gcc failed to boostrap
--- Comment #9 from mueller at gcc dot gnu dot org 2007-01-30 17:18 --- Subject: Bug 30511 Author: mueller Date: Tue Jan 30 17:17:39 2007 New Revision: 121346 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=121346 Log: backport from mainline: 2007-01-21 Dirk Mueller [EMAIL PROTECTED] PR bootstrap/30511 * tree-vrp.c (check_array_bounds): do not warn about ADDR_EXPR's of ARRAY_REF's which are immediately used in binary expressions. 2007-01-19 Dirk Mueller [EMAIL PROTECTED] * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid duplicate evaluation. 2007-01-18 Dirk Mueller [EMAIL PROTECTED] Richard Guenther [EMAIL PROTECTED] PR diagnostic/8268 * doc/invoke.texi (Warray-bounds): Document -Warray-bounds. * common.opt (Warray-bounds): Add new warning option. * c-opts.c (c_common_handle_option): Define -Warray-bounds if -Wall is given. * Makefile.in: make tree-vrp.o depend on toplev.h * tree-vrp.c (vrp_finalize): Call check_array_refs if * -Warray-bounds is enabled. (check_array_refs, check_array_bounds, check_array_ref): New. Added: branches/suse/gcc-4_2-branch/gcc/testsuite/g++.dg/warn/Warray-bounds-2.C - copied unchanged from r120898, trunk/gcc/testsuite/g++.dg/warn/Warray-bounds-2.C branches/suse/gcc-4_2-branch/gcc/testsuite/g++.dg/warn/Warray-bounds.C - copied unchanged from r120898, trunk/gcc/testsuite/g++.dg/warn/Warray-bounds.C branches/suse/gcc-4_2-branch/gcc/testsuite/gcc.dg/Warray-bounds-2.c - copied unchanged from r120898, trunk/gcc/testsuite/gcc.dg/Warray-bounds-2.c branches/suse/gcc-4_2-branch/gcc/testsuite/gcc.dg/Warray-bounds.c - copied unchanged from r120898, trunk/gcc/testsuite/gcc.dg/Warray-bounds.c Modified: branches/suse/gcc-4_2-branch/gcc/Makefile.in branches/suse/gcc-4_2-branch/gcc/c-opts.c branches/suse/gcc-4_2-branch/gcc/common.opt branches/suse/gcc-4_2-branch/gcc/config/i386/i386.h branches/suse/gcc-4_2-branch/gcc/doc/invoke.texi branches/suse/gcc-4_2-branch/gcc/tree-vrp.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30511
[Bug debug/30629] New: [Regression:4.3/4.2] -g causes undefined references
Consider this testcase: === Cut === static int hacky_auxmaps[2]; static signed int auxmap_used = 0; static int *auxmap = hacky_auxmaps[0]; static void mc_pre_reg_read ( unsigned size) { vgPlain_message (memcheck: auxmaps: %d auxmap entries in use, auxmap_used); } === Cut === compiling it with -O2 -g results in an undefined reference to hacky_auxmaps. just compiling with -O2 or with -O0 fixes it. -- Summary: [Regression:4.3/4.2] -g causes undefined references Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mueller at gcc dot gnu dot org GCC host triplet: i686-suse-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30629
[Bug bootstrap/30510] [4.3 Regression] Gcc failed to bootstrap
-- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2007-01-23 13:29:26 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30510
[Bug bootstrap/30510] [4.3 Regression] Gcc failed to bootstrap
--- Comment #3 from mueller at gcc dot gnu dot org 2007-01-23 13:33 --- ah, no, this doesn't seem to be the same thing. -- mueller at gcc dot gnu dot org changed: What|Removed |Added URL|http://gcc.gnu.org/ml/gcc- | |patches/2007- | |01/msg01731.html| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30510
[Bug bootstrap/30510] [4.3 Regression] Gcc failed to bootstrap
--- Comment #7 from mueller at gcc dot gnu dot org 2007-01-23 15:47 --- which revision is that? -r121081 fails here -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30510
[Bug fortran/30549] compiler warning in resolve.c: possibly uninitialized use of name
--- Comment #5 from mueller at gcc dot gnu dot org 2007-01-23 16:26 --- fortran seems to bootstrap now. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30549
[Bug bootstrap/30511] False array bound check causes gcc failed to boostrap
--- Comment #7 from mueller at gcc dot gnu dot org 2007-01-21 16:12 --- Subject: Bug 30511 Author: mueller Date: Sun Jan 21 16:12:10 2007 New Revision: 121032 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=121032 Log: 2007-01-21 Dirk Mueller [EMAIL PROTECTED] PR bootstrap/30511 * tree-vrp.c (check_array_bounds): do not warn about ADDR_EXPR's of ARRAY_REF's which are immediately used in binary expressions. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-vrp.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30511
[Bug bootstrap/30511] False array bound check causes gcc failed to boostrap
--- Comment #8 from mueller at gcc dot gnu dot org 2007-01-21 16:52 --- Fixed for 4.3. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30511
[Bug c++/19618] Does warn if bit-fields exceed the size of bool types
-- mueller at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |mueller at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19618
[Bug bootstrap/30511] False array bound check causes gcc failed to boostrap
--- Comment #1 from mueller at gcc dot gnu dot org 2007-01-19 20:04 --- this patch fixes / works around it. I don't like it yet, I'm trying to find a better solution. --- tree-vrp.c (revision 120953) +++ tree-vrp.c (working copy) @@ -3583,6 +3583,25 @@ check_array_bounds (tree *tp, int *walk_ *walk_subtree = FALSE; return NULL_TREE; } + + /* Don't warn if the result ssa_name is used in another + binary expr. */ + if (TREE_CODE ((tree)data) == GIMPLE_MODIFY_STMT +GIMPLE_STMT_OPERAND ((tree)data, 0) +TREE_CODE (GIMPLE_STMT_OPERAND ((tree)data, 0)) == SSA_NAME) + { + imm_use_iterator iter; + tree lhs = GIMPLE_STMT_OPERAND ((tree)data, 0); + tree use; + + FOR_EACH_IMM_USE_STMT (use, iter, lhs) +if (TREE_CODE (use) == GIMPLE_MODIFY_STMT + BINARY_CLASS_P (GIMPLE_STMT_OPERAND (use, 1))) + *walk_subtree = FALSE; + + if (*walk_subtree == FALSE) +return NULL_TREE; + } while (handled_component_p (t)) { if (TREE_CODE (t) == ARRAY_REF) -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2007-01-19 20:04:36 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30511
[Bug bootstrap/30511] False array bound check causes gcc failed to boostrap
--- Comment #5 from mueller at gcc dot gnu dot org 2007-01-19 22:15 --- the ivopts problem is a duplicate of bug 26726. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30511
[Bug c/8268] no compile time array index checking
--- Comment #43 from mueller at gcc dot gnu dot org 2007-01-18 13:00 --- Subject: Bug 8268 Author: mueller Date: Thu Jan 18 13:00:33 2007 New Revision: 120898 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=120898 Log: 2007-01-18 Dirk Mueller [EMAIL PROTECTED] · Richard Guenther [EMAIL PROTECTED] · PR diagnostic/8268 · * doc/invoke.texi (Warray-bounds): Document -Warray-bounds. · * common.opt (Warray-bounds): Add new warning option. · * c-opts.c (c_common_handle_option): Define -Warray-bounds · if -Wall is given. * Makefile.in: make tree-vrp.o depend on toplev.h · * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds · is enabled. · (check_array_refs, check_array_bounds, check_array_ref): New. · * gcc.dg/Warray-bounds.c: New testcase. * gcc.dg/Warray-bounds-2.c: New testcase. * g++.dg/warn/Warray-bounds.C: New testcase. * g++.dg/warn/Warray-bounds-2.C: New testcase. Added: trunk/gcc/testsuite/g++.dg/warn/Warray-bounds-2.C trunk/gcc/testsuite/g++.dg/warn/Warray-bounds.C trunk/gcc/testsuite/gcc.dg/Warray-bounds-2.c trunk/gcc/testsuite/gcc.dg/Warray-bounds.c Modified: trunk/gcc/ChangeLog trunk/gcc/Makefile.in trunk/gcc/c-opts.c trunk/gcc/common.opt trunk/gcc/doc/invoke.texi trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-vrp.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8268
[Bug c/8268] no compile time array index checking
--- Comment #44 from mueller at gcc dot gnu dot org 2007-01-18 13:12 --- Fixed for 4.3. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Known to work||4.3.0 Resolution||FIXED Target Milestone|--- |4.3.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8268
[Bug c/8268] no compile time array index checking
--- Comment #42 from mueller at gcc dot gnu dot org 2007-01-17 10:51 --- no, its going in real soon now (finally) :) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8268
[Bug c++/18313] Missing warning for superfluous const's in return types
--- Comment #3 from mueller at gcc dot gnu dot org 2006-11-30 23:08 --- Subject: Bug 18313 Author: mueller Date: Thu Nov 30 23:08:27 2006 New Revision: 119382 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=119382 Log: 2006-12-01 Dirk Mueller [EMAIL PROTECTED] PR c++/18313 * decl.c (grokdeclarator): Warn for type qualifiers on return type for non-dependent types. * pt.c (tsubst_function_type): Warn for type qualifiers on return type for dependent types. * g++.dg/warn/Wreturn-type-4.C: New testcase. Added: trunk/gcc/testsuite/g++.dg/warn/Wreturn-type-4.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/decl.c trunk/gcc/cp/pt.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18313
[Bug c++/18313] Missing warning for superfluous const's in return types
--- Comment #4 from mueller at gcc dot gnu dot org 2006-11-30 23:11 --- Implemented for 4.3. -- mueller at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18313