[PATCH] [ARM] More rigorous testing of build attribute encoding/decoding

Charlie Turner charlie.turner at arm.com
Wed Nov 19 04:30:00 PST 2014


Hi,

The current state of the world for build attribute testing is as follows,

  * `test/MC/ARM/directive-eabi_attribtues.s` -- this file tests that, for a small subset of <Attribute, Value> pairs, attributes are successfully encoded / decoded into / from assembly and object files.
  * `test/tools/llvm-readobj/ARM/attributes.s` -- this file tests that, for a smaller subset of <Attribute, Value> pairs, attributes are successfully encoded / decoded into / from object files.
  * `test/CodeGen/ARM/build-attributes.ll` -- Tests that the build attributes are correctly emitted in default cases, and when various command line options are specified (CPU, target attributes, etc)

The `test/tools/llvm-readobj/ARM/attributes.s` is redundant given that it tests an equally small (though different) subset of build attributes that the `test/MC/ARM/directive-eabi_attribtues.s` test tests. For ABI conformance, we should be testing every <Attribute, Value> pair, where feasible.

The description fields of tags are not being tested in this patch whereas they were being tested in `test/tools/llvm-readobj/ARM/attributes.s` (the removed file). I don't think it is useful to test the hard-coded strings in `tools/llvm-readobj/ARMAttributeParser.cpp`. As an aside, the strings are occasionally cryptic abbreviations for the actual descriptions in the ABI document. If these descriptions are going to be tested, they should be the descriptions verbatim out of the document IMO, not arbitrary abbreviations. I think this would be best left as a separate patch however.

The attached patch contains 163 separate test files. It would have been cleaner to bundle all tests into a single file and use conditional compilation to test each <Attribute, Value> pair, but I was unable to find a way of doing this with the LLVM driver tools. This is required because if you try and encode the same build attribute with two or more different values in the same input file, the object file emitter ignores all but the last specified build attribute.

Thank you for your time,
Charlie.

http://reviews.llvm.org/D6319

