IBM XL Compiler Transformation Markup Language Version 1.1

Licensed Materials - Property of IBM
Copyright IBM Corp. 2009, 2012.

Abstract

This document describes the markup language used by the compiler report in XML format. The compiler report records the code transformation attempts that the compiler performed during compilation.

Table of Contents

  1. Introduction
  2. Versioning Model
  3. Namespace
  4. Content Organization
  5. Elements Reference
  6. Transformation Types
  7. Change History

Introduction

High performance compilers like IBM XL C, C++ and Fortran have the capability to achieve optimization by performing code transformations. However, due to various constraints, such as source code limitations and incompatible compile options, the compilers may not be able to successfully apply all of the attempted transformations. To achieve higher application performance, application tuning is required. In general, this task is extremely time consuming and requires experienced and knowledgeable application tuners. With the aims of easing the difficulties of application tuning and improving the productivity of application tuners, IBM XL C, C++ and Fortran compilers now produce compiler report in XML format. During compilation, the report records the areas of the code where transformations have been attempted. Moreover, the report identifies the type of the transformation attempt and determines whether it has been successfully applied. The report is emitted in XML 1.0, which is a standard format for tooling consumption. It is expected that application tuners can achieve automatic performance tuning by creating their own tooling to consume the report.

The compiler transformation markup language is a specification for describing code transformation attempts and it is used by the compiler report. The structure and content of this markup language is defined by an XML schema provided with the compiler package. To assist tooling writers, this document is provided as a translation of the XML schema with plain descriptions.

Versioning Model

The compiler report is versioned. The version information is encoded within the version attribute of the document root element. The version consists of two parts, the major version and the minor version separated by a dot (major.minor). The versioning model considers the following cases:

Case 1. Introduction of compatible changes
This includes cases like the addition of elements, attributes, or enumerator values. The minor version will be incremented (e.g. 1.0 -> 1.1). To achieve backward compatibility (tooling based on a newer schema can process an older report), the additions will be defined as optional in the newer schema. To achieve forward compatibility (tooling based on an older schema can process a newer report), tooling consuming the compiler report should ignore all unrecognized content.

Case 2. Introduction of incompatible changes
This includes cases like the removal of required elements or attributes. Both the major version and the default namespace will be updated (e.g. 1.1 -> 2.0). Backward and forward compatibility will no longer be maintained.

Namespace

An XML namespace is a method of qualifying element and attribute names used in an XML document by prefixing the names with a URI. For the compiler report, the elements are qualified with the default namespace, while the attributes are not qualified. The default namespace used in this version of compiler report is:

http://www.ibm.com/2010/04/CompilerTransformation

The default namespace is part of the versioning model. It will be updated when an incompatible change is introduced. This prevents tooling from mistakenly parsing an incompatible compiler report since the tooling would be expecting a different namespace.

Content Organization

A compilation can consist of multiple steps, such as compiling and linking. For each of compilation step executed by the IBM XL C, C++, and Fortran compilers, the recorded information will reside within its corresponding <CompilationStep> element. There are four sections in a <CompilationStep> element. The <StepDetails> element contains general information regarding the compilation step, such as the compiler name and the compilation date. The <ProgramHierarchy> element contains program information, such as the source files, source regions, and loops. This program information is referenced by the transformation attempts listed within the <TransformationHierarchy> element. To give granularity to the wide variety of transformations, they are further categorized by the <IntraTransformation> (intra-procedural transformations) and <InterTransformation> (inter-procedural transformation) elements. The <ProfilingReports> element contains profiling information.

Elements Reference

The links in the "Element" column provide more information about each specific element and its attributes.

