This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/81278] New: [8 Regression] -fcompare-debug failure (length)
- From: "trippels at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 02 Jul 2017 12:45:41 +0000
- Subject: [Bug debug/81278] New: [8 Regression] -fcompare-debug failure (length)
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81278
Bug ID: 81278
Summary: [8 Regression] -fcompare-debug failure (length)
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: debug
Assignee: unassigned at gcc dot gnu.org
Reporter: trippels at gcc dot gnu.org
Target Milestone: ---
Created attachment 41661
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41661&action=edit
unreduced testcase
trippels@gcc2-power8 llvm_build % cat Metadata.ii
template <typename _ForwardIterator1, typename _ForwardIterator2>
void iter_swap(_ForwardIterator1, _ForwardIterator2);
template <typename _RandomAccessIterator>
_RandomAccessIterator __rotate(_RandomAccessIterator p1,
_RandomAccessIterator p2) {
if (p1 == p2)
return 0;
int a = p2 - p1;
if (a == -a)
for (; p2;)
iter_swap(0, 0);
return p2;
}
struct A {
char buffer[0];
template <typename T> char *combine_data(int, char *, int, T);
template <typename T, typename... Ts>
void combine(int p1, char *p2, int, T p4, Ts... p5) {
p2 = combine_data(p1, p2, 0, p4);
combine(0, p2, 0, p5...);
}
void combine(int, char *p2, int) {
char *b = p2;
__rotate(buffer, b);
}
};
template <typename... Ts> void hash_combine(Ts... p1) {
A c;
c.combine(0, 0, p1...);
}
template <typename KeyInfoT> struct B {
template <class LookupKeyT> void find_as(LookupKeyT p1) {
LookupBucketFor(p1, 0);
}
template <typename LookupKeyT> void getHashValue(LookupKeyT &p1) {
KeyInfoT::getHashValue(p1);
}
template <typename LookupKeyT> void LookupBucketFor(LookupKeyT p1, int) {
getHashValue(p1);
}
};
struct C;
struct D {
B<C> TheMap;
template <class LookupKeyT> void find_as(LookupKeyT p1) {
TheMap.find_as(p1);
}
};
template <typename, typename> struct I : D {};
struct F {
enum {} getMetadataID0;
};
struct G {
int MIType;
int Line;
F File;
F *Elements;
G(int);
void getHashValue() { hash_combine(0, Line, File, Elements); }
};
struct C {
using KeyTy = G;
static int getHashValue(KeyTy p1) { p1.getHashValue(); }
};
using DIMacroFileInfo = C;
struct H {
I<int *, DIMacroFileInfo> DIMacroFiles;
};
template <class T, class InfoT>
void getUniqued(I<T, InfoT> p1, typename InfoT::KeyTy p2) {
p1.find_as(p2);
}
template <class T, class InfoT> void uniquifyImpl(T *, I<T *, InfoT> p2) {
getUniqued(p2, 0);
}
int d;
void uniquify() {
switch (0) {
case 0:
H e;
uniquifyImpl(&d, e.DIMacroFiles);
}
}
trippels@gcc2-power8 llvm_build % /home/trippels/gcc_8/usr/local/bin/g++
--save-temps -c -O3 -fcompare-debug Metadata.ii
g++: error: Metadata.ii: -fcompare-debug failure
trippels@gcc2-power8 llvm_build % diff -u Metadata.gkd Metadata.gk.gkd
--- Metadata.gkd 2017-07-02 12:44:48.573295315 +0000
+++ Metadata.gk.gkd 2017-07-02 12:44:48.613296247 +0000
@@ -101,7 +101,7 @@
(insn # 0 0 (set (reg:DI 5 5)
(const_int 0 [0])) "Metadata.ii":19# {*movdi_internal64}
(nil))
-(insn # 0 0 (set (reg:DI 29 29 [orig:121 p1$8 ] [121])
+(insn # 0 0 (set (reg:DI 29 29 [orig:131 p1$8 ] [131])
(zero_extend:DI (mem/c:SI (plus:DI (reg/f:DI 1 1)
(const_int 88 [0x58])) [ D.xxxx+8 S4 A64])))#
{zero_extendsidi2}
(nil))
@@ -137,8 +137,8 @@
(expr_list:SI (use (reg:DI 7 7))
(nil))))))))
(insn # 0 0 (set (reg:SI 7 7)
- (reg:SI 29 29 [orig:121 p1$8 ] [121])) "Metadata.ii":19#
{*movsi_internal1}
- (expr_list:REG_DEAD (reg:SI 29 29 [orig:121 p1$8 ] [121])
+ (reg:SI 29 29 [orig:131 p1$8 ] [131])) "Metadata.ii":19#
{*movsi_internal1}
+ (expr_list:REG_DEAD (reg:SI 29 29 [orig:131 p1$8 ] [131])
(nil)))
(insn # 0 0 (set (reg:DI 6 6)
(const_int 0 [0])) "Metadata.ii":19# {*movdi_internal64}
@@ -214,7 +214,7 @@
(expr_list:DI (use (reg:DI 7 7))
(nil))))))))
(insn # 0 0 (set (reg:CC 75 7 [148])
- (compare:CC (reg/f:DI 3 3 [orig:124 _8 ] [124])
+ (compare:CC (reg/f:DI 3 3 [orig:123 _8 ] [123])
(reg/f:DI 31 31 [144]))) "Metadata.ii":6# {*cmpdi_signed}
(nil))
(jump_insn # 0 0 (set (pc)
@@ -228,7 +228,7 @@
(note # 0 0 [bb 3] NOTE_INSN_BASIC_BLOCK)
(note # 0 0 NOTE_INSN_DELETED)
(insn:TI # 0 0 (set (reg:DI 31 31 [150])
- (minus:DI (reg/f:DI 3 3 [orig:124 _8 ] [124])
+ (minus:DI (reg/f:DI 3 3 [orig:123 _8 ] [123])
(reg/f:DI 31 31 [144]))) "Metadata.ii":8# {*subfdi3}
(nil))
(insn # 0 0 (set (reg:SI 9 9 [151])
@@ -291,9 +291,9 @@
(code_label # 0 0 9 (nil) [1 uses])
(note # 0 0 [bb 5] NOTE_INSN_BASIC_BLOCK)
(insn:TI # 0 0 (set (reg:CC 75 7 [153])
- (compare:CC (reg/f:DI 3 3 [orig:124 _8 ] [124])
+ (compare:CC (reg/f:DI 3 3 [orig:123 _8 ] [123])
(const_int 0 [0]))) "Metadata.ii":10# {*cmpdi_signed}
- (expr_list:REG_DEAD (reg/f:DI 3 3 [orig:124 _8 ] [124])
+ (expr_list:REG_DEAD (reg/f:DI 3 3 [orig:123 _8 ] [123])
(nil)))
(jump_insn # 0 0 (set (pc)
(if_then_else (eq (reg:CC 75 7 [153])