[Bug gcov-profile/49340] read_couts_file() not called for -fbranch-probabilities
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49340 --- Comment #2 from Mike Frysinger vapier at gentoo dot org --- seems to work with gcc-4.9 at least ?
[Bug target/63691] GCC 4.9.x fails to build GLIBC 2.20 on HPPA
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63691 --- Comment #9 from Andreas Schwab sch...@linux-m68k.org --- You don't need a link test, you only need to check whether there is a reference to abort.
[Bug c++/63705] New: [4.8/4.9/5 Regression] function template specialization outside namespace rejected with C++11
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63705 Bug ID: 63705 Summary: [4.8/4.9/5 Regression] function template specialization outside namespace rejected with C++11 Product: gcc Version: 5.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org Please consider: markus@x4 ~ % cat te.ii namespace N { template typename T1 void f (const T1) {} } template void N::f (const int) {} markus@x4 ~ % clang++ -std=c++11 -c te.ii markus@x4 ~ % icpc -std=c++11 -c te.ii markus@x4 ~ % g++ -std=c++11 -c te.ii te.ii:10:16: error: specialization of ‘templateclass T1 void N::f(T1)’ in different namespace [-fpermissive] N::f (const int) {} ^ te.ii:5:1: error: from definition of ‘templateclass T1 void N::f(T1)’ [-fpermissive] f (const T1) {} ^ markus@x4 ~ % clang++ -c te.ii te.ii:10:4: warning: first declaration of function template specialization of 'f' outside namespace 'N' is a C++11 extension [-Wc++11-extensions] N::f (const int) {} ^ te.ii:5:1: note: explicitly specialized declaration is here f (const T1) {}
[Bug libstdc++/63706] New: stl_heap.h:make_heap()'s worst time complexity doesn't conform with C++ standard
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63706 Bug ID: 63706 Summary: stl_heap.h:make_heap()'s worst time complexity doesn't conform with C++ standard Product: gcc Version: 4.9.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: tomytsai at gmail dot com Hi, In current (4.9.0 and the latest collection) libstdc++ source code, the make_heap() function has the worst time complexity of O(n log n), while C++ standard requires This algorithm makes at most 3 * (finish - start) comparisons., i.e. O(n) time complexity. This topic has been discussed in some related links: http://stackoverflow.com/questions/24475056/is-libcs-implementation-of-stdmake-heap-nonconformant http://llvm.org/bugs/show_bug.cgi?id=20161 As a result, llvm3.4 has added a new function, __sift_down(), to support the worst time O(n) time complexity for make_heap(). Their implementation can be found at http://llvm.org/svn/llvm-project/libcxx/trunk/include/algorithm (search for make_heap()) Currently, the make_heap() implementation in libstdc++ is usually working well with practical data. However we could make up some pathetic cases to make it run with O(n lg n) comparisons, as below. If we split data into 4 equal parts: [ A | B | C | D ] and put the largest n/4 elements in part B, from large to small. The rest of data we don't care about the order. Then the data looks like: [ A | B: [largest] [2nd largest] [3rd] [n/4-th largest] | C | D ] If we call make_heap() on this data, based on the current implementation, it will go backwards from the end of part B, to the start of part A. Then what happens is that: since the elements in part B are the top n/4 elements of all data, they will be 1. temporarily located to a slot in the [ C | D ] area, and then 2. pushed up all the way to the first element (since they are the max element encountered so far). Step 2 takes O(log n) steps for each element. Hence, for the pathetic data above, if we do make_heap(), processing part B already takes O(n/4 * log n) data comparison and moves. This doesn't conform with the C++ standard, which requires O(n) time complexity. One possible solution is, as llvm 3.4 does above, to provide a sift_down() function to support the worst time O(n) time complexity. (In addition, like llvm 3.4, the sift_down() function is also useful for supporting the pop_heap() function. Although it has the same asymptotic complexity as current __adjust_heap() in gcc's libstdc++, but it only has one-pass top-down search, and so has a better cache performance) Thanks! Tomy
[Bug c++/63705] function template specialization outside namespace rejected with C++11
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63705 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added Target Milestone|--- |5.0 --- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org --- Not a regression.
[Bug c++/63705] function template specialization outside namespace rejected with C++11
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63705 --- Comment #2 from Markus Trippelsdorf trippels at gcc dot gnu.org --- See also: https://groups.google.com/a/isocpp.org/forum/#!topic/std-discussion/ZCRb8iZwtos
[Bug target/59888] Darwin linker error illegal text-relocation with -shared
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59888 --- Comment #13 from Francois-Xavier Coudert fxcoudert at gcc dot gnu.org --- Might this be related with PR63622 (and thus PR63580)?
[Bug target/63691] GCC 4.9.x fails to build GLIBC 2.20 on HPPA
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63691 --- Comment #10 from Aaro Koskinen aaro.koskinen at iki dot fi --- (In reply to Andreas Schwab from comment #9) You don't need a link test, you only need to check whether there is a reference to abort. A simple test: $ cat pr63691.c void foo (int a, char *p) { if (a == 0) return; *p = 1; } int main (int argc, char **argv) { foo(argc, 0); return 0; } $ hppa-linux-gnu-gcc -nostdlib -O2 pr63691.c /home/aaro/los/work/parisc/toolchain/lib/gcc/hppa-linux-gnu/4.9.2/../../../../hppa-linux-gnu/bin/ld: warning: cannot find entry symbol _start; defaulting to 00010054 /tmp/ccWAW31H.o: In function `main': (.text.startup+0x14): undefined reference to `abort' collect2: error: ld returned 1 exit status abort() reference is gone if you compile GCC with the patch Dave posted here: https://www.sourceware.org/ml/libc-alpha/2014-10/msg00823.html BTW, I think this optimization also breaks PALO (PA-RISC bootloader). There the program actually wants to access page zero.
[Bug target/63651] Lot of failures in obj(c|-c++) with yosemite
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63651 Francois-Xavier Coudert fxcoudert at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2014-11-01 CC||fxcoudert at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Francois-Xavier Coudert fxcoudert at gcc dot gnu.org --- Some NSObject methods that used to return (id) now return (instancetype). Only NSObject has this, and the list includes: self, retain, autorelease, init, new, alloc* The What's new in OS X Yosemite document at https://developer.apple.com/Library/mac/releasenotes/MacOSX/WhatsNewInOSX/WhatsNewInOSX.pdf says: Many frameworks on OS X have adopted small interface changes that take advantage of modern Objective-C syntax: […] Initialization methods are updated to have a return value of instancetype instead of id. It is documented further in Apple docs, or in clang here: http://clang.llvm.org/docs/LanguageExtensions.html I suppose as a first approach, we could make it equivalent to id.
[Bug c++/63705] function template specialization outside namespace rejected with C++11
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63705 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2014-11-01 Ever confirmed|0 |1 --- Comment #3 from Markus Trippelsdorf trippels at gcc dot gnu.org --- Possible (untested) fix: diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 2cf10f4..1171b5d 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -780,15 +780,15 @@ check_specialization_namespace (tree tmpl) error (specialization of %qD must appear at namespace scope, tmpl); return false; } - if (is_associated_namespace (current_namespace, tpl_ns)) -/* Same or super-using namespace. */ -return true; - else + if (!is_associated_namespace (current_namespace, tpl_ns) + (cxx_dialect cxx11)) { permerror (input_location, specialization of %qD in different namespace, tmpl); permerror (input_location, from definition of %q+#D, tmpl); return false; } + + return true; } /* SPEC is an explicit instantiation. Check that it is valid to
[Bug libgcc/56846] _Unwind_Backtrace on ARM and noexcept
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56846 --- Comment #10 from npl at chello dot at --- Hi, thanks for the fix, any chance of adding this to 4.9 and 4.8 aswell?
[Bug target/63691] GCC 4.9.x fails to build GLIBC 2.20 on HPPA
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63691 John David Anglin danglin at gcc dot gnu.org changed: What|Removed |Added Status|RESOLVED|REOPENED Last reconfirmed||2014-11-01 CC||danglin at gcc dot gnu.org Resolution|INVALID |--- Ever confirmed|0 |1 --- Comment #11 from John David Anglin danglin at gcc dot gnu.org --- There is a reference to abort and abort is part of stdlib.
[Bug c++/63705] function template specialization outside namespace rejected with C++11
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63705 --- Comment #4 from Jonathan Wakely redi at gcc dot gnu.org --- PR 56480 ?
[Bug c++/63705] function template specialization outside namespace rejected with C++11
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63705 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |DUPLICATE --- Comment #5 from Markus Trippelsdorf trippels at gcc dot gnu.org --- (In reply to Jonathan Wakely from comment #4) PR 56480 ? Yes. Thanks. *** This bug has been marked as a duplicate of bug 56480 ***
[Bug c++/56480] Explicit specialization in a namespace enclosing the specialized template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added CC||trippels at gcc dot gnu.org --- Comment #4 from Markus Trippelsdorf trippels at gcc dot gnu.org --- *** Bug 63705 has been marked as a duplicate of this bug. ***
[Bug c++/56480] Explicit specialization in a namespace enclosing the specialized template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added Keywords||rejects-valid CC||jason at gcc dot gnu.org --- Comment #5 from Markus Trippelsdorf trippels at gcc dot gnu.org --- Two possible fixes: 1) diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 2cf10f442f68..09a545496fa8 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -785,8 +785,12 @@ check_specialization_namespace (tree tmpl) return true; else { - permerror (input_location, specialization of %qD in different namespace, tmpl); - permerror (input_location, from definition of %q+#D, tmpl); + if (cxx_dialect cxx11) + { + permerror (input_location, specialization of %qD in different +namespace, tmpl); + permerror (input_location, from definition of %q+#D, tmpl); + } return false; } } 2) diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 2cf10f442f68..1171b5d736d5 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -780,15 +780,15 @@ check_specialization_namespace (tree tmpl) error (specialization of %qD must appear at namespace scope, tmpl); return false; } - if (is_associated_namespace (current_namespace, tpl_ns)) -/* Same or super-using namespace. */ -return true; - else + if (!is_associated_namespace (current_namespace, tpl_ns) + (cxx_dialect cxx11)) { permerror (input_location, specialization of %qD in different namespace, tmpl); permerror (input_location, from definition of %q+#D, tmpl); return false; } + + return true; } /* SPEC is an explicit instantiation. Check that it is valid to The following testcases: g++.dg/template/spec17.C g++.dg/template/spec25.C g++.dg/template/spec36.C g++.old-deja/g++.ns/template13.C g++.old-deja/g++.pt/explicit73.C g++.old-deja/g++.pt/lookup10.C would have to be updated.
[Bug ada/63656] a-tags.adb:82:04: warning: types for unchecked conversion have different sizes
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63656 --- Comment #2 from Arkadiusz Miskiewicz arekm at maven dot pl --- Hm, isn't it already selected properly? --- gcc-4.9.2/gcc/ada/gcc-interface/Makefile.in~2014-11-01 15:07:27.0 +0100 +++ gcc-4.9.2/gcc/ada/gcc-interface/Makefile.in 2014-11-01 15:11:17.921591578 +0100 @@ -349,12 +349,18 @@ # picks up the right files. For a given target this must be coherent # with MULTILIB_DIRNAMES defined in gcc/config/target/t-*. +$(warning XXX PRE ENTERED) ifeq ($(strip $(filter-out %x86_64, $(target_cpu))),) + $(warning XXX ENTERED) ifeq ($(strip $(MULTISUBDIR)),/32) target_cpu:=i686 +$(warning XXX TARGET CPU i686) else ifeq ($(strip $(MULTISUBDIR)),/x32) target_cpu:=x32 + $(warning XXX TARGET CPU x32) +else + $(warning XXX TARGET CPU NONE) endif endif endif and while building: ../gcc-interface/Makefile:352: XXX PRE ENTERED ../gcc-interface/Makefile:354: XXX ENTERED ../gcc-interface/Makefile:357: XXX TARGET CPU i686 a bit more of log: http://ixion.pld-linux.org/~arekm/gcc-ada-log1.txt and full log: http://ixion.pld-linux.org/~arekm/gcc-ada-log-long.txt
[Bug bootstrap/63573] [5 Regression] libgo: ICE building libgo on powerpc-linux-gnu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63573 --- Comment #8 from Jan Hubicka hubicka at ucw dot cz --- There is a pasto in the previous patch. This is what I am testing. Index: calls.c === --- calls.c(revision 216942) +++ calls.c(working copy) @@ -1210,6 +1211,15 @@ initialize_argument_information (int num TREE_CODE (base) != SSA_NAME (!DECL_P (base) || MEM_P (DECL_RTL (base) { + /* Argument setup code may have copied the value to register. We + that optimization now because the tail call code must use + the original location. */ + if (TREE_CODE (args[i].tree_value) == PARM_DECL + !MEM_P (DECL_RTL (args[i].tree_value)) + DECL_INCOMING_RTL (args[i].tree_value) + MEM_P (DECL_INCOMING_RTL (args[i].tree_value))) +set_decl_rtl (args[i].tree_value, DECL_INCOMING_RTL (args[i].tree_value)); + mark_addressable (args[i].tree_value); /* We can't use sibcalls if a callee-copied argument is
[Bug ipa/63671] [5 Regression] 21% tramp3d-v4 performance hit due to -fdevirtualize
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63671 Jan Hubicka hubicka at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2014-11-01 Assignee|unassigned at gcc dot gnu.org |hubicka at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #4 from Jan Hubicka hubicka at gcc dot gnu.org --- There are not many virtual functions in tramp3d hot paths, right? I suppose it may be just inlining into virtual functions that are removed afterwards. I will try to debug this.
[Bug c++/63707] New: Brace initialization of array sometimes fails if no copy constructor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63707 Bug ID: 63707 Summary: Brace initialization of array sometimes fails if no copy constructor Product: gcc Version: 4.9.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: john.lindgren at aol dot com Created attachment 33859 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33859action=edit Test case 1 Brace-initializing an array of a class without a public copy constructor gives an error in some cases but succeeds in others. After discussing the problem here [1], I believe this is bug in GCC. Attached are three test cases: test1-fails.cc: Initialization of member array of non-literal type (error) test2-works.cc: Initialization of member array of literal type (compiles) test3-works.cc: Initialization of static array of non-literal type (compiles) test4-works.cc: Initialization of single member of non-literal type (compiles) The error given is: $ g++ -Wall -Wextra -std=c++11 -c test1-fails.cc test1-fails.cc: In constructor ‘Parent::Parent()’: test1-fails.cc:13:35: error: use of deleted function ‘Child::Child(const Child)’ Parent () : children {{5}, {7}} {} ^ test1-fails.cc:7:5: note: declared here Child (const Child ) = delete; ^ $ g++ --version g++ (GCC) 4.9.1 20140903 (prerelease) By way of comparison, Clang 3.5.0 compiles all three test cases without errors. [1] http://stackoverflow.com/questions/26685551/how-to-initialize-array-of-classes-with-deleted-copy-constructor-c11
[Bug c++/63707] Brace initialization of array sometimes fails if no copy constructor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63707 --- Comment #1 from John Lindgren john.lindgren at aol dot com --- Created attachment 33860 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33860action=edit Test case 2
[Bug c++/63707] Brace initialization of array sometimes fails if no copy constructor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63707 --- Comment #2 from John Lindgren john.lindgren at aol dot com --- Created attachment 33861 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33861action=edit Test case 3
[Bug c++/63707] Brace initialization of array sometimes fails if no copy constructor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63707 --- Comment #3 from John Lindgren john.lindgren at aol dot com --- Created attachment 33862 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33862action=edit Test case 4
[Bug c++/63707] Brace initialization of array sometimes fails if no copy constructor
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63707 John Lindgren john.lindgren at aol dot com changed: What|Removed |Added Attachment #33860|0 |1 is obsolete|| --- Comment #4 from John Lindgren john.lindgren at aol dot com --- Created attachment 33863 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33863action=edit Corrected test case 2 Corrected test case 2 (previous was identical to test case 1).
[Bug ada/63708] New: [5.0 Regression] FAIL: cxf3002
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63708 Bug ID: 63708 Summary: [5.0 Regression] FAIL: cxf3002 Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: ada Assignee: unassigned at gcc dot gnu.org Reporter: danglin at gcc dot gnu.org Host: hppa-unknown-linux-gnu Target: hppa-unknown-linux-gnu Build: hppa2.0w-hp-hpux11.11 BUILD cxf3002.adbgnatmake --GCC=/home/dave/gnu/gcc/objdir/gcc/xgcc -B/home/dave/gnu/gcc/objdir/g cc/ -gnatws -O2 -gnat95 -I/home/dave/gnu/gcc/objdir/gcc/testsuite/ada/acats/support cxf3002.adb -largs --GCC=/home/dave/gnu/gcc/objdir/gcc/xgcc -B/home/dave/gnu/gcc/objdir/gcc/ /home/dave/gnu/gcc/objdir/gcc/xgcc -c -B/home/dave/gnu/gcc/objdir/gcc/ -gnatws -O2 -gnat95 -I/home/dave/gnu/gcc/objdir/gcc/testsuite/ada/acats/support cxf3002.a dbgnatbind -I/home/dave/gnu/gcc/objdir/gcc/testsuite/ada/acats/support -x cxf3002. ali gnatlink cxf3002.ali -O2 --GCC=/home/dave/gnu/gcc/objdir/gcc/xgcc -B/home/dave/g nu/gcc/objdir/gcc/ RUN cxf3002 ,.,. CXF3002 ACATS 2.5 14-11-01 02:51:48 CXF3002 Check that the functionality contained in package Ada.Wide_Text_IO.Editing is available and produces correct results. * CXF3002 Picture String # 2reported as being invalid. * CXF3002 Picture String # 2reported as being invalid. * CXF3002 Picture String # 2reported as being invalid. * CXF3002 Picture String # 2reported as being invalid. * CXF3002 Picture String # 2reported as being invalid. * CXF3002 Picture String # 2reported as being invalid. CXF3002 FAILED . FAIL: cxf3002 Revision 215252 was ok.
[Bug ada/62235] segmentation fault on Ada 2012 code
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62235 simon at pushface dot org changed: What|Removed |Added CC||simon at pushface dot org --- Comment #3 from simon at pushface dot org --- A workround appears to be to replace generic type Record_Type; -- It should be an untagged record for C compatibility package RDF.Auxilary.Handled_Record is type Access_Type is access Record_Type with Convention=C; by generic type Record_Type; -- It should be an untagged record for C compatibility type Record_Type_Access is access Record_Type; -- should have convention C package RDF.Auxilary.Handled_Record is subtype Access_Type is Record_Type_Access; (I guess the new formal_incomplete_type_declaration stuff is a bit fragile)
[Bug target/63709] New: msp430 Y constraint generates unacceptable constant in large mode
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63709 Bug ID: 63709 Summary: msp430 Y constraint generates unacceptable constant in large mode Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: pab at pabigot dot com Building trunk gcc at SVN 217005 produces the following from make all-target: # If this is the top-level multilib, build all the other # multilibs. /tmp/gcc/./gcc/xgcc -B/tmp/gcc/./gcc/ -B/usr/local/gcc-msp430-elf-dev-20141101/msp430-elf/bin/ -B/usr/local/gcc-msp430-elf-dev-20141101/msp430-elf/lib/ -isystem /usr/local/gcc-msp430-elf-dev-20141101/msp430-elf/include -isystem /usr/local/gcc-msp430-elf-dev-20141101/msp430-elf/sys-include-g -O2 -mlarge -O2 -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -Os -ffunction-sections -fdata-sections -mhwmult=none -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -Dinhibit_libc -Os -ffunction-sections -fdata-sections -mhwmult=none -I. -I. -I../../.././gcc -I/opt/gcc/libgcc -I/opt/gcc/libgcc/. -I/opt/gcc/libgcc/../gcc -I/opt/gcc/libgcc/../include -DHAVE_CC_TLS -DUSE_EMUTLS -o unwind-dw2.o -MT unwind-dw2.o -MD -MP -MF unwind-dw2.dep -fexceptions -c /opt/gcc/libgcc/unwind-dw2.c -fvisibility=hidden -DHIDE_EXPORTS /tmp/ccdnPFDw.s: Assembler messages: /tmp/ccdnPFDw.s:3439: Error: value 0xfff8 out of extended range. make[3]: *** [unwind-dw2.o] Error 1 The offending generated code is: .LBB296: .loc 2 208 0 CMP.B #0, 148(R5) { JEQ .L400 .loc 2 209 0 BISX.A #-524288, 96(R10) .LVL485: BRA #.L379 .LVL486: .L400: .loc 2 211 0 ANDX.A #524287, 96(R10) .LVL487: Either gcc needs to truncate values to fit within the 20-bit/16-bit limits or the check in binutils needs to be relaxed.
[Bug c/61534] Wlogical-op should not warn when either operand comes from macro expansion
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61534 Manuel López-Ibáñez manu at gcc dot gnu.org changed: What|Removed |Added Keywords||diagnostic Depends on||43486 --- Comment #5 from Manuel López-Ibáñez manu at gcc dot gnu.org --- If we take gcc/testsuite/gcc.dg/pr40172-3.c (which is XFAIL) extern int xxx; #define XXX xxx int test (void) { if (!XXX xxx) return 4; else return 0; } The big hurdle is that !XXX becomes XXX == 0, but it has the location of !, which is not virtual. If we look at the argument of the expression, then XXX is actually a var_decl, whose location corresponds to the declaration and not the use, and it is not virtual either. This is PR43486.