Cray C/C++ Reference Manual


Table of Contents
About This Manual
Related Publications
Obtaining Publications
Conventions
Reader Comments
1. Introduction
1.1. Setting up the C/C++ Programming Environment
1.2. General Compiler Description
1.2.1. Cray C++ Compiler
1.2.2. Cray Standard C Compiler
1.3. Standard Template Library (STL)
2. Compiler Commands
2.1. CC Command
2.2. cc Command
2.2.1. c89 Command
2.2.2. cpp Command
2.3. Command-line Options
2.4. Language (Standard Conformance)
2.4.1. -h [no]conform (CC, cc Commands), -h [no]stdc (cc Command)
2.4.2. -h cfront (CC Command)
2.4.3. -h [no]exceptions (CC Command)
2.4.4. -h [no]anachronisms (CC Command)
2.4.5. -h new_for_init (CC Command)
2.4.6. -h [no]tolerant (cc Command)
2.5. Language (Templates)
2.5.1. -h [no]autoinstantiate (CC Command)
2.5.2. -h instantiate=mode (CC Command)
2.5.3. -h [no]implicitinclude (CC Command)
2.5.4. -h remove_instantiation_flags (CC Command)
2.5.5. -h prelink_local_copy (CC Command)
2.5.6. -h prelink_copy_if_nonlocal (CC Command)
2.6. Language (Virtual Functions)
2.6.1. -h forcevtbl, -h suppressvtbl (CC Command)
2.7. Language (General)
2.7.1. -h keep=file ( CC Command)
2.7.2. -h restrict=args ( CC, cc Commands)
2.7.3. -h [no]calchars (CC, cc Commands)
2.7.4. -h [no]signedshifts (CC, cc Commands)
2.7.5. -h [no]stack (CC, cc Commands)
2.8. Optimization (General)
2.8.1. -O [level] (CC, cc, c89 Commands)
2.8.2. -h [no]aggress (CC, cc Commands)
2.8.3. -h [no]intrinsics (CC, cc Commands)
2.8.4. -h [no]pattern (CC, cc Commands)
2.8.5. -h [no]overindex (CC, cc Commands)
2.9. Optimization (Multi-Streaming Processor) (Deferred Implementation)
2.9.1. -h streamn (CC, cc Commands)
2.10. Optimization (Vector)
2.10.1. -h [no]ivdep (CC, cc Commands)
2.10.2. -h vectorn (CC, cc Commands)
2.10.3. -h [no]vsearch (CC, cc Commands)
2.11. Optimization (Task)
2.11.1. -h taskn (CC, cc Commands)
2.11.2. -h taskprivate (cc Command)
2.11.3. -h taskcommon, -h common (CCcc commands)
2.11.4. -h [no]taskinner (CC, cc Commands)
2.11.5. -h [no]threshold (CC, cc Commands)
2.12. Optimization (Inline)
2.12.1. -h inlinen (CC, cc Commands)
2.12.2. -h inlinefrom=file (CC, cc Commands)
2.13. Optimization (Scalar)
2.13.1. -h [no]interchange (CC, cc Commands)
2.13.2. -h scalarn (CC, cc Commands)
2.13.3. -h [no]align (CC, cc Commands)
2.13.4. -h [no]bl (CC, cc Commands)
2.13.5. -h [no]reduction (CC, cc Commands)
2.13.6. -h [no]zeroinc (CC, cc Commands)
2.14. Optimization (UNICOS/mk Specific)
2.14.1. -h pipelinen (CC, cc Commands)
2.14.2. -h [no]unroll (CC, cc Commands)
2.14.3. -h [no]jump (CC, cc Commands)
2.14.4. -h [no]split (CC, cc Commands)
2.15. Math
2.15.1. -h matherror=method (CC, cc Commands)
2.15.2. -h [no]fastmd (CC, cc Commands)
2.15.3. -h [no]fastmodulus (CC, cc Commands)
2.15.4. -h [no]ieeeconform (CC, cc Commands)
2.15.5. -h [no]fastfpdivide (CC, cc Commands)
2.15.6. -h [no]rounddiv (CC, cc Commands)
2.15.7. -h [no]trunc[=n] (CC, cc Commands)
2.16. Analysis Tools
2.16.1. -F (CC, cc Commands)
2.16.2. -h [no]atexpert (CC, cc Commands)
2.16.3. -h [no]apprentice (CC, cc Commands)
2.16.4. -h [no]listing (CC, cc Commands)
2.17. Debugging
2.17.1. -G level (CCcc Commands) and -g (CCccc89 Commands)
2.17.2. -h [no]bounds (cc Command)
2.17.3. -h indef, -h zero (CC, cc Commands)
2.18. Messages
2.18.1. -h msglevel_n (CC, cc Commands)
2.18.2. -h [no]message=n[: n...] (CCcc Commands)
2.18.3. -h report=args (CC, cc Commands)
2.18.4. -h [no]abort (CC, cc Commands)
2.18.5. -h errorlimit[=n] (CC, cc Commands)
2.19. Compilation Phases
2.19.1. -E (CC, cc, c89, cpp Commands)
2.19.2. -P (CC, cc, cpp Commands)
2.19.3. -h feonly (CC, cc Commands)
2.19.4. -S (CC, cc Commands)
2.19.5. -c (CC, cc, c89 Commands)
2.19.6. -#, -##, and -### (CC, cc, cpp Commands)
2.19.7. -Wphase["opt..."] (CC, cc Commands)
2.19.8. -Yphase,dirname (CCccc89 cpp Commands)
2.20. Preprocessing
2.20.1. -I incldir ( CC, cc, c89, cpp Commands)
2.20.2. -D macro[=def] (CCccc89cpp Commands)
2.20.3. -U macro (CC, cc, c89, cpp Commands)
2.20.4. -M (CC, cc, cpp Commands)
2.20.5. -N (cpp Command)
2.20.6. -C (CC, cc, cpp Commands)
2.20.7. -h [no]pragma=name[: name...] (CCcc Commands)
2.21. Loader
2.21.1. -l libfile (CC, cc, c89 Commands)
2.21.2. -L libdir (CC, cc, c89 Commands)
2.21.3. -o outfile (CC, cc, c89 Commands)
2.21.4. -d string (CC, cc Commands)
2.21.5. -s (CC, cc, c89 Commands)
2.22. General
2.22.1. -V (CC, cc, cpp Commands)
2.22.2. -X npes (CC, cc Commands)
2.22.3. -h ident=name (CC, cc Commands)
2.23. Command-line Examples
2.24. Environment Variables
3. Cray C and C++ Extensions
3.1. Restricted Pointers
3.1.1. Function Parameters
3.1.2. File Scope
3.1.3. Block Scope
3.1.4. Unrestricted Pointers
3.1.5. Comparison with #pragma ivdep
3.1.6. Implementation Limits
3.2. long long and unsigned long long Data Types
3.3. // Comments
3.4. Complex Data Types
3.4.1. Complex Usage
3.4.2. Conversion to and from Complex
3.4.3. Arithmetic Conversion for Complex
3.5. Variable Length Arrays
3.5.1. Declarator Restrictions
3.5.2. Variable Length Array (VLA) Declarators
3.5.3. Function Declarators and Variable Length Arrays
3.5.4. Variable Length Array Type Definitions
3.5.5. sizeof Operator and Variable Length Arrays
3.5.6. goto Statements
3.5.7. switch Statement
3.5.8. setjmp and longjmp Functions
3.6. fortran Keyword
3.7. Hexadecimal Floating-point Constants
3.8. Arithmetic Conversions
4. #pragma Directives
4.1. Protecting Directives
4.2. Directives in Cray C++
4.3. Loop Directives
4.4. Alternative Directive Form: _Pragma
4.5. General Directives
4.5.1. besu Directive
4.5.2. [no]bounds Directive (C Compiler)
4.5.3. duplicate Directive (C Compiler)
4.5.4. message Directive
4.5.5. [no]opt Directive
4.5.6. uses_eregs Directive
4.5.7. soft Directive
4.5.8. vfunction Directive
4.5.9. ident Directive
4.6. Instantiation Directives
4.7. Vectorization Directives
4.7.1. ivdep Directive
4.7.2. novector Directive
4.7.3. novsearch Directive
4.7.4. prefervector Directive
4.7.5. shortloop and shortloop128 Directives
4.8. Tasking Directives
4.8.1. parallel and endparallel Directives
4.8.2. taskloop Directive
4.8.3. endloop Directive
4.8.4. case and endcase Directives
4.8.5. guard and endguard Directives
4.8.6. taskprivate Directive (C Compiler)
4.8.7. taskshared Directive (C Compiler)
4.8.8. taskcommon Directive
4.8.9. common Directive
4.8.10. prefertask Directive
4.8.11. Arguments to Tasking Directives
4.9. Multi-Streaming Processor (MSP) Directives (Deferred Implementation)
4.9.1. #pragma nostream Directive
4.9.2. #pragma preferstream Directive
4.10. Scalar Directives
4.10.1. align Directive
4.10.2. cache_align Directive
4.10.3. cache_bypass Directive
4.10.4. concurrent Directive
4.10.5. nointerchange Directive
4.10.6. noreduction Directive
4.10.7. split Directive
4.10.8. suppress Directive
4.10.9. symmetric Directive
4.10.10. unroll Directive
4.11. Inlining Directives
4.11.1. inline Directive
4.11.2. noinline Directive
5. Template Instantiation
5.1. Automatic Instantiation
5.2. Instantiation Modes
5.3. Instantiation #pragma Directives
5.4. Implicit Inclusion
6. Predefined Macros
6.1. Macros Required by the C and C++ Standards
6.2. Macros Based on the Host Machine
6.3. Macros Based on the Target Machine
6.4. Macros Based on the Compiler
7. Debugging C/C++ Code
7.1. Cray TotalView Debugger
7.2. Compiler Debugging Options
8. Interlanguage Communication
8.1. Interlanguage Communication with Cray Standard C and Cray C++
8.1.1. Calling Assembly Language Functions from a C or C++ Function
8.1.2. Calling Fortran Functions and Subroutines from a C or C++ Function
8.1.3. Calling a C/C++ Function from an Assembly Language or Fortran Program
8.1.4. Calls between C and C++ Functions
9. Implementation-defined Behavior
9.1. Implementation-defined Behavior
9.1.1. Messages
9.1.2. Environment
9.1.3. Preprocessing
A. Libraries and Loaders
A.1. UNICOS Standard C and C++ Libraries
A.2. UNICOS Loaders
A.2.1. Loader for UNICOS Systems (SEGLDR)
A.2.2. Loader for UNICOS/mk Systems (cld)
B. Cray C/C++ Dialects
B.1. C++ Conformance
B.1.1. Supported Features
B.1.2. Unsupported Features
B.2. C++ Anachronisms Accepted
B.3. Extensions Accepted in Normal C++ Mode
B.4. Extensions Accepted in C or C++ Mode
B.5. C++ Extensions Accepted in cfront Compatibility Mode
C. Compiler Messages
C.1. Expanding Messages with the explain Command
C.2. Controlling the Use of Messages
C.2.1. Command-line Options
C.2.2. Environment Options for Messages
C.2.3. ORIG_CMD_NAME Environment Variable
C.3. Message Severity
C.4. Common System Messages
D. Intrinsic Functions
Index
List of Tables
2-1. -h option descriptions
2-2.
2-3.
2-4.
2-5. -h pragma directive processing
8-1.
8-2.
9-1. Cray Research systems data type mapping
9-2.
9-3.
D-1. Summary of C/C++ intrinsic functions
List of Figures
9-1. Character pointer format
List of Equations
9-1.
9-2.