clang V3.2

24/06/2012 - 20:11 von Helmut Schellong | Report spam
Hallo,

der C-Compiler clang ist mittlerweile erwachsen geworden.
FreeBSD 9.0 hat ihn schon (V3.0), und ab Release 10.0 wird er gcc ablösen.

Man beachte, daß er weitgehend C2011 beherrscht ab V3.2.
Unten wurde ein großes Programm mit mehreren 10000 Zeilen getestet.
Unten ab der 8. warning hat clang glücklicherweise in keinem Fall Recht.


104] /usr/pkg/llvm/bin/clang32 --analyze -std=c11 -I/u/l/h bsh.c

bsh.c:1519:4: warning: Value stored to 'r' is never read
r= bsh(argc, &argv);
^ ~~~~~~~~~~~~~~~~
bsh.c:1899:15: warning: Value stored to 'c' is never read
c=Execute(c, --ai, ai0, ap=ap0); goto A0END;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bsh.c:2620:22: warning: Value stored to 'nck' is never read
Offs=-1; nck=0;/*=offs*/
^ ~
bsh.c:2800:14: warning: Value stored to 'pn' is never read
pn=name=A[0]; s1="a-"; path=s2=N; pnt=0;
^ ~~~~~~~~~
bsh.c:3991:17: warning: Value stored to 'bmode' is never read
if (r=='H') bmode=0; /*HERE*/
^ ~
bsh.c:3983:18: warning: Value stored to 'bmode' is never read
if (fdf&256) bmode=1;
^ ~
bsh.c:6876:36: warning: Value stored to 'cp' is never read
if (!(r=Ch_Dir(S))) { cp=S; break; }
^ ~
bsh.c:1803:40: warning: The right operand of '-' is a garbage value
nw= lseekE(FdPw, 0L, SEEK_CUR) - posw;
^ ~~~~
bsh.c:4412:14: warning: Branch condition evaluates to a garbage value
while (++i, *++n) if (!Cnam[*n]||i>=NAMLEN) goto NCR;
^ ~~~~
In file included from bsh.c:943:
./mod/kzed.c:270:13: warning: Address of stack memory associated with local variable 'zeile2'
is still referred to by the global variable 'Zeile2' upon returning to the caller. This
will be a dangling reference
return (zi);
^
bsh.c:4635:17: warning: Dereference of null pointer (loaded from field 'bmem')
vp->p= *vap->bmem+vap->bp;
^ ~~~~
bsh.c:6700:12: warning: Branch condition evaluates to a garbage value
if (prl.name&&!Exe) /*ltoa_F(pfv, prl.from),*/
^~~~~~~~



Mit freundlichen Grüßen
Helmut Schellong var@schellong.biz
www.schellong.de www.schellong.com www.schellong.biz
http://www.schellong.de/c.htm
 

Lesen sie die antworten

#1 Rainer Weikusat
24/06/2012 - 21:18 | Warnen spam
Helmut Schellong writes:
der C-Compiler clang ist mittlerweile erwachsen geworden.
FreeBSD 9.0 hat ihn schon (V3.0), und ab Release 10.0 wird er gcc
ablösen.



Ich habe LLVM mit geringen Interesse mitverfolgt (existiert aus keinen
anderen Grund als weil Apple - verdammt nochmal !!1 - endlich einen
proprietaeren Objective-C-Compiler haben moechte, allerdings so gratis
wie moeglich). Allerdings nur bis zu dem Punkt, an dem jemand da eine
Heuristik implementiert hat, um etwas, dass wie eine Kopierschleife
aussieht, moeglichst durch einen entsprechenden Bibliotheksaufruf zu
ersetzten, der eine doppelt-indirekte Verzweigung nach sonstwohin
benoetig und dann typischerweise einen riesigen Berg Code ausfuehrt,
der sich fuer den Fall von 'extrem grossen Datenmengen' die bewegt
werden muessen, amortisieren soll (was natuerlich noch nicht mal
garantiert ist). An diesem Punkt habe ich das als 'Rudel planloser
Akademiker mit einer Vollmeise' abgehakt und mich lieber um andere
Dinge gekuemmert ...

Ähnliche fragen