llvm-project/llvm/test/Assembler
Adrian Prantl 6ed5706a2b Add LLVM IR debug info support for Fortran COMMON blocks
COMMON blocks are a feature of Fortran that has no direct analog in C languages, but they are similar to data sections in assembly language programming. A COMMON block is a named area of memory that holds a collection of variables. Fortran subprograms may map the COMMON block memory area to their own, possibly distinct, non-empty list of variables. A Fortran COMMON block might look like the following example.

    COMMON /ALPHA/ I, J

    For this construct, the compiler generates a new scope-like DI construct (!DICommonBlock) into which variables (see I, J above) can be placed. As the common block implies a range of storage with global lifetime, the !DICommonBlock refers to a !DIGlobalVariable. The Fortran variable that comprise the COMMON block are also linked via metadata to offsets within the global variable that stands for the entire common block.

    @alpha_ = common global %alphabytes_ zeroinitializer, align 64, !dbg !27, !dbg !30, !dbg !33
    !14 = distinct !DISubprogram(…)
    !20 = distinct !DICommonBlock(scope: !14, declaration: !25, name: "alpha")
    !25 = distinct !DIGlobalVariable(scope: !20, name: "common alpha", type: !24)
    !27 = !DIGlobalVariableExpression(var: !25, expr: !DIExpression())
    !29 = distinct !DIGlobalVariable(scope: !20, name: "i", file: !3, type: !28)
    !30 = !DIGlobalVariableExpression(var: !29, expr: !DIExpression())
    !31 = distinct !DIGlobalVariable(scope: !20, name: "j", file: !3, type: !28)
    !32 = !DIExpression(DW_OP_plus_uconst, 4)
    !33 = !DIGlobalVariableExpression(var: !31, expr: !32)

    The DWARF generated for this is as follows.

    DW_TAG_common_block:
    DW_AT_name: alpha
    DW_AT_location: @alpha_+0
    DW_TAG_variable:
    DW_AT_name: common alpha
    DW_AT_type: array of 8 bytes
    DW_AT_location: @alpha_+0
    DW_TAG_variable:
    DW_AT_name: i
    DW_AT_type: integer*4
    DW_AT_location: @Alpha+0
    DW_TAG_variable:
    DW_AT_name: j
    DW_AT_type: integer*4
    DW_AT_location: @Alpha+4

Patch by Eric Schweitz!

Differential Revision: https://reviews.llvm.org/D54327