Element Description
XLTransformationReportThis is the document root element.
CompilationStepThis element contains the recorded information of a compilation step.
StepDetailsThis element contains general information of a compilation step.
DetailThis element describes a piece of general information.
FieldTitleThis element contains the title of the description.
FieldValueThis element contains the value of the description.
ProgramHierarchyThis element contains the program information.
FileListThis element contains the list of source files.
FileThis element describes a source file.
RegionListThis element contains the list of source regions of a source file.
RegionThis element describes a source region.
PseudocodeThis element contains the pseudocode.
PseudoLoopThis element describes a pseudocode loop.
PseudoBlockThis element describes a pseudocode block.
PseudoLineThis element describes a line in the pseudocode.
LoopListThis element contains the list of loops of a source region.
LoopThis element describes a loop.
TransformationHierarchyThis element contains the transformation attempts.
IntraTransformationListThis element contains the list of intra-procedural transformations.
LoopTransformationListThis element contains the list of loop transformation attempts.
LoopTransformThis element describes a loop transformation attempt.
AttributeListThis element contains the list of attributes of a loop transformation attempt.
AttributeThis element describes an attribute.
AttributeTitleThis element contains the title of the attribute.
AttributeValueThis element contains the value of the attribute.
InterTransformationListThis element contains the list of inter-procedural transformations.
InlineOptimizationListThis element contains the list of inline optimization attempts.
InlineOptThis element describes an inline optimization attempt.
DataReorganizationListThis element contains the list of performed data reorganizations.
DataReorgThis element describes a performed data reorganization.
ProfilingReportsThis element contains profiling information.
BlockCounterListThis element contains the list of block counter information.
BlockCounterThis element describes a block counter of a source region.
BlockListThis element contains the list of blocks of a block counter.
BlockThis element describes a block of a block counter.
CallCounterListThis element contains the list of call counter information.
CallCounterThis element describes a call counter of a source region.
CallListThis element contains the list of calls of a call counter.
CallThis element describes a call of a call counter.
ValueProfileListThis element contains the list of value profile information.
ValueProfileThis element describes the statement that was profiled.
ValueListThis element contains the list of values that were profiled.
ValueThis element describes a particular value.
CacheMissListThis element contains the list of cache miss information.
CacheMissThis element describes a piece of cache miss information.

<XLTransformationReport> Element

Description: This is the document root element.

Parent element: None

ElementOccurrence (min - max)Description
CompilationStep1 - unboundedThis element contains the recorded information of a compilation step.

AttributeValueDescription
versionMust be 1.x for this schema.Required. Compiler report version.

<CompilationStep> Element

Description: This element contains the recorded information of a compilation step.

Parent element: <XLTransformationReport>

ElementOccurrence (min - max)Description
StepDetails1 - 1This element contains general information of a compilation step.
ProgramHierarchy1 - 1This element contains the program information.
TransformationHierarchy1 - 1This element contains the transformation attempts.
ProfilingReports1 - 1This element contains profiling information.

AttributeValueDescription
namecompiling | linkingRequired. Name of compilation step.

<StepDetails> Element

Description: This element contains general information of a compilation step.

Parent element: <CompilationStep>

ElementOccurrence (min - max)Description
Detail0 - unboundedThis element describes a piece of general information.

Attribute: None

<Detail> Element

Description: This element describes a piece of general information.

Parent element: <StepDetails>

ElementOccurrence (min - max)Description
FieldTitle1 - 1This element contains the title of the description.
FieldValue1 - 1This element contains the value of the description.

Attribute: None

<FieldTitle> Element

Description: This element contains the title of the description.

Parent element: <Detail>

Child element: None

Attribute: None

<FieldValue> Element

Description: This element contains the value of the description.

Parent element: <Detail>

Child element: None

Attribute: None

<ProgramHierarchy> Element

Description: This element contains the program information.

Parent element: <CompilationStep>

ElementOccurrence (min - max)Description
FileList0 - 1This element contains the list of source files.

Attribute: None

<FileList> Element

Description: This element contains the list of source files.

Parent element: <ProgramHierarchy>

ElementOccurrence (min - max)Description
File1 - unboundedThis element describes a source file.

Attribute: None

<File> Element

Description: This element describes a source file.

Parent element: <FileList>

ElementOccurrence (min - max)Description
RegionList0 - 1This element contains the list of source regions of a source file.

AttributeValueDescription
idpositive integerRequired. Unique source file identifier.
namestringRequired. Name of source file.

<RegionList> Element

Description: This element contains the list of source regions of a source file.

Parent element: <File>

ElementOccurrence (min - max)Description
Region1 - unboundedThis element describes a source region.

Attribute: None

<Region> Element

Description: This element describes a source region.

Parent element: <RegionList>

ElementOccurrence (min - max)Description
Pseudocode0 - 1This element contains the pseudocode.
LoopList0 - 1This element contains the list of loops of a source region.

