Remove the handling of ParameterAttributes from FunctionType as they are
their own object defined in ParameterAttributes.h now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35805 91177308-0d34-0410-b5e6-96231b3b80d8
small. Since it doesn't cost much to have 2 more (8 bytes), but not having
them would require a malloc as soon as the third one is needed. Setting
the default to 4 delays the malloc until the 5th parameter attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35793 91177308-0d34-0410-b5e6-96231b3b80d8
* Allow attributes to be added and removed singly or jointly so that in
the future something like -pruneh can manipulate them more easily.
* Move functions generally only useful for LLVM internals to the end of
the accessors list instead of the beginning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35780 91177308-0d34-0410-b5e6-96231b3b80d8
ETForest updating mechanisms don't work as I thought they did. These changes
will be reapplied once the issue is worked out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35741 91177308-0d34-0410-b5e6-96231b3b80d8
This dramatically reduce the amount of memory allocated by the commandline stuff
at static init time, changing it to build local data structures when ParseCommandLineOptions
is called. In a dummy empty program that links some llvm libraries, this reduces
the number of malloc'd bytes from 4864 to 3360 on entry to main. Most of that
memory is now allocated by non-commandline related stuff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35701 91177308-0d34-0410-b5e6-96231b3b80d8
information. This is useful when a value does have a sign associated with
it. This shouldn't be used generally in LLVM for mid-level optimizer stuff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35681 91177308-0d34-0410-b5e6-96231b3b80d8
go to the same destination. Now we're producing really good code for
switch-lower-feature.ll testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35672 91177308-0d34-0410-b5e6-96231b3b80d8
symbol table does no allocations for prototypes or other lazily deserialized
functions, saving significant space and time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35643 91177308-0d34-0410-b5e6-96231b3b80d8
Implement bswap, ctpop, ctlz, and cttz utilizing the new overloaded
intrinsic feature of tblgen. By defining llvm_int_ty to have an ValueType
of iAny, any intrinsic using that type becomes an overloaded intrinsic.
This signals that a) any integer type could be used for that argument and
b) the intrinsic needs a suffix to match each such argument for the
actual intrinsic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35544 91177308-0d34-0410-b5e6-96231b3b80d8
Intrinsic functions might need to be generated (if they are overloaded) so
returning a const char* is no longer possible. Change getOperationName to
return a std::string instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35543 91177308-0d34-0410-b5e6-96231b3b80d8
Change the interface to the getName, getType, getDeclaration methods to
include the "actual" types of the result/arguments. This is necessary to
support overloaded intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35542 91177308-0d34-0410-b5e6-96231b3b80d8
Add an "iAny" ValueType as a place holder for an integer type of any
bit width. This is used for intrinsics overloading on integer type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35538 91177308-0d34-0410-b5e6-96231b3b80d8