[llvm-commits] [126379] apply reid's patch for PR1146
Jeff Cohen
jeffc at jolt-lang.org
Sun Apr 22 07:19:26 PDT 2007
The mirror has not been updated in two days. llvm-gcc is now
unbuildable by the public.
clattner at apple.com wrote:
> Revision: 126379
> Author: clattner
> Date: 2007-04-21 22:52:13 -0700 (Sat, 21 Apr 2007)
>
> Log Message:
> -----------
> apply reid's patch for PR1146
>
> Modified Paths:
> --------------
> apple-local/branches/llvm/gcc/llvm-types.cpp
>
> Modified: apple-local/branches/llvm/gcc/llvm-types.cpp
> ===================================================================
> --- apple-local/branches/llvm/gcc/llvm-types.cpp 2007-04-21 06:48:37 UTC (rev 126378)
> +++ apple-local/branches/llvm/gcc/llvm-types.cpp 2007-04-22 05:52:13 UTC (rev 126379)
> @@ -751,15 +751,17 @@
> for (; Args && TREE_TYPE(Args) != void_type_node; Args = TREE_CHAIN(Args))
> ABIConverter.HandleArgument(TREE_TYPE(Args));
>
> - ParamAttrsList *ParamAttrs = 0;
> + ParamAttrsList *PAL = 0;
>
> if (static_chain) {
> // Pass the static chain in a register.
> - ParamAttrs = new ParamAttrsList();
> - ParamAttrs->addAttributes(1, ParamAttr::InReg);
> + ParamAttrsVector Attrs;
> + ParamAttrsWithIndex PAWI; PAWI.index = 1; PAWI.attrs = ParamAttr::InReg;
> + Attrs.push_back(PAWI);
> + PAL = ParamAttrsList::get(Attrs);
> }
>
> - return FunctionType::get(RetTy, ArgTys, false, ParamAttrs);
> + return FunctionType::get(RetTy, ArgTys, false, PAL);
> }
>
> const FunctionType *TypeConverter::ConvertFunctionType(tree type,
> @@ -811,7 +813,7 @@
> // the parameter attribute in the FunctionType so any arguments passed to
> // the function will be correctly sign or zero extended to 32-bits by
> // the LLVM code gen.
> - ParamAttrsList Attrs;
> + ParamAttrsVector Attrs;
> uint16_t RAttributes = ParamAttr::None;
> if (CallingConv == CallingConv::C) {
> tree ResultTy = TREE_TYPE(type);
> @@ -827,8 +829,10 @@
> RAttributes |= ParamAttr::SExt;
> }
> }
> - if (RAttributes != ParamAttr::None)
> - Attrs.addAttributes(0, RAttributes);
> + if (RAttributes != ParamAttr::None) {
> + ParamAttrsWithIndex PAWI; PAWI.index = 0; PAWI.attrs = RAttributes;
> + Attrs.push_back(PAWI);
> + }
>
> unsigned Idx = 1;
> bool isFirstArg = true;
> @@ -838,16 +842,21 @@
> LLVM_TARGET_INIT_REGPARM(lparam, type);
> #endif // LLVM_TARGET_ENABLE_REGPARM
>
> - if (static_chain)
> + if (static_chain) {
> // Pass the static chain in a register.
> - Attrs.addAttributes(Idx++, ParamAttr::InReg);
> + ParamAttrsWithIndex PAWI; PAWI.index = Idx++; PAWI.attrs = ParamAttr::InReg;
> + Attrs.push_back(PAWI);
> + }
>
> // The struct return attribute must be associated with the first
> // parameter but that parameter may have other attributes too so we set up
> // the first Attributes value here based on struct return. This only works
> // Handle the structure return calling convention
> - if (ABIConverter.isStructReturn())
> - Attrs.addAttributes(Idx++, ParamAttr::StructRet);
> + if (ABIConverter.isStructReturn()) {
> + ParamAttrsWithIndex PAWI;
> + PAWI.index = Idx++; PAWI.attrs = ParamAttr::StructRet;
> + Attrs.push_back(PAWI);
> + }
>
> for (tree Args = TYPE_ARG_TYPES(type);
> Args && TREE_VALUE(Args) != void_type_node; Args = TREE_CHAIN(Args)) {
> @@ -873,18 +882,20 @@
> isVarArg, lparam);
> #endif // LLVM_TARGET_ENABLE_REGPARM
>
> - if (Attributes != ParamAttr::None)
> - Attrs.addAttributes(Idx, Attributes);
> + if (Attributes != ParamAttr::None) {
> + ParamAttrsWithIndex PAWI; PAWI.index = Idx; PAWI.attrs = Attributes;
> + Attrs.push_back(PAWI);
> + }
> Idx++;
> }
>
> // Only instantiate the parameter attributes if we got some
> - ParamAttrsList *ParamAttrs = 0;
> + ParamAttrsList *PAL = 0;
> if (!Attrs.empty())
> - ParamAttrs = new ParamAttrsList(Attrs);
> + PAL = ParamAttrsList::get(Attrs);
>
> // Finally, make the function type
> - return FunctionType::get(RetTy, ArgTypes, isVarArg, ParamAttrs);
> + return FunctionType::get(RetTy, ArgTypes, isVarArg, PAL);
> }
>
> //===----------------------------------------------------------------------===//
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
>
>
More information about the llvm-commits
mailing list