AttributeValueDescription
idpositive integerRequired. Unique source region identifier.
namestringRequired. Name of source region.
demangledNamestringOptional. Demangled name of source region.
startLineNumberpositive integerOptional. Start line number of source region.
endLineNumberpositive integerOptional. End line number of source region.

<Pseudocode> Element

Description: This element contains the pseudocode.

Parent element: <Region>

ElementOccurrence (min - max)Description
PseudoLoop0 - unboundedThis element describes a pseudocode loop.
PseudoBlock0 - unboundedThis element describes a pseudocode block.
PseudoLine0 - unboundedThis element describes a line in the pseudocode.

Attribute: None

<PseudoLoop> Element

Description: This element describes a pseudocode loop.

Parent element: <Pseudocode>

ElementOccurrence (min - max)Description
PseudoLoop0 - unboundedThis element describes a pseudocode loop.
PseudoBlock0 - unboundedThis element describes a pseudocode block.
PseudoLine0 - unboundedThis element describes a line in the pseudocode.

AttributeValueDescription
indexpositive integerRequired. Unique loop index within a source region.

<PseudoBlock> Element

Description: This element describes a pseudocode block.

Parent element: <Pseudocode>

ElementOccurrence (min - max)Description
PseudoLoop0 - unboundedThis element describes a pseudocode loop.
PseudoBlock0 - unboundedThis element describes a pseudocode block.
PseudoLine0 - unboundedThis element describes a line in the pseudocode.

AttributeValueDescription
indexpositive integerRequired. Unique block index within a source region.

<PseudoLine> Element

Description: This element describes a line in the pseudocode.

Parent element: <Pseudocode>

Child element: None

AttributeValueDescription
fileIdpositive integerOptional. Maps the line to a source file.
lineNumberpositive integerOptional. Maps the line to a source line.

<LoopList> Element

Description: This element contains the list of loops of a source region.

Parent element: <Region>

ElementOccurrence (min - max)Description
Loop1 - unboundedThis element describes a loop.

Attribute: None

<Loop> Element

Description: This element describes a loop.

Parent element: <LoopList>

Child element: None

AttributeValueDescription
indexpositive integerRequired. Unique loop index within a source region.
startLineNumberpositive integerOptional. Start line number of loop.
endLineNumberpositive integerOptional. End line number of loop.
parentLoopIndexpositive integerOptional. Index of the parent loop.
nestLevelnonnegative integerOptional. Nest level within the parent loop.
minCostnonnegative integerOptional. Minimum loop execution cost.
maxCostnonnegative integerOptional. Maximum loop execution cost.
iterKindarray | default | exact | PDF | user | estimatedOptional. Type of iteration count.
iterCountnonnegative integerOptional. Number of iterations in the loop.
residualtrue | falseOptional. Residual iterations present after optimizations.
perfectNesttrue | falseOptional. Loop is perfect nest.
wellBehavedtrue | falseOptional. Loop has a single entry and exit.
mayThrowtrue | falseOptional. Loop contains a call which may result in a thrown exception, longjmp or exit.
bumpNormalizedtrue | falseOptional. Loop bump is normalized to 1.
guardedtrue | falseOptional. Loop is guarded to execute at least one iteration.
irreducibletrue | falseOptional. Loop corresponds to an irreducible region.
lowerBoundNormalizedtrue | falseOptional. Loop lower bound is zero.

<TransformationHierarchy> Element

Description: This element contains the transformation attempts.

Parent element: <CompilationStep>

ElementOccurrence (min - max)Description
IntraTransformationList0 - 1This element contains the list of intra-procedural transformations.
InterTransformationList0 - 1This element contains the list of inter-procedural transformations.

Attribute: None

<IntraTransformationList> Element

Description: This element contains the list of intra-procedural transformations.

Parent element: <TransformationHierarchy>

ElementOccurrence (min - max)Description
LoopTransformationList0 - 1This element contains the list of loop transformation attempts.

Attribute: None

<LoopTransformationList> Element

Description: This element contains the list of loop transformation attempts.

Parent element: <IntraTransformationList>

ElementOccurrence (min - max)Description
LoopTransform1 - unboundedThis element describes a loop transformation attempt.

Attribute: None

<LoopTransform> Element

Description: This element describes a loop transformation attempt.

Parent element: <LoopTransformationList>

ElementOccurrence (min - max)Description
AttributeList0 - 1This element contains the list of attributes of a loop transformation attempt.

