clang zeigt auch Negativa

24/06/2015 - 21:21 von Helmut Schellong | Report spam
Ich betreibe nach langer Zeit wieder intensive private
C-Entwicklungen.
Im Beruf gcc 4.x für Coldfire.
Nun privat unter FreeBSD 10.1 clang.

Zwei Dinge kann ich berichten:

Die Doku zu clang ist sehr dünn.
Auch das Handbuch auf der Webseite.
Auch clang --help hilft da nicht.
Ich bin dazu übergegangen, die gcc-Doku zu lesen,
um clang-Optionen herauszufinden.

clang verwendet KEINE Sprungtabelle, falls die
case 3: case 4: case 5: .. case 66: case 67:
nicht um 1 steigend sind, sondern beispielsweise
alle(!) um 4 steigend sind.

jmpq *.LJTI4_0(,%rcx,8)

Vorstehend ein Tabellensprung - nur bei 1er-Steigung.
Vor etlichen Jahren (vielleicht 15) hat gcc schon
in Fàllen von 2 4 8 etc. %rcx 1 2 3 Bit >>geshiftet, um
die Distanz zu normieren.
clang zieht es leider vor, 50 Vergleiche zu machen,
if (s=) ...
if (s=) ...
...
if (s=T) ...
if (s=U) ...
bis die richtige Stelle erreicht ist.
Stàrkere Optimierung àndert nichts daran.
Ich hatte einen 4er-Abstand, um bei 3 Werten
evtl. Bits 1 2 3 hinzuzufügen: case HULKO|2:
Dies Konzept kann ich mir abschminken.

Vorteile von clang sind bekanntlich:
Schnelle Kompilierung.
Vorzügliche Ausgabe von Meldungen (error, warning, etc.).
Weitgehende Beherrschung von C11!


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 Claus Reibenstein
24/06/2015 - 22:39 | Warnen spam
Helmut Schellong schrieb:

[clang]



Hat mit C genau was zu tun?

Gruß
Claus

Ähnliche fragen