Files:
  test/tools/llvm-readobj/ARM/ABI_FP_16bit_format0.ll
  test/tools/llvm-readobj/ARM/ABI_FP_16bit_format1.ll
  test/tools/llvm-readobj/ARM/ABI_FP_16bit_format2.ll
  test/tools/llvm-readobj/ARM/ABI_FP_denormal0.ll
  test/tools/llvm-readobj/ARM/ABI_FP_denormal1.ll
  test/tools/llvm-readobj/ARM/ABI_FP_denormal2.ll
  test/tools/llvm-readobj/ARM/ABI_FP_exceptions0.ll
  test/tools/llvm-readobj/ARM/ABI_FP_exceptions1.ll
  test/tools/llvm-readobj/ARM/ABI_FP_number_model0.ll
  test/tools/llvm-readobj/ARM/ABI_FP_number_model1.ll
  test/tools/llvm-readobj/ARM/ABI_FP_number_model2.ll
  test/tools/llvm-readobj/ARM/ABI_FP_number_model3.ll
  test/tools/llvm-readobj/ARM/ABI_FP_optimization_goals0.ll
  test/tools/llvm-readobj/ARM/ABI_FP_optimization_goals1.ll
  test/tools/llvm-readobj/ARM/ABI_FP_optimization_goals2.ll
  test/tools/llvm-readobj/ARM/ABI_FP_optimization_goals3.ll
  test/tools/llvm-readobj/ARM/ABI_FP_optimization_goals4.ll
  test/tools/llvm-readobj/ARM/ABI_FP_optimization_goals5.ll
  test/tools/llvm-readobj/ARM/ABI_FP_optimization_goals6.ll
  test/tools/llvm-readobj/ARM/ABI_FP_rounding0.ll
  test/tools/llvm-readobj/ARM/ABI_FP_rounding1.ll
  test/tools/llvm-readobj/ARM/ABI_FP_user_exceptions0.ll
  test/tools/llvm-readobj/ARM/ABI_FP_user_exceptions1.ll
  test/tools/llvm-readobj/ARM/ABI_HardFP_use0.ll
  test/tools/llvm-readobj/ARM/ABI_HardFP_use1.ll
  test/tools/llvm-readobj/ARM/ABI_HardFP_use2.ll
  test/tools/llvm-readobj/ARM/ABI_HardFP_use3.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_GOT_use0.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_GOT_use1.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_GOT_use2.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_R9_use0.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_R9_use1.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_R9_use2.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_R9_use3.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_RO_data0.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_RO_data1.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_RO_data2.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_RW_data0.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_RW_data1.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_RW_data2.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_RW_data3.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_wchar_t0.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_wchar_t2.ll
  test/tools/llvm-readobj/ARM/ABI_PCS_wchar_t4.ll
  test/tools/llvm-readobj/ARM/ABI_VFP_args0.ll
  test/tools/llvm-readobj/ARM/ABI_VFP_args1.ll
  test/tools/llvm-readobj/ARM/ABI_VFP_args2.ll
  test/tools/llvm-readobj/ARM/ABI_VFP_args3.ll
  test/tools/llvm-readobj/ARM/ABI_WMMX_args0.ll
  test/tools/llvm-readobj/ARM/ABI_WMMX_args1.ll
  test/tools/llvm-readobj/ARM/ABI_WMMX_args2.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed0.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed1.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed10.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed11.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed12.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed2.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed3.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed4.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed5.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed6.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed7.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed8.ll
  test/tools/llvm-readobj/ARM/ABI_align_needed9.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved0.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved1.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved10.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved11.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved12.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved2.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved3.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved4.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved5.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved6.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved7.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved8.ll
  test/tools/llvm-readobj/ARM/ABI_align_preserved9.ll
  test/tools/llvm-readobj/ARM/ABI_enum_size0.ll
  test/tools/llvm-readobj/ARM/ABI_enum_size1.ll
  test/tools/llvm-readobj/ARM/ABI_enum_size2.ll
  test/tools/llvm-readobj/ARM/ABI_enum_size3.ll
  test/tools/llvm-readobj/ARM/ABI_optimization_goals0.ll
  test/tools/llvm-readobj/ARM/ABI_optimization_goals1.ll
  test/tools/llvm-readobj/ARM/ABI_optimization_goals2.ll
  test/tools/llvm-readobj/ARM/ABI_optimization_goals3.ll
  test/tools/llvm-readobj/ARM/ABI_optimization_goals4.ll
  test/tools/llvm-readobj/ARM/ABI_optimization_goals5.ll
  test/tools/llvm-readobj/ARM/ABI_optimization_goals6.ll
  test/tools/llvm-readobj/ARM/ARM_ISA_use0.ll
  test/tools/llvm-readobj/ARM/ARM_ISA_use1.ll
  test/tools/llvm-readobj/ARM/Advanced_SIMD_arch0.ll
  test/tools/llvm-readobj/ARM/Advanced_SIMD_arch1.ll
  test/tools/llvm-readobj/ARM/Advanced_SIMD_arch2.ll
  test/tools/llvm-readobj/ARM/Advanced_SIMD_arch3.ll
  test/tools/llvm-readobj/ARM/CPU_arch0.ll
  test/tools/llvm-readobj/ARM/CPU_arch1.ll
  test/tools/llvm-readobj/ARM/CPU_arch10.ll
  test/tools/llvm-readobj/ARM/CPU_arch11.ll
  test/tools/llvm-readobj/ARM/CPU_arch12.ll
  test/tools/llvm-readobj/ARM/CPU_arch13.ll
  test/tools/llvm-readobj/ARM/CPU_arch14.ll
  test/tools/llvm-readobj/ARM/CPU_arch2.ll
  test/tools/llvm-readobj/ARM/CPU_arch3.ll
  test/tools/llvm-readobj/ARM/CPU_arch4.ll
  test/tools/llvm-readobj/ARM/CPU_arch5.ll
  test/tools/llvm-readobj/ARM/CPU_arch6.ll
  test/tools/llvm-readobj/ARM/CPU_arch7.ll
  test/tools/llvm-readobj/ARM/CPU_arch8.ll
  test/tools/llvm-readobj/ARM/CPU_arch9.ll
  test/tools/llvm-readobj/ARM/CPU_arch_profile0.ll
  test/tools/llvm-readobj/ARM/CPU_arch_profile1.ll
  test/tools/llvm-readobj/ARM/CPU_arch_profile2.ll
  test/tools/llvm-readobj/ARM/CPU_arch_profile3.ll
  test/tools/llvm-readobj/ARM/CPU_arch_profile4.ll
  test/tools/llvm-readobj/ARM/CPU_arch_profile5.ll
  test/tools/llvm-readobj/ARM/CPU_unaligned_access0.ll
  test/tools/llvm-readobj/ARM/CPU_unaligned_access1.ll
  test/tools/llvm-readobj/ARM/DIV_use0.ll
  test/tools/llvm-readobj/ARM/DIV_use1.ll
  test/tools/llvm-readobj/ARM/DIV_use2.ll
  test/tools/llvm-readobj/ARM/FP_HP_extension0.ll
  test/tools/llvm-readobj/ARM/FP_HP_extension1.ll
  test/tools/llvm-readobj/ARM/FP_arch0.ll
  test/tools/llvm-readobj/ARM/FP_arch1.ll
  test/tools/llvm-readobj/ARM/FP_arch2.ll
  test/tools/llvm-readobj/ARM/FP_arch3.ll
  test/tools/llvm-readobj/ARM/FP_arch4.ll
  test/tools/llvm-readobj/ARM/FP_arch5.ll
  test/tools/llvm-readobj/ARM/FP_arch6.ll
  test/tools/llvm-readobj/ARM/FP_arch7.ll
  test/tools/llvm-readobj/ARM/FP_arch8.ll
  test/tools/llvm-readobj/ARM/MPextension_use0.ll
  test/tools/llvm-readobj/ARM/MPextension_use1.ll
  test/tools/llvm-readobj/ARM/PCS_config0.ll
  test/tools/llvm-readobj/ARM/PCS_config1.ll
  test/tools/llvm-readobj/ARM/PCS_config2.ll
  test/tools/llvm-readobj/ARM/PCS_config3.ll
  test/tools/llvm-readobj/ARM/PCS_config4.ll
  test/tools/llvm-readobj/ARM/PCS_config5.ll
  test/tools/llvm-readobj/ARM/PCS_config6.ll
  test/tools/llvm-readobj/ARM/PCS_config7.ll
  test/tools/llvm-readobj/ARM/THUMB_ISA_use0.ll
  test/tools/llvm-readobj/ARM/THUMB_ISA_use1.ll
  test/tools/llvm-readobj/ARM/THUMB_ISA_use2.ll
  test/tools/llvm-readobj/ARM/Virtualization_use0.ll
  test/tools/llvm-readobj/ARM/Virtualization_use1.ll
  test/tools/llvm-readobj/ARM/Virtualization_use2.ll
  test/tools/llvm-readobj/ARM/Virtualization_use3.ll
  test/tools/llvm-readobj/ARM/WMMX_arch0.ll
  test/tools/llvm-readobj/ARM/WMMX_arch1.ll
  test/tools/llvm-readobj/ARM/WMMX_arch2.ll
  test/tools/llvm-readobj/ARM/attributes.s
  test/tools/llvm-readobj/ARM/compatibility0.ll
  test/tools/llvm-readobj/ARM/compatibility1.ll
  test/tools/llvm-readobj/ARM/compatibility106.ll
  test/tools/llvm-readobj/ARM/compatibility178.ll
  test/tools/llvm-readobj/ARM/compatibility2.ll
  test/tools/llvm-readobj/ARM/compatibility216.ll
  test/tools/llvm-readobj/ARM/compatibility25.ll
  test/tools/llvm-readobj/ARM/compatibility33.ll
  test/tools/llvm-readobj/ARM/compatibility52.ll
  test/tools/llvm-readobj/ARM/compatibility55.ll
  test/tools/llvm-readobj/ARM/compatibility8.ll
  test/tools/llvm-readobj/ARM/compatibility80.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D6319.16377.patch
Type: text/x-patch
Size: 104906 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141119/803cb4f6/attachment.bin>


More information about the llvm-commits mailing list