AttributeValueDescription
seqpositive integerRequired. Sequence number of loop transformation attempt.
typesee section "Transformation Types"Required. Type of loop transformation attempt.
resultsuccess | failRequired. Outcome of loop transformation attempt.
regionIdpositive integerOptional. Maps the loop transformation attempt to a source region.
loopIndexpositive integerOptional. Maps the loop transformation attempt to a loop index.
lineNumberpositive integerOptional. Maps the loop transformation attempt to a source line.
phaseDriver | C++ Front End | C Front End | Fortran Front End | Low Level Optimizer | High Level OptimizerRequired. Compilation phase of this loop transformation is attempted.

<AttributeList> Element

Description: This element contains the list of attributes of a loop transformation attempt.

Parent element: <LoopTransform>

ElementOccurrence (min - max)Description
Attribute1 - unboundedThis element describes an attribute.

Attribute: None

<Attribute> Element

Description: This element describes an attribute.

Parent element: <AttributeList>

ElementOccurrence (min - max)Description
AttributeTitle1 - 1This element contains the title of the attribute.
AttributeValue1 - 1This element contains the value of the attribute.

Attribute: None

<AttributeTitle> Element

Description: This element contains the title of the attribute.

Parent element: <Attribute>

Child element: None

Attribute: None

<AttributeValue> Element

Description: This element contains the value of the attribute.

Parent element: <Attribute>

Child element: None

Attribute: None

<InterTransformationList> Element

Description: This element contains the list of inter-procedural transformations.

Parent element: <TransformationHierarchy>

ElementOccurrence (min - max)Description
InlineOptimizationList0 - 1This element contains the list of inline optimization attempts.
DataReorganizationList0 - 1This element contains the list of performed data reorganizations.

Attribute: None

<InlineOptimizationList> Element

Description: This element contains the list of inline optimization attempts.

Parent element: <InterTransformationList>

ElementOccurrence (min - max)Description
InlineOpt1 - unboundedThis element describes an inline optimization attempt.

Attribute: None

<InlineOpt> Element

Description: This element describes an inline optimization attempt.

Parent element: <InlineOptimizationList>

Child element: None

AttributeValueDescription
seqpositive integerRequired. Sequence number of inline attempt.
typesee section "Transformation Types"Required. Type of inline attempt.
resultsuccess | failRequired. Outcome of inline attempt.
callerRegionIdpositive integerOptional. Maps the caller to a source region.
calleeRegionIdpositive integerOptional. Maps the callee to a source region.
callsiteFileIdpositive integerOptional. Maps the callsite to a source file.
callsiteLineNumberpositive integerOptional. Maps the callsite to a source line.
callsiteColumnNumberpositive integerOptional. Maps the callsite to a source column.
phaseDriver | C++ Front End | C Front End | Fortran Front End | Low Level Optimizer | High Level OptimizerRequired. Compilation phase of this inline is attempted.

<DataReorganizationList> Element

Description: This element contains the list of performed data reorganizations.

Parent element: <InterTransformationList>

ElementOccurrence (min - max)Description
DataReorg1 - unboundedThis element describes a performed data reorganization.

Attribute: None

<DataReorg> Element

Description: This element describes a performed data reorganization.

Parent element: <DataReorganizationList>

Child element: None

AttributeValueDescription
seqpositive integerRequired. Sequence number of performed data reorganization.
typesee section "Transformation Types"Required. Type of data reorganization.
dataNamestringRequired. Name of data involved in the performed data reorganization.
categorystringOptional. Category of the performed data reorganization.
regionIdpositive integerOptional. Maps the performed data reorganization to a source region.
lineNumberpositive integerOptional. Maps the performed data reorganization to a source line.
phaseDriver | C++ Front End | C Front End | Fortran Front End | Low Level Optimizer | High Level OptimizerRequired. Compilation phase of this data reorganization is performed.

<ProfilingReports> Element

Description: This element contains profiling information.

Parent element: <CompilationStep>

ElementOccurrence (min - max)Description
BlockCounterList0 - 1This element contains the list of block counter information.
CallCounterList0 - 1This element contains the list of call counter information.
ValueProfileList0 - 1This element contains the list of value profile information.
CacheMissList0 - 1This element contains the list of cache miss information.

Attribute: None

