]> granicus.if.org Git - llvm/commit
[IR] Abstract away ArgNo+1 attribute indexing as much as possible
authorReid Kleckner <rnk@google.com>
Wed, 3 May 2017 18:17:31 +0000 (18:17 +0000)
committerReid Kleckner <rnk@google.com>
Wed, 3 May 2017 18:17:31 +0000 (18:17 +0000)
commita82b376f696ec85c15b6b51052a0fd2b48ee66e3
tree6217112f9abca58313690371b24250fbea2a263b
parentb95636bcabfe7bb7c4e3b4b487eb5d5d3a864826
[IR] Abstract away ArgNo+1 attribute indexing as much as possible

Summary:
Do three things to help with that:
- Add AttributeList::FirstArgIndex, which is an enumerator currently set
  to 1. It allows us to change the indexing scheme with fewer changes.
- Add addParamAttr/removeParamAttr. This just shortens addAttribute call
  sites that would otherwise need to spell out FirstArgIndex.
- Remove some attribute-specific getters and setters from Function that
  take attribute list indices.  Most of these were only used from
  BuildLibCalls, and doesNotAlias was only used to test or set if the
  return value is malloc-like.

I'm happy to split the patch, but I think they are probably easier to
review when taken together.

This patch should be NFC, but it sets the stage to change the indexing
scheme to this, which is more convenient when indexing into an array:
  0: func attrs
  1: retattrs
  2...: arg attrs

Reviewers: chandlerc, pete, javed.absar

Subscribers: david2050, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302060 91177308-0d34-0410-b5e6-96231b3b80d8
25 files changed:
include/llvm/IR/Attributes.h
include/llvm/IR/CallSite.h
include/llvm/IR/Function.h
include/llvm/IR/Instructions.h
lib/Analysis/CFLGraph.h
lib/CodeGen/GlobalISel/CallLowering.cpp
lib/IR/Attributes.cpp
lib/IR/Function.cpp
lib/IR/Instructions.cpp
lib/Target/AArch64/AArch64CallLowering.cpp
lib/Target/ARM/ARMCallLowering.cpp
lib/Target/X86/X86WinEHState.cpp
lib/Transforms/Coroutines/CoroSplit.cpp
lib/Transforms/IPO/ArgumentPromotion.cpp
lib/Transforms/IPO/FunctionAttrs.cpp
lib/Transforms/InstCombine/InstCombineCalls.cpp
lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
lib/Transforms/Instrumentation/InstrProfiling.cpp
lib/Transforms/ObjCARC/ARCRuntimeEntryPoints.h
lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
lib/Transforms/Utils/BuildLibCalls.cpp
lib/Transforms/Utils/SimplifyLibCalls.cpp
unittests/ExecutionEngine/Orc/IndirectionUtilsTest.cpp
utils/TableGen/IntrinsicEmitter.cpp