Version V7.3 von HP C ist jetzt verfügbar für OpenVMS Alpha ab V7.3-2. Es wird in der Juni-Ausgabe der Software Product Library (SPL) enthalten sein und steht jetzt schon zum Download für Abonnenten der SPL zur Verfügung.
Diese Version behebt im wesentlichen Fehler.
Es gibt zwei neue Features, die dazu gedacht sind, es kompatibler mit der Kommandozeile der entsprechenden C-Compiler-Version für I64 zu machen:
- Der Qualifier /CHECK akzeptiert jetzt die optionalen Schlüsselwörter ALL und NONE. Dies dient der Konsistenz mit ähnlichen Qualifiern und anderen VMS-Compilern. Es erlaubt, alle Checks bis auf die aufgeführten anzuschalten, ohne die Namen aller unterstützten Checks anführen zu müssen. Zum Beispiel schaltet /CHECK=(ALL,NOBOUNDS) alle Laufzeitprüfungen bis auf die der Schrankenüberprüfung an.
- Der neue Qualifier /CHECK=ARG_INFO, der nur auf I64 existiert, wird erkannt und ignoriert (mit optionaler QUALNA-Diagnostik). Dies soll die Wartbarkeit von für Alpha und I64 gemeinsam genutzten Bau-Skripten verbessern.
Eine Reihe von Fehlern wurden in dieser Version behoben, einschließlich:
- Einige Fälle von Compiler-Crashes und falsch optimiertem Code wurden behoben.
- Der Compiler erzeugt nun einen Fehler RETPARMCONST, wenn eine Konstante als Parameter einer eingebauten Funktion verwendet wird, der die Adresse einer Variablen angibt, in der ein Ergebniswert gespeichert wird (z.B. der zweite Parameter von __PAL_INSQHIL). Das ist so, weil die Adresse einer Variablen nie eine Kompilierzeit-Konstante sein kann. Vorher konnte die Angabe einer Konstanten manchmal den Compiler crashen.
- Der Compiler erkennt jetzt die Benutzung von sehr grossen Ganzzahlen in #line Direktiven. Per C99 muss eine Implementation nur Werte bis 2147483647 annehmen. Grössere Werte führen jetzt zu einer Warnung LINETOOLARGE. Eine optionale informelle Meldung XTRALARGE kann für Werte jenseits 32767 angefordert werden, was die C90-Anforderung ist.
- Der Compiler generiert keine störenden Warungen mehr, wenn konstante Ausdrücke in den wegen "short-circuit" nicht ausgewerteten Teilen von konstanten Ausdrücken mit "||" oder "&&" Operatoren vorkommen. Vorher unterdrückte nur der ternäre "?:" Operator in konstanten Ausdrücken Warnungen über seine nicht ausgewerteten Operanden.
- Die optionale FALLOFFEND Diagnostik wird nun korrekt erkannt und in mehr Fällen gemeldet, besonders in "inlined" Funktionen. Programme, die vorher problemlos übersetzt wurden, können bei Anschalten dieser Diagnostik nun diese melden.
- Die Auswertung von zusammengesetzten Literalen mit Seiteneffekten konnte manchmal diese Seiteneffekte mehrfach ausführen, je nachdem, wie das zusammengesetzte Literal verwendet wurde. In Argumenten von printf konnten die Seiteneffekte von zusammengesetzten Literalen zum Beispiel dreimal ausgeführt werden.
- Der Wert des vordefinierten Makros __STDC__ wird jetzt standardmäßig und bei /STANDARD=RELAXED auf 2 gesetzt. Der HP C V7.1 Compiler setzte dieses Makro in diesen Fällen auf 1. Dies ist ein Fahler, weil laut C Standard der Wert 1 eine normgerechte Implementation anzeigen soll. Mit /STANDARD=RELAXED akzeptiert der Compiler allerdings Erweiterungen, die verhindern, dass es sich um eine solche handelt. Wenn /STANDARD mit einem anderen Wert als RELAXED verwendet wird, ist der Wert von __STDC__ derselbe wie im V7.1 Release.
- Gewisse ungültige Struktur-Deklarationen konnten mit /STANDARD=VAXC zu einem Compiler-Crash führen. Dieses Problem wurde behoben, und der Compiler gibt nun eine Warnung aus.
- Wenn ein Compilerlauf gewisse Diagnostiken in den -E- Level hob und sie später ausschaltete, konnte der Compiler crashen. Dieses Problem wurde behoben.
- Wenn ein verschachteltes Strukturelement an eine Funktion übergeben wurde, deren Linkage durch eine #pragma Direktive geändert wurde, konnte der Compiler crashen. Dieses Problem wurde behoben.
HP C V7.3 V7.3-009 bietet limitierte Unterstützung dafür, mehrere Versionen des Compilers auf demselben Konten zu installieren und zu benutzen. Die Details hierzu finden sich im Installationshandbuch und den Release Notes.
Original auf www.openvms.org |