<BlockCounterList> Element

Description: This element contains the list of block counter information.

Parent element: <ProfilingReports>

ElementOccurrence (min - max)Description
BlockCounter1 - unboundedThis element describes a block counter of a source region.

Attribute: None

<BlockCounter> Element

Description: This element describes a block counter of a source region.

Parent element: <BlockCounterList>

ElementOccurrence (min - max)Description
BlockList0 - 1This element contains the list of blocks of a block counter.

AttributeValueDescription
regionIdpositive integerRequired. Maps the block counter to a source region.
execCountnonnegative integerRequired. Execution count of the source region.
coveredBlocknonnegative integerOptional. Blocks in the source region that are executed.
totalBlocknonnegative integerOptional. Total blocks in the source region.

<BlockList> Element

Description: This element contains the list of blocks of a block counter.

Parent element: <BlockCounter>

ElementOccurrence (min - max)Description
Block1 - unboundedThis element describes a block of a block counter.

Attribute: None

<Block> Element

Description: This element describes a block of a block counter.

Parent element: <BlockList>

Child element: None

AttributeValueDescription
indexpositive integerRequired. Maps to a block index.
execCountnonnegative integerRequired. Execution count of the block.
startLineNumberpositive integerOptional. Start line number of block.
endLineNumberpositive integerOptional. End line number of block.

<CallCounterList> Element

Description: This element contains the list of call counter information.

Parent element: <ProfilingReports>

ElementOccurrence (min - max)Description
CallCounter0 - unboundedThis element describes a call counter of a source region.

Attribute: None

<CallCounter> Element

Description: This element describes a call counter of a source region.

Parent element: <CallCounterList>

ElementOccurrence (min - max)Description
CallList0 - 1This element contains the list of calls of a call counter.

AttributeValueDescription
regionIdpositive integerRequired. Maps the call counter to a source region.
execCountnonnegative integerRequired. Execution count of the source region.
coveredCallnonnegative integerOptional. Calls in the source region that are executed.
totalCallnonnegative integerOptional. Total calls in the source region.

<CallList> Element

Description: This element contains the list of calls of a call counter.

Parent element: <CallCounter>

ElementOccurrence (min - max)Description
Call1 - unboundedThis element describes a call of a call counter.

Attribute: None

<Call> Element

Description: This element describes a call of a call counter.

Parent element: <CallList>

Child element: None

AttributeValueDescription
namestringRequired. Name of the call.
execCountnonnegative integerRequired. Execution count of the call.
lineNumberpositive integerOptional. Maps the call to a source line.

<ValueProfileList> Element

Description: This element contains the list of value profile information.

Parent element: <ProfilingReports>

ElementOccurrence (min - max)Description
ValueProfile1 - unboundedThis element describes the statement that was profiled.

Attribute: None

<ValueProfile> Element

Description: This element describes the statement that was profiled.

Parent element: <ValueProfileList>

ElementOccurrence (min - max)Description
ValueList0 - 1This element contains the list of values that were profiled.

AttributeValueDescription
namestringRequired. Type of Value that was profiled.
regionIdpositive integerRequired. Maps the value profile to a source region.
lineNumberpositive integerRequired. Maps the value profile to a source line.
numberOfValuesnonnegative integerRequired. Number of unique values profiled.
symbolNamenonnegative integerOptional. Name of the symbol profiled.

<ValueList> Element

Description: This element contains the list of values that were profiled.

Parent element: <ValueProfile>

ElementOccurrence (min - max)Description
Value1 - unboundedThis element describes a particular value.

Attribute: None

<Value> Element

Description: This element describes a particular value.

Parent element: <ValueList>

Child element: None

AttributeValueDescription
namestringRequired. Value that was profiled.
execCountnonnegative integerRequired. Number of times the value was observed.

<CacheMissList> Element

Description: This element contains the list of cache miss information.

Parent element: <ProfilingReports>

ElementOccurrence (min - max)Description
CacheMiss0 - unboundedThis element describes a piece of cache miss information.

Attribute: None

<CacheMiss> Element

Description: This element describes a piece of cache miss information.

Parent element: <CacheMissList>

Child element: None