llvm-svn: 357934
2019-04-08 19:13:55 +00:00
..
2002-03-08-NameCollision.ll
2002-03-08-NameCollision2.ll
2002-04-07-HexFloatConstants.ll
2002-04-07-InfConstant.ll
2002-04-29-NameBinding.ll
2002-05-02-InvalidForwardRef.ll
2002-07-14-OpaqueType.ll
2002-07-25-QuoteInString.ll
2002-07-25-ReturnPtrFunction.ll
2002-07-31-SlashInString.ll Don't output bitcode to stdout in 2002-07-31-SlashInString.ll test 2018-02-27 11:15:05 +00:00
2002-08-15-CastAmbiguity.ll
2002-08-15-ConstantExprProblem.ll
2002-08-15-UnresolvedGlobalReference.ll
2002-08-16-ConstExprInlined.ll
2002-08-19-BytecodeReader.ll
2002-08-22-DominanceProblem.ll
2002-10-08-LargeArrayPerformance.ll
2002-10-13-ConstantEncodingProblem.ll
2002-12-15-GlobalResolve.ll
2003-01-30-UnsignedString.ll
2003-04-15-ConstantInitAssertion.ll
2003-04-25-UnresolvedGlobalReference.ll
2003-05-03-BytecodeReaderProblem.ll
2003-05-12-MinIntProblem.ll
2003-05-15-AssemblerProblem.ll
2003-05-15-SwitchBug.ll
2003-05-21-ConstantShiftExpr.ll
2003-05-21-EmptyStructTest.ll
2003-05-21-MalformedShiftCrash.ll
2003-05-21-MalformedStructCrash.ll
2003-08-20-ConstantExprGEP-Fold.ll
2003-08-21-ConstantExprCast-Fold.ll
2003-11-05-ConstantExprShift.ll
2003-11-11-ImplicitRename.ll Make shell redirection construct portable 2017-07-12 13:24:46 +00:00
2003-11-12-ConstantExprCast.ll
2003-11-24-SymbolTableCrash.ll
2004-01-11-getelementptrfolding.ll
2004-01-20-MaxLongLong.ll
2004-02-01-NegativeZero.ll
2004-02-27-SelfUseAssertError.ll
2004-03-07-FunctionAddressAlignment.ll Revert patches 348835 and 348571 because they're 2019-01-04 16:39:10 +00:00
2004-03-30-UnclosedFunctionCrash.ll
2004-04-04-GetElementPtrIndexTypes.ll
2004-06-07-VerifierBug.ll
2004-10-22-BCWriterUndefBug.ll
2004-11-28-InvalidTypeCrash.ll
2005-01-03-FPConstantDisassembly.ll
2005-01-31-CallingAggregateFunction.ll
2005-05-05-OpaqueUndefValues.ll
2005-12-21-ZeroInitVector.ll
2006-09-28-CrashOnInvalid.ll
2006-12-09-Cast-To-Bool.ll
2007-01-02-Undefined-Arg-Type.ll
2007-01-05-Cmp-ConstExpr.ll
2007-01-16-CrashOnBadCast.ll
2007-01-16-CrashOnBadCast2.ll
2007-03-18-InvalidNumberedVar.ll
2007-03-19-NegValue.ll
2007-04-20-AlignedLoad.ll
2007-04-20-AlignedStore.ll
2007-04-25-AssemblerFoldExternWeak.ll
2007-05-21-Escape.ll
2007-07-19-ParamAttrAmbiguity.ll
2007-08-06-AliasInvalid.ll
2007-09-10-AliasFwdRef.ll
2007-09-29-GC.ll
2007-11-26-AttributeOverload.ll Make shell redirection construct portable 2017-07-12 13:24:46 +00:00
2007-12-11-AddressSpaces.ll
2008-01-11-VarargAttrs.ll
2008-02-18-IntPointerCrash.ll
2008-07-10-APInt.ll
2008-09-02-FunctionNotes.ll
2008-09-02-FunctionNotes2.ll
2008-09-29-RetAttr.ll
2008-10-14-QuoteInName.ll
2009-02-01-UnnamedForwardRef.ll
2009-02-28-CastOpc.ll
2009-02-28-StripOpaqueName.ll
2009-03-24-ZextConstantExpr.ll
2009-07-24-ZeroArgGEP.ll
2010-02-05-FunctionLocalMetadataBecomesNull.ll
ConstantExprFold.ll
ConstantExprFoldCast.ll
ConstantExprFoldSelect.ll
ConstantExprNoFold.ll ConstantFold: Don't fold global address vs. null for addrspace != 0 2018-06-26 18:55:43 +00:00
DICommonBlock.ll Add LLVM IR debug info support for Fortran COMMON blocks 2019-04-08 19:13:55 +00:00
DIEnumerator.ll Rename DIFlagFixedEnum to DIFlagEnumClass. NFC 2019-01-08 17:52:29 +00:00
DIGlobalVariableExpression.ll Parse and print DIExpressions inline to ease IR and MIR testing 2017-08-23 20:31:27 +00:00
DIMacroFile.ll [LLParser] Make the line field of DIMacro(File) optional. 2016-12-22 00:29:00 +00:00
MultipleReturnValueType.ll
addrspacecast-alias.ll
aggregate-constant-values.ll
aggregate-return-single-value.ll
alias-redefinition.ll
alias-use-list-order.ll
align-inst-alloca.ll
align-inst-load.ll
align-inst-store.ll
align-inst.ll
alignstack.ll
alloca-addrspace-elems.ll Fix assembler for alloca of multiple elements in non-zero addr space 2017-10-14 03:23:18 +00:00
alloca-addrspace-parse-error-0.ll Allow DataLayout to specify addrspace for allocas. 2017-04-10 22:27:50 +00:00
alloca-addrspace-parse-error-1.ll Allow DataLayout to specify addrspace for allocas. 2017-04-10 22:27:50 +00:00
alloca-addrspace0.ll Allow DataLayout to specify addrspace for allocas. 2017-04-10 22:27:50 +00:00
alloca-invalid-type-2.ll
alloca-invalid-type.ll
alloca-size-one.ll
anon-functions.ll
asm-path-writer.ll [ThinLTO] Escape module paths when printing 2018-07-12 14:40:21 +00:00
atomic.ll Reapply "IR: Add fp operations to atomicrmw" 2019-01-22 18:18:02 +00:00
attribute-builtin.ll
auto_upgrade_intrinsics.ll Verifier: Make sure masked load/store alignment is a power of 2 2019-03-13 19:46:34 +00:00
auto_upgrade_nvvm_intrinsics.ll [NVPTX] Auto-upgrade some NVPTX intrinsics to LLVM target-generic code. 2017-01-21 01:00:32 +00:00
autoupgrade-invalid-mem-intrinsics.ll IR: Add immarg attribute 2019-03-12 21:02:54 +00:00
autoupgrade-thread-pointer.ll
bcwrap.ll
block-labels.ll IR: Support parsing numeric block ids, and emit them in textual output. 2019-03-22 18:27:13 +00:00
call-invalid-1.ll
call-nonzero-program-addrspace-2.ll Allow creating llvm::Function in non-zero address spaces 2018-08-23 09:25:17 +00:00
call-nonzero-program-addrspace.ll Allow creating llvm::Function in non-zero address spaces 2018-08-23 09:25:17 +00:00
comment.ll
datalayout-alloca-addrspace-mismatch-0.ll LLParser: add an argument for overriding data layout and do not check alloca addr space 2018-01-30 22:32:39 +00:00
datalayout-alloca-addrspace-mismatch-1.ll LLParser: add an argument for overriding data layout and do not check alloca addr space 2018-01-30 22:32:39 +00:00
datalayout-alloca-addrspace-mismatch-2.ll LLParser: add an argument for overriding data layout and do not check alloca addr space 2018-01-30 22:32:39 +00:00
datalayout-alloca-addrspace.ll Allow DataLayout to specify addrspace for allocas. 2017-04-10 22:27:50 +00:00
datalayout-program-addrspace.ll Add default address space for functions to the data layout (1/3) 2018-02-19 09:56:22 +00:00
debug-info-source-invalid.ll [DWARFv5] Verify all-or-nothing constraint on DIFile source 2018-11-30 19:13:38 +00:00
debug-info-source.ll [DWARFv5] Verify all-or-nothing constraint on DIFile source 2018-11-30 19:13:38 +00:00
debug-info.ll [test] Fix Assembler/debug-info.ll 2018-09-21 12:28:44 +00:00
debug-label-bitcode.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
debug-variant-discriminator.ll Ensure that variant part discriminator is read by MetadataLoader 2018-09-21 12:03:14 +00:00
dicompileunit.ll
dicompositetype-members.ll
diexpression.ll [DebugInfo] Introduce DW_OP_LLVM_convert 2019-03-19 13:16:28 +00:00
difile-escaped-chars.ll
diglobalvariable.ll Emit template type and value parameter DIEs for template variables. 2018-10-03 18:44:53 +00:00
diimportedentity.ll Debug Info: Add a file: field to DIImportedEntity. 2017-07-19 00:09:54 +00:00
dilexicalblock.ll
dilocalvariable-arg-large.ll
dilocalvariable.ll DebugInfo: preparation to implement DW_AT_alignment 2016-10-20 00:13:12 +00:00
dilocation.ll [IR] Add a boolean field in DILocation to know if a line must covered or not 2018-09-20 08:53:06 +00:00
dimodule.ll
dinamespace.ll Remove line and file from DINamespace. 2017-04-28 22:25:46 +00:00
diobjcproperty.ll
distinct-mdnode.ll
disubprogram.ll Add IR debug info support for Elemental, Pure, and Recursive Procedures. 2019-03-14 16:29:54 +00:00
disubrange-empty-array.ll
disubroutinetype.ll
ditemplateparameter.ll
ditype-large-values.ll
dllimport-dsolocal-diag.ll Represent runtime preemption in the IR. 2017-10-26 15:00:26 +00:00
drop-debug-info-nonzero-alloca.ll LLParser: add an argument for overriding data layout and do not check alloca addr space 2018-01-30 22:32:39 +00:00
drop-debug-info.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
externally-initialized.ll
extractvalue-invalid-idx.ll
extractvalue-no-idx.ll
fast-math-flags.ll [IR] Add a dedicated FNeg IR Instruction 2018-11-13 18:15:47 +00:00
flags.ll
generic-debug-node.ll
getInt.ll
getelementptr.ll IR: Introduce inrange attribute on getelementptr indices. 2016-11-10 22:34:55 +00:00
getelementptr_invalid_ptr.ll
getelementptr_struct.ll
getelementptr_vec_ce.ll [ConstantFold] Support vector index when factoring out GEP index into preceding dimensions 2017-12-04 19:56:33 +00:00
getelementptr_vec_ce2.ll [LLParser] Parse vector GEP constant expression correctly 2016-12-21 18:29:47 +00:00
getelementptr_vec_idx1.ll
getelementptr_vec_idx2.ll
getelementptr_vec_idx3.ll
getelementptr_vec_idx4.ll
getelementptr_vec_struct.ll
global-addrspace-forwardref.ll
globalvariable-attributes.ll [IR] Allow attributes with global variables 2017-05-11 12:28:08 +00:00
gv-invalid-type.ll
half-constprop.ll
half-conv.ll
half.ll
huge-array.ll
ifunc-asm.ll
ifunc-dsolocal.ll Allow dso_local on ifunc. 2018-01-12 17:03:43 +00:00
ifunc-use-list-order.ll
immarg-param-attribute.ll IR: Add immarg attribute 2019-03-12 21:02:54 +00:00
inalloca.ll
incorrect-tdep-attrs-parsing.ll
inline-asm-clobber.ll
insertextractvalue.ll
insertvalue-invalid-idx.ll
insertvalue-invalid-type-1.ll
insertvalue-invalid-type.ll
internal-hidden-alias.ll
internal-hidden-function.ll
internal-hidden-variable.ll
internal-protected-alias.ll
internal-protected-function.ll
internal-protected-variable.ll
invalid-alias-mismatched-explicit-type.ll
invalid-atomicrmw-add-must-be-integer-type.ll Add atomicrmw operation to error messages 2018-10-03 02:37:15 +00:00
invalid-atomicrmw-fadd-must-be-fp-type.ll Reapply "IR: Add fp operations to atomicrmw" 2019-01-22 18:18:02 +00:00
invalid-atomicrmw-fsub-must-be-fp-type.ll Reapply "IR: Add fp operations to atomicrmw" 2019-01-22 18:18:02 +00:00
invalid-atomicrmw-xchg-must-be-integer-or-fp-type.ll Allow FP types for atomicrmw xchg 2019-01-17 10:49:01 +00:00
invalid-attrgrp.ll
invalid-block-label-num.ll IR: Support parsing numeric block ids, and emit them in textual output. 2019-03-22 18:27:13 +00:00
invalid-comdat.ll
invalid-comdat2.ll
invalid-datalayout-alloca-addrspace.ll Add default address space for functions to the data layout (1/3) 2018-02-19 09:56:22 +00:00
invalid-datalayout-program-addrspace.ll Add default address space for functions to the data layout (1/3) 2018-02-19 09:56:22 +00:00
invalid-datalayout1.ll
invalid-datalayout2.ll
invalid-datalayout3.ll
invalid-datalayout4.ll
invalid-datalayout5.ll
invalid-datalayout6.ll
invalid-datalayout7.ll
invalid-datalayout8.ll
invalid-datalayout9.ll
invalid-datalayout10.ll
invalid-datalayout11.ll
invalid-datalayout12.ll
invalid-datalayout13.ll
invalid-datalayout14.ll
invalid-datalayout15.ll
invalid-datalayout16.ll
invalid-datalayout17.ll
invalid-datalayout18.ll
invalid-datalayout19.ll
invalid-datalayout20.ll
invalid-datalayout21.ll
invalid-datalayout22.ll
invalid-datalayout23.ll
invalid-datalayout24.ll
invalid-debug-info-version.ll
invalid-dicompileunit-emissionkind-bad.ll
invalid-dicompileunit-language-bad.ll
invalid-dicompileunit-language-overflow.ll
invalid-dicompileunit-missing-language.ll
invalid-dicompileunit-null-file.ll
invalid-dicompileunit-uniqued.ll
invalid-dicompositetype-missing-tag.ll
invalid-diderivedtype-missing-basetype.ll
invalid-diderivedtype-missing-tag.ll
invalid-dienumerator-missing-name.ll
invalid-dienumerator-missing-value.ll
invalid-diexpression-large.ll
invalid-diexpression-verify.ll Parse and print DIExpressions inline to ease IR and MIR testing 2017-08-23 20:31:27 +00:00
invalid-difile-missing-directory.ll
invalid-difile-missing-filename.ll
invalid-diglobalvariable-empty-name.ll
invalid-diglobalvariable-missing-name.ll
invalid-diimportedentity-missing-scope.ll
invalid-diimportedentity-missing-tag.ll
invalid-dilexicalblock-missing-scope.ll
invalid-dilexicalblock-null-scope.ll
invalid-dilexicalblockfile-missing-discriminator.ll
invalid-dilexicalblockfile-missing-scope.ll
invalid-dilexicalblockfile-null-scope.ll
invalid-dilocalvariable-arg-large.ll
invalid-dilocalvariable-arg-negative.ll
invalid-dilocalvariable-missing-scope.ll
invalid-dilocalvariable-null-scope.ll
invalid-dilocation-field-bad.ll
invalid-dilocation-field-twice.ll
invalid-dilocation-missing-scope-2.ll
invalid-dilocation-missing-scope.ll
invalid-dilocation-null-scope.ll
invalid-dilocation-overflow-column.ll
invalid-dilocation-overflow-line.ll
invalid-dinamespace-missing-namespace.ll
invalid-disubprogram-uniqued-definition.ll [DebugInfo] IR/Bitcode changes for DISubprogram flags. 2018-11-28 21:14:32 +00:00
invalid-disubrange-count-large.ll
invalid-disubrange-count-missing.ll
invalid-disubrange-count-negative.ll
invalid-disubrange-count-node.ll [Metadata] Extend 'count' field of DISubrange to take a metadata node 2018-01-24 09:56:07 +00:00
invalid-disubrange-lowerBound-max.ll
invalid-disubrange-lowerBound-min.ll
invalid-disubroutinetype-missing-types.ll
invalid-ditemplatetypeparameter-missing-type.ll
invalid-ditemplatevalueparameter-missing-value.ll
invalid-fp80hex.ll
invalid-fwdref1.ll
invalid-fwdref2.ll
invalid-generic-debug-node-tag-bad.ll
invalid-generic-debug-node-tag-missing.ll
invalid-generic-debug-node-tag-overflow.ll
invalid-generic-debug-node-tag-wrong-type.ll
invalid-gep-mismatched-explicit-type.ll
invalid-gep-missing-explicit-type.ll
invalid-hexint.ll
invalid-immarg.ll IR: Add immarg attribute 2019-03-12 21:02:54 +00:00
invalid-immarg2.ll IR: Add immarg attribute 2019-03-12 21:02:54 +00:00
invalid-immarg3.ll IR: Add immarg attribute 2019-03-12 21:02:54 +00:00
invalid-inline-constraint.ll
invalid-inttype.ll
invalid-label.ll
invalid-landingpad.ll
invalid-load-mismatched-explicit-type.ll
invalid-load-missing-explicit-type.ll
invalid-mdnode-badref.ll
invalid-mdnode-vector.ll
invalid-mdnode-vector2.ll
invalid-metadata-attachment-has-type.ll
invalid-metadata-function-local-attachments.ll
invalid-metadata-function-local-complex-1.ll
invalid-metadata-function-local-complex-2.ll
invalid-metadata-function-local-complex-3.ll
invalid-metadata-has-type.ll
invalid-name.ll
invalid-name2.ll
invalid-safestack-param.ll
invalid-safestack-return.ll
invalid-specialized-mdnode.ll
invalid-untyped-metadata.ll
invalid-uselistorder-function-between-blocks.ll
invalid-uselistorder-function-missing-named.ll
invalid-uselistorder-function-missing-numbered.ll
invalid-uselistorder-global-missing.ll
invalid-uselistorder-indexes-duplicated.ll
invalid-uselistorder-indexes-empty.ll
invalid-uselistorder-indexes-one.ll
invalid-uselistorder-indexes-ordered.ll
invalid-uselistorder-indexes-range.ll
invalid-uselistorder-indexes-toofew.ll
invalid-uselistorder-indexes-toomany.ll
invalid-uselistorder-type.ll
invalid-uselistorder_bb-missing-bb.ll
invalid-uselistorder_bb-missing-body.ll
invalid-uselistorder_bb-missing-func.ll
invalid-uselistorder_bb-not-bb.ll
invalid-uselistorder_bb-not-func.ll
invalid-uselistorder_bb-numbered.ll
invalid_cast.ll
invalid_cast2.ll
invalid_cast3.ll
invalid_cast4.ll
invoke-nonzero-program-addrspace.ll Allow creating llvm::Function in non-zero address spaces 2018-08-23 09:25:17 +00:00
large-comdat.ll
local-unnamed-addr.ll
max-inttype.ll
metadata-decl.ll
metadata-function-local.ll
metadata-null-operands.ll
metadata.ll
missing-tbaa.ll
musttail-invalid-1.ll
musttail-invalid-2.ll
musttail.ll
named-metadata.ll
no-mdstring-upgrades.ll
numbered-values.ll
private-hidden-alias.ll
private-hidden-function.ll
private-hidden-variable.ll
private-protected-alias.ll
private-protected-function.ll
private-protected-variable.ll
select.ll
short-hexpair.ll
source-filename-backslash.ll
source-filename.ll
thinlto-bad-summary1.ll [ThinLTO] Parse module summary index from assembly 2018-06-26 13:56:49 +00:00
thinlto-bad-summary2.ll [ThinLTO] Parse module summary index from assembly 2018-06-26 13:56:49 +00:00
thinlto-bad-summary3.ll [ThinLTO] Parse module summary index from assembly 2018-06-26 13:56:49 +00:00
thinlto-summary.ll [ThinLTO] Assembly representation of ReadOnly attribute 2018-11-23 10:54:51 +00:00
tls-models.ll
token.ll
unnamed-addr.ll
unnamed-alias.ll
unnamed-comdat.ll
unnamed.ll
unsized-recursive-type.ll
uselistorder.ll
uselistorder_bb.ll
vbool-cmp.ll
vector-cmp.ll
vector-select.ll
vector-shift.ll
x86mmx.ll