Index: include/llvm/IR/Intrinsics.td =================================================================== --- include/llvm/IR/Intrinsics.td +++ include/llvm/IR/Intrinsics.td @@ -240,7 +240,7 @@ string TargetPrefix = ""; // Set to a prefix for target-specific intrinsics. list RetTypes = ret_types; list ParamTypes = param_types; - list Properties = properties; + list IntrProperties = properties; bit isTarget = 0; } @@ -359,7 +359,7 @@ llvm_i32_ty, llvm_i1_ty], [IntrReadWriteArgMem, NoCapture<0>]>; -let Properties = [IntrNoMem] in { +let IntrProperties = [IntrNoMem] in { def int_fma : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>]>; @@ -421,7 +421,7 @@ // // None of these intrinsics accesses memory at all. -let Properties = [IntrNoMem] in { +let IntrProperties = [IntrNoMem] in { def int_bswap: Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>]>; def int_ctpop: Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>]>; def int_ctlz : Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>, llvm_i1_ty]>; @@ -435,7 +435,7 @@ // None of these intrinsics accesses memory at all...but that doesn't mean the // optimizers can change them aggressively. Special handling needed in a few // places. -let Properties = [IntrNoMem] in { +let IntrProperties = [IntrNoMem] in { def int_dbg_declare : Intrinsic<[], [llvm_metadata_ty, llvm_metadata_ty, @@ -472,7 +472,7 @@ def int_eh_dwarf_cfa : Intrinsic<[llvm_ptr_ty], [llvm_i32_ty]>; -let Properties = [IntrNoMem] in { +let IntrProperties = [IntrNoMem] in { def int_eh_sjlj_lsda : Intrinsic<[llvm_ptr_ty]>; def int_eh_sjlj_callsite : Intrinsic<[], [llvm_i32_ty]>; } @@ -597,7 +597,7 @@ def int_donothing : Intrinsic<[], [], [IntrNoMem]>; // Intrisics to support half precision floating point format -let Properties = [IntrNoMem] in { +let IntrProperties = [IntrNoMem] in { def int_convert_to_fp16 : Intrinsic<[llvm_i16_ty], [llvm_anyfloat_ty]>; def int_convert_from_fp16 : Intrinsic<[llvm_anyfloat_ty], [llvm_i16_ty]>; } Index: include/llvm/IR/IntrinsicsAArch64.td =================================================================== --- include/llvm/IR/IntrinsicsAArch64.td +++ include/llvm/IR/IntrinsicsAArch64.td @@ -159,7 +159,7 @@ // Arithmetic ops -let Properties = [IntrNoMem] in { +let IntrProperties = [IntrNoMem] in { // Vector Add Across Lanes def int_aarch64_neon_saddv : AdvSIMD_1VectorArg_Int_Across_Intrinsic; def int_aarch64_neon_uaddv : AdvSIMD_1VectorArg_Int_Across_Intrinsic; @@ -212,7 +212,7 @@ // Vector Extending Multiply def int_aarch64_neon_fmulx : AdvSIMD_2FloatArg_Intrinsic { - let Properties = [IntrNoMem, Commutative]; + let IntrProperties = [IntrNoMem, Commutative]; } // Vector Saturating Doubling Long Multiply Index: include/llvm/IR/IntrinsicsARM.td =================================================================== --- include/llvm/IR/IntrinsicsARM.td +++ include/llvm/IR/IntrinsicsARM.td @@ -207,7 +207,7 @@ // Arithmetic ops -let Properties = [IntrNoMem, Commutative] in { +let IntrProperties = [IntrNoMem, Commutative] in { // Vector Add. def int_arm_neon_vhadds : Neon_2Arg_Intrinsic; Index: include/llvm/Target/TargetSelectionDAG.td =================================================================== --- include/llvm/Target/TargetSelectionDAG.td +++ include/llvm/Target/TargetSelectionDAG.td @@ -300,7 +300,9 @@ //===----------------------------------------------------------------------===// // Selection DAG Pattern Operations -class SDPatternOperator; +class SDPatternOperator { + list Properties = []; +} //===----------------------------------------------------------------------===// // Selection DAG Node definitions. @@ -310,7 +312,7 @@ : SDPatternOperator { string Opcode = opcode; string SDClass = sdclass; - list Properties = props; + let Properties = props; SDTypeProfile TypeProfile = typeprof; } Index: test/TableGen/intrinsic-long-name.td =================================================================== --- test/TableGen/intrinsic-long-name.td +++ test/TableGen/intrinsic-long-name.td @@ -19,7 +19,7 @@ string TargetPrefix = ""; list RetTypes = []; list ParamTypes = param_types; - list Properties = []; + list IntrProperties = []; } def iAny : ValueType<0, 254>; Index: test/TableGen/intrinsic-varargs.td =================================================================== --- test/TableGen/intrinsic-varargs.td +++ test/TableGen/intrinsic-varargs.td @@ -19,7 +19,7 @@ string TargetPrefix = ""; list RetTypes = []; list ParamTypes = param_types; - list Properties = []; + list IntrProperties = []; } // isVoid needs to match the definition in ValueTypes.td Index: utils/TableGen/CodeGenTarget.cpp =================================================================== --- utils/TableGen/CodeGenTarget.cpp +++ utils/TableGen/CodeGenTarget.cpp @@ -565,7 +565,7 @@ } // Parse the intrinsic properties. - ListInit *PropList = R->getValueAsListInit("Properties"); + ListInit *PropList = R->getValueAsListInit("IntrProperties"); for (unsigned i = 0, e = PropList->size(); i != e; ++i) { Record *Property = PropList->getElementAsRecord(i); assert(Property->isSubClassOf("IntrinsicProperty") &&