AttributeValueDescription
memoryReferencestringRequired. Memory reference of the cache miss.
regionIdpositive integerOptional. Maps the cache miss to a source region.
lineNumberpositive integerOptional. Maps the cache miss to a source line.
cacheLevelnonnegative integerOptional. Cache level.
cacheMissCountnonnegative integerOptional. Cache miss count.
cacheMissRatedecimalOptional. Cache miss rate.

Transformation Types

Loop Transformation Types

Type Description
AliasingInducedDependenceAn attempt to SIMD vectorize failed because of aliasing induced dependence.
AssistThreadDataPrefetchAssist thread for data prefetching was generated.
BasicBlockThresholdExceededLoop cannot be modulo scheduled because the number of basic blocks exceeds the threshold.
CompleteLoopUnrollComplete loop unroll was performed.
ContainsControlFlowAn attempt to SIMD vectorize failed because the loop contains control flow.
ContainsFunctionCallAn attempt to SIMD vectorize failed because the loop contains a function call.
ContainsNonVectorizableReductionAn attempt to SIMD vectorize failed because the loop contains a non-vectorizable reduction.
ContainsVolatileReferenceAn attempt to SIMD vectorize failed because the loop contains a volatile memory reference.
ControlFlowTooComplicatedLoop cannot be modulo scheduled because the control flow is too complicated.
DataDependenceAn attempt to SIMD vectorize failed because of a data dependence.
DataPrefetchData prefetching was performed.
FullLoopUnrollFull loop unroll was performed.
InnerLoopUnrollInner loop unroll was performed.
InstructionThresholdExceededLoop cannot be modulo scheduled because the number of instructions exceeds the threeshold.
IterationCountTooSmallAn attempt to SIMD vectorize failed because the iteration count is too small.
LoopBlockedLoop was blocked.
LoopBlockGatherGather/Scatter was performed.
LoopCarriedDependenceLoop was not automatically parallelized because variable carried dependence.
LoopCollapsedLoop has been collapsed.
LoopDistributionA child loop was created by the distribution of its parent loop.
LoopFusionLoops were fused.
LoopHasCyclesLoops has cycles.
LoopHasDependenciesLoop was not unrolled-and-fused because it contains dependencies which prevent unroll-and-fuse.
LoopHasNoDataDependenceLoop was not unrolled-and-fused because data dependence was not computed.
LoopHasPrivateVariablesPrivate variables recognized in loop nest.
LoopHasSideEffectsLoop was not unrolled-and-fused because it has side effects.
LoopHasSideEffectsCallLoop was not automatically parallelized because it contains a call that may have side effects.
LoopHasSpillsLoop has spills.
LoopHasUserReductionLoop was not unrolled-and-fused because it contains user reduction.
LoopHasVolatileVariableLoop was not automatically parallelized because variable is volatile.
LoopInterchangeLoop interchanging was applied to loop nest.
LoopNestGatherGather/Scatter was applied to loop nest.
LoopNotCountableLoop was not normalized because it is not countable.
LoopNotPerfectNestLoop was not unrolled-and-fused because it is not a perfect nest.
LoopNotSimdizeAn attempt to SIMD vectorize failed.
LoopParallelizedLoop was automatically parallelized.
LoopReversalLoop reversal was applied to loop nest.
LoopRolledLoop rolled has been applied.
LoopSimdizeSIMD vectorization was performed.
LoopUnrollLoop unroll was performed.
LoopVectorLoop vectorization was performed.
LoopVectorVersionVector versioning was performed.
ModuloScheduleLoop was modulo scheduled.
NonInnermostLoopAn attempt to SIMD vectorize failed because the loop is not the innermost loop.
NonNormalizableLoopAn attempt to optimize loop failed because the loop is not normalizable.
NonStrideOneInShiftAn attempt to SIMD vectorize failed because the loop contains non-stride-one references with unsupported alignment.
NonStrideOneStoreAn attempt to SIMD vectorize failed because the loop contains a non-stride-one store.
NonVectorizableAlignmentAn attempt to SIMD vectorize failed because the loop contains variables with a non-vectorizable alignment.
NonVectorizableStrideAn attempt to SIMD vectorize failed because the loop contains a non-vectorizable stride.
NotProfitableAn attempt to SIMD vectorize failed because it is not profitable to vectorize.
NoValidScheduleLoop cannot be modulo scheduled because it cannot find a valid schedule with a reasonable cycle count.
OuterLoopUnrollAn outer loop unroll was performed.
ProhibitedByOptionAn attempt to SIMD vectorize failed because SIMD vectorization has been disabled by an option.
RegisterPressureTooHighLoop cannot be modulo scheduled because the register pressure is too high.
StrideOneRequireBF1An attempt to SIMD vectorize failed because the loop contains blocks of non-stride-one references that cannot be extracted.
UnrollLimitExceededLoop was not unrolled-and-fused because requested unroll factor(s) exceeded limit for nest.
UnsupportedOperationAn attempt to SIMD vectorize failed because the loop contains an unsupported operation.
UnsupportedStructureAn attempt to SIMD vectorize failed because the loop contains an unsupported structure.
UnsupportedVectorTypesAn attempt to SIMD vectorize failed because the loop contains unsupported vector types.
UPCArrayIdiomTransformed the following fine grained shared access.
UPCArrayIdiomBlkFactorOneUnable to replace fine grained accesses.
UPCArrayIdiomDiffBlkFactorsUnsupported array idiom.
UPCCoalesingCoalesced the following shared references.
UPCForallIVUsedInMultipleDimsupc_forall optimization failed: affinity expression references the induction variable in multiple array dimensions.
UPCForallLoopVersionedupc-forall loop has been versioned.
UPCForallNotInnerParallelupc_forall optimization failed: affinity expression does not uses the induction variable in the innermost array dimension.
UPCForallOptupc_forall loop has been optimized.
UPCForallVersioningPtrNotInvariantupc_forall loop versioning failed because pointer is not loop invariant.
UPCPrivatizedRef1Privatized the following shared reference.
UPCPrivatizedRef2Privatized shared reference.
UPCRemoteUpdateGenerated remote update call for shared reference.
UPCRemoteUpdateUnknownPatternUnrecognized remote update operation for shared reference.
UserSpecifiedNoSIMDAn attempt to SIMD vectorize failed because SIMD vectorization has been disabled by option or pragma.

