|
Disabled formatting and bumped up the Original Estimate to 2 hours.
Most instances of remark #3348 are caused by the compiler bug described in STDCXX-694.
Remarks #4296-D arithmetic operation on boolean type (695 occurrences) and #4297-D boolean value is used as array index (1220 occurrences) are useless even according to HP. We should silence them.
Out of the total of 780 occurrences of remark #4271-D type conversion may lose sign, only about 120 are distinct. 11 of these are emitted from the library headers so we should silence those first: $ grep "remark #4271" hpux-11.31-ia64-acc-6.15-15S-620132-log | grep "(TOPDIR)/include" | sort | uniq "$(TOPDIR)/include/algorithm.cc", line 612: remark #4271-D: type conversion may lose sign "$(TOPDIR)/include/algorithm", line 82: remark #4271-D: type conversion may lose sign "$(TOPDIR)/include/list", line 407: remark #4271-D: type conversion may lose sign "$(TOPDIR)/include/loc/_messages.cc", line 108: remark #4271-D: type conversion may lose sign "$(TOPDIR)/include/loc/_money_get.cc", line 323: remark #4271-D: type conversion may lose sign "$(TOPDIR)/include/loc/_money_get.cc", line 328: remark #4271-D: type conversion may lose sign "$(TOPDIR)/include/sstream", line 201: remark #4271-D: type conversion may lose sign "$(TOPDIR)/include/string.cc", line 539: remark #4271-D: type conversion may lose sign "$(TOPDIR)/include/string.cc", line 633: remark #4271-D: type conversion may lose sign "$(TOPDIR)/include/string.cc", line 646: remark #4271-D: type conversion may lose sign "$(TOPDIR)/include/string", line 613: remark #4271-D: type conversion may lose sign And another 11 come from our examples: $ grep "remark #4271" hpux-11.31-ia64-acc-6.15-15S-620132-log | grep "(TOPDIR)/examples" | sort | uniq "$(TOPDIR)/examples/manual/priority_queue.cpp", line 61: remark #4271-D: type conversion may lose sign "$(TOPDIR)/examples/manual/priority_queue.cpp", line 78: remark #4271-D: type conversion may lose sign "$(TOPDIR)/examples/manual/stack.cpp", line 67: remark #4271-D: type conversion may lose sign "$(TOPDIR)/examples/tutorial/graph.cpp", line 86: remark #4271-D: type conversion may lose sign "$(TOPDIR)/examples/tutorial/icecream.cpp", line 220: remark #4271-D: type conversion may lose sign "$(TOPDIR)/examples/tutorial/radix.cpp", line 56: remark #4271-D: type conversion may lose sign "$(TOPDIR)/examples/tutorial/sieve.cpp", line 45: remark #4271-D: type conversion may lose sign "$(TOPDIR)/examples/tutorial/sieve.cpp", line 47: remark #4271-D: type conversion may lose sign "$(TOPDIR)/examples/tutorial/sieve.cpp", line 51: remark #4271-D: type conversion may lose sign "$(TOPDIR)/examples/tutorial/teller.cpp", line 60: remark #4271-D: type conversion may lose sign "$(TOPDIR)/examples/tutorial/teller.cpp", line 64: remark #4271-D: type conversion may lose sign Fix merged in 4.2.x branch thus: http://svn.apache.org/viewcvs?view=rev&rev=637130
Here's nicer output from the duplicate
Latest HP aCC 6.16 builds produce many remarks making them exceedingly noisy: $ gunzip -c hpux-11.31-ia64-acc-6.16-12D-637671-log.gz | grep "remark #" | wc -l 4187 The breakdown by remark produced by the following script is in the table below: $ W=`gunzip -c hpux-11.31-ia64-acc-6.16-12D-637671-log.gz | sed -n "s/.* remark #\([1-9][0-9]*\)-D:.*/\1/p" | sort | uniq`; \
for w in $W; do \
printf "%s " $w && gunzip -c hpux-11.31-ia64-acc-6.16-12D-637671-log.gz | grep " remark #$w-D:" | wc -l; \
done
This is remotely related to the cadvise warnings issue.
Even though all the subtasks have been resolved we're still not done. We forgot about 32-bit builds... As the dump below shows, we have two noisy remarks to worry about there:
$ for r in `sed -n "s/.*: remark #\([1-9][0-9]*\)-.*/\1/p" hpux-11.31-ia64-acc-6.16-12d-650697.log | sort | uniq`; do \
n=`grep ": remark #$r-D" hpux-11.31-ia64-acc-6.16-12d-650697.log | wc -l`; \
printf "remark #$r: %4u\n" $n; \
done
remark #2177: 8
remark #2181: 22
remark #2550: 28
remark #2826: 6
remark #2961: 1
remark #4217: 3
remark #4219: 32
remark #4230: 2892 # 64 bit migration: conversion may cause target of pointers to have a different size
remark #4234: 29
remark #4239: 2
remark #4244: 4
remark #4248: 4
remark #4271: 692 # type conversion may lose sign
remark #4273: 18
remark #4278: 3
remark #4280: 1
remark #4282: 1
remark #4283: 3
remark #4298: 18
remark #4300: 27
remark #4315: 61
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-------- Original Message --------
Subject: Re: aCC 6.15 bogus remark #3348
Date: Fri, 11 Jan 2008 18:03:44 -0800 (PST)
From: Dennis Handly <dhandly@cup.hp.com>
To: sebor@roguewave.com, zhang@cup.hp.com
CC: acxx@cup.hp.com
>From: Martin Sebor <sebor@roguewave.com>
>We get over 800 of these remarks in each of our builds. I haven't
>analyzed them all but I did reduce one to a test case showing that
>at least in some instances the warning is wrong.
I've seen cases where it was right but we know what we are doing.
And a few broken cases.
struct S { enum { X }; };
template <class T>
int foo() {
const int X = 1;
return X;
}
int main() { return foo<int>(); }
aCC: HP C/aC++ B3910B A.06.14 [Feb 22 2007]
line 4: remark #3348-D: declaration hides constant "S::X" (declared at line 1)
const int X = 1;
detected during instantiation of "int foo<T>() [with T=int]" at line 8
So this is an enum X that is in struct S, not even in scope here.
We released a new compiler A.06.15 in Sept, with a patch A.06.16 in Dec.
>From: "Xiaohua zhang" <zhang@cup.hp.com>
>This bug has been fixed in ToT, you can try next week's weekly tarball to
Martin doesn't get them.
>From: Martin Sebor <sebor@roguewave.com>
>Btw., I just counted the number of remarks we get in stdcxx builds
>with aCC 6.15 and put together a breakdown. You might find the
>results interesting:
http://issues.apache.org/jira/browse/STDCXX-695
Well, interesting in that you haven't figured out that you should just
suppress some of them.
You do know that there is a command "cadvise report logs ..." that
can produce a nice summary??
#2177-D: 8 variable was declared but never referenced
#2550-D: 28 variable was set but never used
#2826-D: 44 parameter was never referenced
Suppress with +W2177,2550,2826.
#2181-D: 9 argument is incompatible with corresponding format string conversion
This is usually your bug.
#3235-D: 1 nonstandard conversion between pointer to function and pointer to data
This isn't legal. You must use a type pun, or bigger hammer.
#3348-D: 799 declaration hides constant or variable
As you said, most are bogus.
#4219-D: 250 64 bit migration: type conversion may truncate value
#4298-D: 124 64 bit migration: addition result could be truncated before cast to bigger sized type
#4299-D: 20 64 bit migration: multiply result could be truncated before cast to bigger sized type
Probably not helpful. We have removed it from +wlint.
#4244-D: 4 extern storage class used with a function definition
A useless coding standard that no right thinking developer would want.
We are thinking of hiding it.
#4296-D: 695 arithmetic operation on boolean type
#4297-D: 1220 boolean value is used as array index
Another two that might not be useful.
#4282-D: 34 virtual function is called from constructor/destructor
A comment in that these aren't virtual.
#4300-D: 60 Overflow while computing constant in left shift operation
Probably a bug.
#4315-D: 60 while loop without body, did you insert an extra ';'?
An attempt to find typos.