[Bug middle-end/47691] [4.6/4.7 Regression] ICE: in create_linear_expr_from_tree, at graphite-sese-to-poly.c:1138 with -fgraphite-identity -ffast-math -fno-tree-scev-cprop
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47691 Sebastian Pop changed: What|Removed |Added Status|NEW |ASSIGNED AssignedTo|unassigned at gcc dot |spop at gcc dot gnu.org |gnu.org | --- Comment #4 from Sebastian Pop 2011-07-24 04:42:53 UTC --- Patch http://gcc.gnu.org/ml/gcc-patches/2011-07/msg02057.html
[Bug target/49826] New: [4.7 Regression] Symbols are not decorated with attribute stdcall and -mrtd
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49826 Summary: [4.7 Regression] Symbols are not decorated with attribute stdcall and -mrtd Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: d.g.gorbac...@gmail.com Target: i686-pc-mingw32 Code: extern void __attribute__((stdcall)) bar(int); void foo(void) { bar(0); } When compiled with gcc-4.6 -mrtd call_bar@4 With gcc-4.7 -mrtd call_bar
[Bug middle-end/49825] [4.7 Regression] Many testcase failures
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49825 Richard Henderson changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2011.07.24 02:47:05 AssignedTo|unassigned at gcc dot |rth at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1 --- Comment #2 from Richard Henderson 2011-07-24 02:47:05 UTC --- Mine.
[Bug fortran/48876] ICE when initializing character variable with zero-length string
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48876 Andrew Pinski changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2011.07.24 02:04:22 Ever Confirmed|0 |1 --- Comment #2 from Andrew Pinski 2011-07-24 02:04:22 UTC --- Confirmed.
[Bug c++/48802] ICE with inheritance and nothrow virtual destructors
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48802 --- Comment #1 from Andrew Pinski 2011-07-24 02:01:59 UTC --- Works for me with: GNU C++ (GCC) version 4.7.0 20110723 (experimental) [trunk revision 176707] (x86_64-unknown-linux-gnu) compiled by GNU C version 4.7.0 20110723 (experimental) [trunk revision 176707], GMP version 4.2.2, MPFR version 2.3.1, MPC version 0.8
[Bug tree-optimization/48799] [4.7 Regression] ice in pred_chain_length_cmp
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48799 --- Comment #1 from Andrew Pinski 2011-07-24 00:54:43 UTC --- Works for me with GNU C (GCC) version 4.7.0 20110723 (experimental) [trunk revision 176707] (x86_64-unknown-linux-gnu) hdp_gr.c: In function ‘dumpgr_usage’: hdp_gr.c:31:19: warning: unused parameter ‘argc’ [-Wunused-parameter] hdp_gr.c: In function ‘dgr’: hdp_gr.c:1267:13: warning: ‘fp’ may be used uninitialized in this function [-Wmaybe-uninitialized]
[Bug target/49146] segv from libgcc_s when raising an exception, or unwinding stack with backtrace with ms_abi
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49146 Andrew Pinski changed: What|Removed |Added Keywords||wrong-code Target||x86_64-unknown-linux-gnu Summary|segv from libgcc_s when |segv from libgcc_s when |raising an exception, or|raising an exception, or |unwinding stack with|unwinding stack with |backtrace |backtrace with ms_abi Severity|critical|normal
[Bug target/49057] scheduling difference of subs cause 80% performance difference
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49057 Andrew Pinski changed: What|Removed |Added Severity|normal |enhancement
[Bug rtl-optimization/48932] ICE in check_dep, at sched-deps.c:4097
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48932 Andrew Pinski changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||FIXED --- Comment #8 from Andrew Pinski 2011-07-23 23:40:18 UTC --- .
[Bug fortran/49025] gfortran bug: Local variable does not hide generic procedure.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49025 Andrew Pinski changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2011.07.23 23:39:24 Ever Confirmed|0 |1
[Bug middle-end/49012] weak const optimisations
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49012 Andrew Pinski changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Component|c |middle-end Resolution||INVALID --- Comment #4 from Andrew Pinski 2011-07-23 23:37:49 UTC --- Invalid as you need to compile with -fPIC to be able to change weak symbols.
[Bug other/48922] invalid dwarf2 on ia64 with very old gas
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48922 --- Comment #1 from Andrew Pinski 2011-07-23 23:20:08 UTC --- SUPPORTS_DISCRIMINATOR should be 0 in your case.
[Bug middle-end/49825] [4.7 Regression] Many testcase failures
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49825 H.J. Lu changed: What|Removed |Added CC||rth at gcc dot gnu.org Summary|[4.7 Regression] FAIL: |[4.7 Regression] Many |g++.dg/tree-prof/partition2 |testcase failures |.C | --- Comment #1 from H.J. Lu 2011-07-23 23:15:33 UTC --- On Linux/ia32, revision 176706 gave FAIL: g++.dg/eh/async-unwind1.C (internal compiler error) FAIL: g++.dg/eh/async-unwind1.C (test for excess errors) FAIL: g++.dg/eh/async-unwind2.C (internal compiler error) FAIL: g++.dg/eh/async-unwind2.C (test for excess errors) FAIL: g++.dg/torture/20080625-1.C -Os (internal compiler error) FAIL: g++.dg/torture/20080625-1.C -Os (test for excess errors) FAIL: g++.dg/torture/pr31081-2.C -Os (internal compiler error) FAIL: g++.dg/torture/pr31081-2.C -Os (test for excess errors) FAIL: g++.dg/torture/pr33340.C -Os (internal compiler error) FAIL: g++.dg/torture/pr33340.C -Os (test for excess errors) FAIL: g++.dg/torture/pr33735.C -Os (internal compiler error) FAIL: g++.dg/torture/pr33735.C -Os (test for excess errors) FAIL: g++.dg/torture/pr35164-1.C -Os (internal compiler error) FAIL: g++.dg/torture/pr35164-1.C -Os (test for excess errors) FAIL: g++.dg/torture/pr35164-2.C -Os (internal compiler error) FAIL: g++.dg/torture/pr35164-2.C -Os (test for excess errors) FAIL: g++.dg/torture/pr40102.C -Os (internal compiler error) FAIL: g++.dg/torture/pr40102.C -Os (test for excess errors) FAIL: g++.dg/torture/pr40642.C -Os (internal compiler error) FAIL: g++.dg/torture/pr40642.C -Os (test for excess errors) FAIL: g++.dg/torture/pr44813.C -Os (internal compiler error) FAIL: g++.dg/torture/pr44813.C -Os (test for excess errors) FAIL: g++.dg/torture/pr48271.C -Os (internal compiler error) FAIL: g++.dg/torture/pr48271.C -Os (test for excess errors) FAIL: g++.dg/torture/pr49115.C -Os (internal compiler error) FAIL: g++.dg/torture/pr49115.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-alloca-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-alloca-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-alloca-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-alloca-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-fastcall-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-fastcall-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-fastcall-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-fastcall-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-global-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-global-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-global-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-global-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-inline-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-inline-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-inline-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-inline-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-inline-2.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-inline-2.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-inline-2.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-inline-2.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-thiscall-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-thiscall-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-thiscall-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-thiscall-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-vararg-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-vararg-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-vararg-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-vararg-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-vararg-2.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-vararg-2.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/eh-vararg-2.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/eh-vararg-2.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/stdcall-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/stdcall-1.C -Os (internal compiler error) FAIL: g++.dg/torture/stackalign/stdcall-1.C -Os (test for excess errors) FAIL: g++.dg/torture/stackalign/stdcall-1.C -Os (test for excess errors) FAIL: g++.dg/tree-ss
[Bug c/48910] Current working directory in system include search path
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48910 Andrew Pinski changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||INVALID --- Comment #3 from Andrew Pinski 2011-07-23 23:15:13 UTC --- Not a GCC bug but rather a bug in the user's env.
[Bug c++/48867] Using the compilation flag -mfpmath=sse breaks Snes9x build.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48867 --- Comment #1 from Andrew Pinski 2011-07-23 23:06:13 UTC --- >g++: internal compiler error: Killed (program cc1plus) You ran out of memory.
[Bug tree-optimization/48795] -Warray-bounds false positive
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48795 Andrew Pinski changed: What|Removed |Added Keywords||diagnostic --- Comment #4 from Andrew Pinski 2011-07-23 22:57:42 UTC --- Note you are also violating two things really, aliasing rules and alignment rules of C/C++.
[Bug middle-end/48812] optimizing integer power of 2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48812 Andrew Pinski changed: What|Removed |Added Keywords||missed-optimization Status|UNCONFIRMED |NEW Last reconfirmed||2011.07.23 22:53:44 Component|c |middle-end Ever Confirmed|0 |1 Severity|normal |enhancement --- Comment #3 from Andrew Pinski 2011-07-23 22:53:44 UTC --- Confirmed.
[Bug middle-end/48779] -Wunused-but-set-variable does not report unread unit-static variables
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48779 Andrew Pinski changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2011.07.23 22:40:07 Component|c |middle-end Ever Confirmed|0 |1 Severity|normal |enhancement --- Comment #1 from Andrew Pinski 2011-07-23 22:40:07 UTC --- To do this warning, we need an IPA pass which goes through all static referenced variables and see if they are only written to.
[Bug c/48778] gcc 4.6 -Waddress adds unhelpful new warning case when using from a macro
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48778 Andrew Pinski changed: What|Removed |Added Keywords||diagnostic Summary|gcc 4.6 -Waddress adds |gcc 4.6 -Waddress adds |unhelpful new warning case |unhelpful new warning case ||when using from a macro --- Comment #1 from Andrew Pinski 2011-07-23 22:38:54 UTC --- Maybe we should disable some warnings when they come from macros. Or have an option to do that.
[Bug c/49820] Explicit check for integer negative after abs optimized away
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49820 --- Comment #6 from Jeffrey Walton 2011-07-23 22:28:07 UTC --- (In reply to comment #5) > > CPUs which use 2s compliment representations are usually well equipped to > > deal > > with overflow and carry. I would claim a result which overflows is actually > > predictable and repeatable. Fortunately, CPU manufacturers have not taken > > the > > 'ignore the problem' approach taken by ISO/IEC. > > See http://www.airs.com/blog/archives/120 for more elaborated views. Thanks Eric - I really enjoy reading Ian and Jonathan on GCC-Users (I wish they would write a modern GCC book). I believe Ian might have overlooked one usage case (but speaking to the masses, he is spot-on). In many cases, folks are oblivious to overflow and will truck on as if nothing happened. In the "what's overflow" case, I think Ian's arguments are correct in assuming all statements are well formed and all results are well defined. The majority of folks don't code for overflow so GCC should not care either. However, there is a minority of folks who do care. I'm willing to perform an operation that will lead to overflow, but I'm not willing to use the [possibly undefined] result. In between the operation and result, I need help from GCC to efficiently determine overflow or carry. For the architectures I have worked on, this is inevitably some flags. Note that I've never worked on a sign-magnitude machine, and have no idea what the efficient methods are. I think there is a disconnect between ISO/IEC and their desire to produce portable code, secure programming, and practical implementations. Confer: ME: "I want to check the flags register on x86/x64 to determine overflow anfter an ADD or SUB operation." ISO/IEC: "What's overflow? Our abstract machines do not overflow. And a FLAGS register is not portable, so we're not making any provisions for it." Interestingly, GCC seems to add its own twist: it wants to produce optimized code. In the end, it would be a lot of help (to a minority of folks) if GCC moved from its position of "all programs do not have undefined behavior" and provided some intrinsics (where applicable) to help folks with the problem: * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48580 * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49467 Jeff
[Bug bootstrap/49810] [4.7 Regression] ld: Unsatisfied symbol "strsignal(int)" in file collect2.o
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49810 Andrew Pinski changed: What|Removed |Added Target Milestone|--- |4.7.0
[Bug c++/49811] Crash at __do_global_dtors_aux when compiled with '-shared -static'
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49811 --- Comment #2 from Andrew Pinski 2011-07-23 22:19:20 UTC --- "-shared -static" does not make sense really. Are you trying to compile a libary that contains all other libraries compiled staticly? If so then "-shared -static" makes sense. It does not produce an application but rather a shared library.
[Bug target/49313] Inefficient libgcc implementations for avr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49313 --- Comment #4 from Georg-Johann Lay 2011-07-23 22:17:02 UTC --- (In reply to comment #3) > Johann, > > You've committed a patch for this PR. Can this be closed now? I'm not sure. This can be improved like outlined in http://gcc.gnu.org/ml/gcc-patches/2011-06/msg01354.html i.e. describing explicitely action of the calls i.e. preforming implicit library calls. That will yield smaller footprint for these functions and pick best fitting implementations. For example, int parity (unsigned char x) { return __builtin_parity (x); } would use 8-bit version of parity instead of expanding char to int and then computing 16-bit parity. What do you think? And the 64-bit overkill is even more overkill of open coded in C. I don't intend to do DI stuff; it's too tedious and time can be better user for more important stuff. Si the DI part of mul, div, mod is still to be done.
[Bug rtl-optimization/49807] Missed byte (subreg) extraction when storing to volatile mem
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49807 Andrew Pinski changed: What|Removed |Added Target|avr |avr, mips*-*-* Status|UNCONFIRMED |NEW Last reconfirmed||2011.07.23 22:15:10 Target Milestone|4.7.0 |--- Ever Confirmed|0 |1 --- Comment #6 from Andrew Pinski 2011-07-23 22:15:10 UTC --- I saw this on MIPS too.(In reply to comment #5) > Do you have an idea how to attack this optimization flaw? To figure out the places which reduce the MEM's sizes and conditionalize them on non volatile MEM's. And then remove the condition in combine for not allowing volatile memory optimizations.
[Bug target/49313] Inefficient libgcc implementations for avr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49313 Eric Weddington changed: What|Removed |Added CC||eric.weddington at atmel ||dot com --- Comment #3 from Eric Weddington 2011-07-23 21:24:46 UTC --- Johann, You've committed a patch for this PR. Can this be closed now? Eric
[Bug middle-end/49825] New: [4.7 Regression] FAIL: g++.dg/tree-prof/partition2.C
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49825 Summary: [4.7 Regression] FAIL: g++.dg/tree-prof/partition2.C Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassig...@gcc.gnu.org ReportedBy: hjl.to...@gmail.com On Linux/ia32, revision 176697 gave FAIL: g++.dg/tree-prof/partition2.C compilation, -O1 -fprofile-use FAIL: g++.dg/tree-prof/partition2.C compilation, -O2 -fprofile-use FAIL: g++.dg/tree-prof/partition2.C compilation, -O3 -fprofile-use FAIL: g++.dg/tree-prof/partition2.C compilation, -O3 -g -fprofile-use FAIL: g++.dg/tree-prof/partition2.C compilation, -Os -fprofile-use Revision 176675 is OK.
[Bug c/49820] Explicit check for integer negative after abs optimized away
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49820 Eric Botcazou changed: What|Removed |Added CC||ebotcazou at gcc dot ||gnu.org --- Comment #5 from Eric Botcazou 2011-07-23 20:58:52 UTC --- > CPUs which use 2s compliment representations are usually well equipped to deal > with overflow and carry. I would claim a result which overflows is actually > predictable and repeatable. Fortunately, CPU manufacturers have not taken the > 'ignore the problem' approach taken by ISO/IEC. See http://www.airs.com/blog/archives/120 for more elaborated views.
[Bug other/49775] [4.6.1 Regression on AVR] ICE in based_loc_descr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49775 Georg-Johann Lay changed: What|Removed |Added Keywords||ice-on-valid-code Status|UNCONFIRMED |NEW Last reconfirmed||2011.07.23 20:55:02 CC||eric.weddington at atmel ||dot com, gjl at gcc dot ||gnu.org Target Milestone|--- |4.6.2 Ever Confirmed|0 |1 Known to fail||4.7.0 --- Comment #2 from Georg-Johann Lay 2011-07-23 20:55:02 UTC --- COnfirmed. I see these bugs in testsuite runs, too.
[Bug c/49820] Explicit check for integer negative after abs optimized away
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49820 Jeffrey Walton changed: What|Removed |Added CC||noloader at gmail dot com --- Comment #4 from Jeffrey Walton 2011-07-23 20:47:55 UTC --- (In reply to comment #1) > Integer overflow is undefined. You have to check before the fact, or compile > with -fwrapv. I'm probably spinning wheels here, but checking 'a priori' is a bit ridiculous. Though the result is undefined, it seems to me the operation prior to the overflow (or the cause of the overflow) is still valid. Section 3.4.3 does not claim an operation which results in overflow is itself an 'undefined' operation. You don't get the 'undefined behavior' (ie, undefined result) until you perform the operation. CPUs which use 2s compliment representations are usually well equipped to deal with overflow and carry. I would claim a result which overflows is actually predictable and repeatable. Fortunately, CPU manufacturers have not taken the 'ignore the problem' approach taken by ISO/IEC.
[Bug target/49764] [gcc-avr] Compiling for Arduino is not working
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49764 Georg-Johann Lay changed: What|Removed |Added Keywords||rejects-valid Last reconfirmed|2011-07-16 17:25:59 |2011-07-23 17:25:59 Target Milestone|--- |4.6.2 Known to fail||4.6.1
[Bug target/49764] [gcc-avr] Compiling for Arduino is not working
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49764 Georg-Johann Lay changed: What|Removed |Added CC||gjl at gcc dot gnu.org --- Comment #16 from Georg-Johann Lay 2011-07-23 19:27:25 UTC --- Ah, now I see the report is for C++. I missed that between all the curses and scoldings...
[Bug target/49764] [gcc-avr] Compiling for Arduino is not working
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49764 --- Comment #15 from Georg-Johann Lay 2011-07-23 18:41:50 UTC --- Created attachment 24817 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24817 test case test case passes with avr-gcc-4.6.1-RC1 avr-gcc -v -S foo.c Using built-in specs. COLLECT_GCC=e:\WinAVR\4.6.1\bin\avr-gcc.exe COLLECT_LTO_WRAPPER=e:/winavr/4.6.1/bin/../libexec/gcc/avr/4.6.1/lto-wrapper.exe Target: avr Configured with: ../../gcc.gnu.org/gcc-4_6-branch/configure --target=avr --prefix=/local/gnu/install/gcc-4.6-mingw32 --host=i586-mingw32 --build=i686-linux-gnu --enable-languages=c,c++ --disable-nls --disable-shared --with-dwarf2 Thread model: single gcc version 4.6.1 20110620 (prerelease) (GCC) GNU C (GCC) version 4.6.1 20110620 (prerelease) (avr) compiled by GNU C version 3.3.1 (mingw special 20030804-1), GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2
[Bug target/49824] AVR: Missing documentation for OS_task and OS_main attributes
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49824 Georg-Johann Lay changed: What|Removed |Added CC||eric.weddington at atmel ||dot com Target Milestone|--- |4.4.7
[Bug target/49824] New: AVR: Missing documentation for OS_task and OS_main attributes
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49824 Summary: AVR: Missing documentation for OS_task and OS_main attributes Product: gcc Version: 4.3.3 Status: UNCONFIRMED Keywords: documentation Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: g...@gcc.gnu.org CC: ae...@gcc.gnu.org Target: avr GCC manual is missing documentation for the following avr-specific function attributes: OS_task: http://gcc.gnu.org/viewcvs?view=revision&revision=129662 OS_main: http://gcc.gnu.org/viewcvs?view=revision&revision=135681 GCC 4.4.6 manual: http://gcc.gnu.org/onlinedocs/gcc-4.4.6/gcc/Function-Attributes.html#Function-Attributes GCC trunk manual: http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#Function-Attributes
[Bug bootstrap/49810] [4.7 Regression] ld: Unsatisfied symbol "strsignal(int)" in file collect2.o
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49810 John David Anglin changed: What|Removed |Added CC||dj at redhat dot com Target Milestone|4.7.0 |--- --- Comment #4 from John David Anglin 2011-07-23 18:11:11 UTC --- Would it be possible to add a declaration check for strsignal and fix header?
[Bug c/49820] Explicit check for integer negative after abs optimized away
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49820 --- Comment #3 from Andreas Schwab 2011-07-23 17:30:21 UTC --- Unsigned integers never overflow.
[Bug middle-end/49363] [feature request] multiple target attribute (and runtime dispatching based on cpuid)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49363 --- Comment #6 from davidxl 2011-07-23 17:28:30 UTC --- (In reply to comment #5) > Any news on this item? > Is this feature still foreseen for 4.7? > A patch to test for instance. Sri is working on this. He will post a formal specification of feature soon. Part of the proposal also includes implementation of the MV runtime support (runtime initialization to determine cpu topology and intrinsics to query) and command line option extensions. David
[Bug c/49820] Explicit check for integer negative after abs optimized away
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49820 --- Comment #2 from Andrew Pinski 2011-07-23 17:23:44 UTC --- (In reply to comment #1) > Integer overflow is undefined. You have to check before the fact, or compile > with -fwrapv. That should say signed integer overflow is undefined.
[Bug c++/49823] [C++0x] ICE on decltype(expr)::type with template
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49823 Paolo Carlini changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2011.07.23 15:54:58 CC||jason at gcc dot gnu.org Ever Confirmed|0 |1 --- Comment #1 from Paolo Carlini 2011-07-23 15:54:58 UTC --- The new if block added at the beginning of cp_parser_qualifying_entity as part of implementing DR 743, returns NULL_TREE as TYPE_NAME (scope).
[Bug c++/49823] New: [C++0x] ICE on decltype(expr)::type with template
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49823 Summary: [C++0x] ICE on decltype(expr)::type with template Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: fl...@flast.jp All of following three template functions occur ICE with GCC 4.7.0 20110723. 8< template < typename T > auto f( const T &x ) -> typename decltype( x )::type; // ICE on here template < typename T > typename decltype( T{} )::type // ICE on here f( T ); template < typename T > void f( T x ) { typename decltype( x )::type x; } // ICE on here 8<
[Bug libfortran/49791] [4.4/4.5/4.6/4.7 Regression] Formatted namelist reads fails with: Cannot match namelist object
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49791 --- Comment #14 from Jerry DeLisle 2011-07-23 15:26:09 UTC --- Several years ago, I sketched out a "flow" chart for all of namelist so I could walk the logic and see what to do. I think we need to do this again and maybe post it to the wiki. (unfortunately I do not have that sketch)
[Bug target/41894] wrong code with -fno-split-wide-types
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41894 Georg-Johann Lay changed: What|Removed |Added Known to work|4.5.0 | Known to fail||4.5.0, 4.5.2, 4.6.1 --- Comment #14 from Georg-Johann Lay 2011-07-23 15:13:45 UTC --- Adapted known-o-fail as of attachement 24319 from Ilya.
[Bug target/41894] wrong code with -fno-split-wide-types
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41894 Georg-Johann Lay changed: What|Removed |Added CC|avr at gjlay dot de |gjl at gcc dot gnu.org Resolution|FIXED |DUPLICATE Target Milestone|4.5.0 |4.6.2 --- Comment #13 from Georg-Johann Lay 2011-07-23 15:09:49 UTC --- *** This bug has been marked as a duplicate of bug 46779 ***
[Bug target/46779] wrong code generation for array access
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46779 Georg-Johann Lay changed: What|Removed |Added CC||frank at mynety dot net --- Comment #15 from Georg-Johann Lay 2011-07-23 15:09:49 UTC --- *** Bug 41894 has been marked as a duplicate of this bug. ***
[Bug target/29560] [avr] Poor optimization for byte shifts
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29560 Georg-Johann Lay changed: What|Removed |Added Status|RESOLVED|NEW Resolution|INVALID | Target Milestone|--- |4.7.0 --- Comment #8 from Georg-Johann Lay 2011-07-23 14:53:52 UTC --- Set to NEW as explained in previous post.
[Bug fortran/49708] [4.5/4.6/4.7 Regression] ICE with allocate and no dimensions
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49708 janus at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED --- Comment #10 from janus at gcc dot gnu.org 2011-07-23 14:53:09 UTC --- Fixed on 4.5, 4.6 and trunk. Closing. And thanks for the report!
[Bug target/29560] [avr] Poor optimization for byte shifts
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29560 --- Comment #7 from Georg-Johann Lay 2011-07-23 14:50:58 UTC --- Created attachment 24816 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24816 Test case for 16-bit shifts that use low part only Reopened this optimization issue. For the attached test case, there are sometimes REG_UNUSED notes for the high part like with avr-gcc-4.6.1 -Os -dP shift1: ; (insn 8 4 17 (set (reg:HI 24 r24 [50]) ; (ashift:HI (reg:HI 24 r24 [ x ]) ; (reg/v:QI 22 r22 [orig:47 s ] [47]))) foo.c:3 68 {ashlhi3} ; (expr_list:REG_DEAD (reg/v:QI 22 r22 [orig:47 s ] [47]) ; (expr_list:REG_UNUSED (reg:QI 25 r25) ; (nil rjmp 2f ; 8ashlhi3/1[length = 6] 1:lsl r24 rol r25 2:dec r22 brpl 1b So that there is a way to map ashlhi3 to ashlqi3, i.e. 16-bit shift to a 8-bit shift. Unfortunately, these notes are not always present like in shift2: shift2: ; (insn 15 4 8 (set (reg:HI 18 r18) ; (reg:HI 24 r24 [ x ])) foo.c:10 10 {*movhi} ; (nil)) movw r18,r24 ; 15*movhi/1[length = 1] ; (insn 8 15 9 (set (reg:HI 18 r18) ; (ashift:HI (reg:HI 18 r18) ; (reg/v:QI 22 r22 [orig:46 s ] [46]))) foo.c:10 68 {ashlhi3} ; (expr_list:REG_DEAD (reg/v:QI 22 r22 [orig:46 s ] [46]) ; (nil))) rjmp 2f ; 8ashlhi3/1[length = 6] 1:lsl r18 rol r19 2:dec r22 brpl 1b The notes are not present in pass .split2 so a split won't help. The notes appear to be available in .peephole2 so that could be a fix. Moreover, the notes won't be back-propagated so that an optimization will cover at most one insn: the shift insn.
[Bug target/49816] arm.c:3999:12: error: converting 'false' to pointer type 'rtx'
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49816 Richard Earnshaw changed: What|Removed |Added Status|NEW |RESOLVED CC||rearnsha at gcc dot gnu.org Resolution||FIXED --- Comment #3 from Richard Earnshaw 2011-07-23 14:47:21 UTC --- Fixed
[Bug fortran/49708] [4.5/4.6/4.7 Regression] ICE with allocate and no dimensions
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49708 --- Comment #9 from janus at gcc dot gnu.org 2011-07-23 14:44:27 UTC --- Author: janus Date: Sat Jul 23 14:44:22 2011 New Revision: 176688 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=176688 Log: 2011-07-23 Janus Weil PR fortran/49708 * resolve.c (resolve_allocate_expr): Fix diagnostics for pointers. 2011-07-23 Janus Weil PR fortran/49708 * gfortran.dg/allocate_error_3.f90: New. Added: branches/gcc-4_5-branch/gcc/testsuite/gfortran.dg/allocate_error_3.f90 Modified: branches/gcc-4_5-branch/gcc/fortran/ChangeLog branches/gcc-4_5-branch/gcc/fortran/resolve.c branches/gcc-4_5-branch/gcc/testsuite/ChangeLog
[Bug tree-optimization/48805] ICE in rename_uses, at sese.c:533 while compiling qutecom 2.2 with -fgraphite-identity
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48805 Sebastian Pop changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2011.07.23 14:44:29 CC||spop at gcc dot gnu.org AssignedTo|unassigned at gcc dot |spop at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1 --- Comment #3 from Sebastian Pop 2011-07-23 14:44:29 UTC --- Patch http://gcc.gnu.org/ml/gcc-patches/2011-07/msg02047.html
[Bug target/49816] arm.c:3999:12: error: converting 'false' to pointer type 'rtx'
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49816 --- Comment #2 from Richard Earnshaw 2011-07-23 14:43:37 UTC --- Author: rearnsha Date: Sat Jul 23 14:43:33 2011 New Revision: 176687 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=176687 Log: PR target/49816 * arm.c (aapcs_vfp_allocate_return_reg): Return NULL on failure. Modified: trunk/gcc/ChangeLog trunk/gcc/config/arm/arm.c
[Bug target/49816] arm.c:3999:12: error: converting 'false' to pointer type 'rtx'
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49816 Richard Earnshaw changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2011.07.23 14:42:31 Ever Confirmed|0 |1 --- Comment #1 from Richard Earnshaw 2011-07-23 14:42:31 UTC --- confirmed
[Bug tree-optimization/49822] New: [gcc-4.7 regression] Segfault in remove_prop_source_from_use
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49822 Summary: [gcc-4.7 regression] Segfault in remove_prop_source_from_use Product: gcc Version: 4.7.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: rearn...@gcc.gnu.org Target: arm-eabi Created attachment 24815 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24815 testcase Attached testcase segfaults GCC for arm-eabi when compiled with cc1 -marm -mcpu=arm7tdmi -Os -fno-short-enums This was caused by: 2011-07-21 Richard Guenther * tree-ssa-forwprop.c (combine_conversions): Return whether we have to run cfg-cleanup. Properly remove dead stmts. (ssa_forward_propagate_and_combine): Adjust.
[Bug tree-optimization/21485] [4.4/4.5/4.6/4.7 Regression] missed load PRE, PRE makes i?86 suck
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21485 --- Comment #47 from wbrana 2011-07-23 13:53:46 UTC --- -O3 -pipe -fomit-frame-pointer -march=core2 -funroll-loops 4.4.6 - 1522.8 4.5.2 - 1502.6 4.6.1 - 1418.2
[Bug target/39386] [avr] different computation results for O1 and O0 executables
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39386 --- Comment #11 from Georg-Johann Lay 2011-07-23 13:48:14 UTC --- Created attachment 24814 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24814 Minimal testcase Minimal testcase that also miscompiles for newer versions of the compiler like 4.5.2 or 4.6.1. Compiles with -Os to shift: rjmp 2f 1:lsl r24 rol r25 2:dec r24 brpl 1b ret
[Bug middle-end/49363] [feature request] multiple target attribute (and runtime dispatching based on cpuid)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49363 --- Comment #5 from vincenzo Innocente 2011-07-23 13:29:36 UTC --- Any news on this item? Is this feature still foreseen for 4.7? A patch to test for instance.
[Bug tree-optimization/21485] [4.4/4.5/4.6/4.7 Regression] missed load PRE, PRE makes i?86 suck
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21485 --- Comment #46 from wbrana 2011-07-23 13:25:44 UTC --- -O3 -pipe -fomit-frame-pointer -march=core2 -funroll-loops -fno-tree-pre 4.4.6 - 1730.9 4.5.2 - 2368 4.6.1 - 2205.6
[Bug ada/49819] [4.6/4.7 regression] bogus reference to g-trasym-dwarf.adb in Makefile
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49819 Eric Botcazou changed: What|Removed |Added Status|REOPENED|RESOLVED Resolution||FIXED --- Comment #8 from Eric Botcazou 2011-07-23 10:29:08 UTC --- Thanks for reporting the problem.
[Bug libfortran/49791] [4.4/4.5/4.6/4.7 Regression] Formatted namelist reads fails with: Cannot match namelist object
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49791 --- Comment #13 from Tobias Burnus 2011-07-23 10:27:00 UTC --- (In reply to comment #12) > New Revision: 176661 This commit fixes the original issue. A more special case still fails, cf. http://gcc.gnu.org/ml/fortran/2011-07/msg00252.html Thus, the support for the vendor extension has still regressed. But since Rev. 176661, at least the test case of comment 0 is fixed.
[Bug ada/49819] [4.6/4.7 regression] bogus reference to g-trasym-dwarf.adb in Makefile
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49819 --- Comment #7 from Eric Botcazou 2011-07-23 10:23:46 UTC --- Author: ebotcazou Date: Sat Jul 23 10:23:42 2011 New Revision: 176674 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=176674 Log: Backport from mainline 2011-07-23 Arnaud Charlet PR ada/49819 * gcc-interface/Makefile.in (powerpc-linux): Remove reference to g-trasym-dwarf.adb. Modified: branches/gcc-4_6-branch/gcc/ada/ChangeLog branches/gcc-4_6-branch/gcc/ada/gcc-interface/Makefile.in
[Bug target/39386] [avr] different computation results for O1 and O0 executables
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39386 Georg-Johann Lay changed: What|Removed |Added Target Milestone|--- |4.6.2
[Bug target/39386] [avr] different computation results for O1 and O0 executables
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39386 Georg-Johann Lay changed: What|Removed |Added CC||gjl at gcc dot gnu.org Known to fail|| --- Comment #10 from Georg-Johann Lay 2011-07-23 10:08:33 UTC --- The problem arises from the following insns: *ashlqi3 ashlhi3 ashlsi3 ashrqi3 ashrhi3 ashrsi3 *lshrqi3 lshrhi3 lshrsi3 For variable shifts the first constraint alternative is "=r,0,r" avr.c:out_shift_with_cnt() reads else if (register_operand (operands[2], QImode)) { if (reg_unused_after (insn, operands[2])) op[3] = op[2]; else { op[3] = tmp_reg_rtx; if (!len) strcat (str, (AS2 (mov,%3,%2) CR_TAB)); } } so that in the very rare, pathological case of op0 = op1 = op2 and op2 is unused after the insn, wrong code gets generated. Fix is: if (reg_unused_after (insn, operands[2]) && !reg_overlap_mentioned_p (operands[0], operands[2])) or something like that.
[Bug libstdc++/49818] libsupc++ does not export __cxa_get_globals or related functions
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49818 Paolo Carlini changed: What|Removed |Added CC||jason at gcc dot gnu.org, ||rth at gcc dot gnu.org --- Comment #1 from Paolo Carlini 2011-07-23 09:28:11 UTC --- I think something more detailed would help, because otherwise, in my experience, generally the work on libsupc++ proceeds rather slowly (I think we still have a couple of old PRs open about exceptions). Like, a detailed list of which functions are problematic, which are not, clarify a bit what you mean by "properly" (are those "somehow" exported?). Let's add a couple of global maintainers in CC...
[Bug ada/49819] [4.6/4.7 regression] bogus reference to g-trasym-dwarf.adb in Makefile
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49819 Eric Botcazou changed: What|Removed |Added Status|RESOLVED|REOPENED Resolution|FIXED | Target Milestone|4.7.0 |4.6.2 Summary|[4.6 regression] bogus |[4.6/4.7 regression] bogus |reference to|reference to |g-trasym-dwarf.adb in |g-trasym-dwarf.adb in |Makefile|Makefile --- Comment #6 from Eric Botcazou 2011-07-23 09:27:52 UTC --- Yes, it is needed on the branch, as indicated. Will backport then.
[Bug ada/49819] [4.6 regression] bogus reference to g-trasym-dwarf.adb in Makefile
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49819 Arnaud Charlet changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED Target Milestone|4.6.2 |4.7.0 --- Comment #5 from Arnaud Charlet 2011-07-23 09:22:44 UTC --- Patch committed on trunk. Feel free to backport it to 4.6 branch if needed.
[Bug ada/49819] [4.6 regression] bogus reference to g-trasym-dwarf.adb in Makefile
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49819 --- Comment #4 from Eric Botcazou 2011-07-23 09:20:06 UTC --- OK, reassigning.
[Bug c++/49793] [C++0x] Narrowing conversion from int/short/char to double
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49793 Paolo Carlini changed: What|Removed |Added Status|NEW |RESOLVED Version|4.6.0 |4.7.0 Resolution||FIXED Target Milestone|--- |4.7.0 --- Comment #5 from Paolo Carlini 2011-07-23 09:19:54 UTC --- Thus fixed for 4.7.0 I would say.
[Bug ada/49819] [4.6 regression] bogus reference to g-trasym-dwarf.adb in Makefile
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49819 --- Comment #3 from Arnaud Charlet 2011-07-23 09:19:47 UTC --- Author: charlet Date: Sat Jul 23 09:19:44 2011 New Revision: 176673 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=176673 Log: 2011-07-23 Arnaud Charlet PR ada/49819 * gcc-interface/Makefile.in (powerpc-linux): Remove reference to g-trasym-dwarf.adb. Modified: trunk/gcc/ada/ChangeLog trunk/gcc/ada/gcc-interface/Makefile.in
[Bug ada/49819] [4.6 regression] bogus reference to g-trasym-dwarf.adb in Makefile
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49819 Arnaud Charlet changed: What|Removed |Added CC||charlet at gcc dot gnu.org --- Comment #2 from Arnaud Charlet 2011-07-23 09:16:18 UTC --- I have start looking at it already, here is the patch I'm about to commit: --- Makefile.in (revision 176624) +++ Makefile.in (working copy) @@ -1820,7 +1820,6 @@ ifeq ($(strip $(filter-out powerpc% linu s-osinte.adb
[Bug ada/49819] [4.6 regression] bogus reference to g-trasym-dwarf.adb in Makefile
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49819 Eric Botcazou changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2011.07.23 09:13:43 CC||ebotcazou at gcc dot ||gnu.org AssignedTo|unassigned at gcc dot |ebotcazou at gcc dot |gnu.org |gnu.org Target Milestone|--- |4.6.2 Summary|gcc/ada/gcc-interface/Makef |[4.6 regression] bogus |ile.in refers to|reference to |g-trasym-dwarf.adb which|g-trasym-dwarf.adb in |does not exist |Makefile Ever Confirmed|0 |1 --- Comment #1 from Eric Botcazou 2011-07-23 09:13:43 UTC --- Ugh. Fixing.
[Bug target/49821] New: [4.6 regression] ICE in dwarf2out_cfi_begin_epilogue, at dwarf2out.c:3015
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49821 Summary: [4.6 regression] ICE in dwarf2out_cfi_begin_epilogue, at dwarf2out.c:3015 Product: gcc Version: 4.6.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: d...@ubuntu.com Target: ia64-linux-gnu Created attachment 24813 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24813 preprocessed source [forwarded from http://bugs.debian.org/635153] fails with 4.6 branch 20110714, works with 4.5 branch. Either omitting -fvisibility=hidden or changing the optimization level to -O/-O2 works around the issue. $ g++ -c -fvisibility=hidden -g -Os nsRuleNode.i In file included from nsRuleNode.cpp:82:0: CSSCalc.h: In function 'typename CalcOps::result_type mozilla::css::ComputeCalc(const typename CalcOps::input_type&, CalcOps&) [with CalcOps = CalcLengthCalcOps, typename CalcOps::result_type = int, typename CalcOps::input_type = nsCSSValue]': CSSCalc.h:144:1: internal compiler error: in dwarf2out_cfi_begin_epilogue, at dwarf2out.c:3015 Please submit a full bug report, with preprocessed source if appropriate.
[Bug c/49820] Explicit check for integer negative after abs optimized away
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49820 Andreas Schwab changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||INVALID --- Comment #1 from Andreas Schwab 2011-07-23 07:20:20 UTC --- Integer overflow is undefined. You have to check before the fact, or compile with -fwrapv.
[Bug c/49820] New: Explicit check for integer negative after abs optimized away
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49820 Summary: Explicit check for integer negative after abs optimized away Product: gcc Version: 4.5.2 Status: UNCONFIRMED Severity: major Priority: P3 Component: c AssignedTo: unassig...@gcc.gnu.org ReportedBy: ag...@agner.org Created attachment 24812 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24812 Example generating bug The integer abs function can overflow if the argument is 0x8000. An intended check for overflow is ignored. The gcc compiler optimizes away a check for the value < 0 after abs with -O2 optimization: int b; b = abs(b); if (b < 0) // check for overflow optimized away The error occurs when compiling the attached file with -O2, 32 or 64 bit mode, C or C++. The C/C++ language does not normally need to check for overflow, but it should acknowledge an explicit check for overflow.