Inline Optimization Types

Type Description
ArgumentIsVolatileThe function was not inlined because an argument to the call is volatile.
CalleeIsCompactThe function was not inlined because the callee is being optimized for size.
CalleeIsNooptThe function was not inlined because the callee is compiled at noopt.
CallerIsCompactThe function was not inlined because the caller is being optimized for size.
CallerIsNooptThe function was not inlined because the caller was compiled at noopt.
ExternalLabelThe function was not inlined because it contains an externally visible label.
FunctionTooBigThe function was not inlined because it is too big to be inlined.
FunctionTryBlockThe function was not inlined because the caller is a function try block and the callee is a destructor.
MiscellaneousLimitationThe function was not inlined due to a limitation.
MismatchedArgumentsThe function was not inlined because the type or the number of arguments does not match the parameters of the callee.
NestedAddressTakenProcedureThe function was not inlined because the callee contains a nested function which is address taken and accesses the callee's auto.
NonIPAObjectThe function was not inlined because the callee was not compiled with IPA.
OptionMismatchThe function was not inlined because the caller and callee were compiled with options that are incompatible with inlining.
ParameterOfVariablyModifiedTypeThe function was not inlined because the callee has one or more parameters that are variable length arrays.
PDFLowFrequencyThe function was not inlined because PDF indicates that the callee was called too infrequently to warrant inlining.
PrimaryFromSecondaryEntryPointThe function was not inlined because it is a call to a primary entry point from a function with a secondary entry point.
ProhibitedByUserThe function was not inlined because of user specified pragma or directive.
RecursiveCallThe function was not inlined because it is recursive.
SuccessfulInlineThe function was successfully inlined.
VirtualBaseDestructorThe function was not inlined because it is a call to a virtual base destructor.
WeakAndNotExplicitlyInlineThe function was not inlined because the callee is weak and not marked as inline.

Data Reorganization Types

Type Description
ArrayCoalescingGlobal variables were aggregated.
ArrayInterleavingArray of small data-types were grouped into a large aggregated data-type.
ArraySplittingAn array of a large aggregated data-type was split into multiple arrays of smaller data-types.
ArrayTransposingA multidimensional array was transposed.
CommonBlockSplittingA Fortran common block or module was divided into smaller pieces of data.
MemoryAllocationMergingA multidimensional dynamic array was flatten into contiguous memory space.

Change History

This is the first edition.