Commit Graph

4356 Commits

Author SHA1 Message Date
Bill Wendling fbd38fe2e3 Add an enum for the return and function indexes into the AttrListPtr object. This gets rid of some magic numbers.
llvm-svn: 165924
2012-10-15 07:29:08 +00:00
Bill Wendling 79d45dbbf9 Use a ::get method to create the attribute from Attributes::AttrVals instead of a constructor.
llvm-svn: 165923
2012-10-15 06:53:28 +00:00
Bill Wendling 8c3e65db52 Move the AttributesImpl header file into the VMCore directory so that it can be opaque.
llvm-svn: 165920
2012-10-15 05:40:12 +00:00
Bill Wendling d079a446d7 Attributes Rewrite
Convert the internal representation of the Attributes class into a pointer to an
opaque object that's uniqued by and stored in the LLVMContext object. The
Attributes class then becomes a thin wrapper around this opaque
object. Eventually, the internal representation will be expanded to include
attributes that represent code generation options, etc.

llvm-svn: 165917
2012-10-15 04:46:55 +00:00
Bill Wendling 5ae76a379c Remove dead methods.
llvm-svn: 165902
2012-10-14 09:21:44 +00:00
Bill Wendling 76d2cd2f60 Remove operator cast method in favor of querying with the correct method.
llvm-svn: 165899
2012-10-14 08:54:26 +00:00
Benjamin Kramer 6bbdf70818 Fix use after free when deleting attributes in a chained folding set.
Can't follow the intrusive linked list when the element is gone.

llvm-svn: 165898
2012-10-14 08:48:40 +00:00
Bill Wendling a0f3e8d1cb Don't use the new syntax just yet.
llvm-svn: 165897
2012-10-14 08:25:35 +00:00
Bill Wendling 2a3c1cca7d Remove the bitwise AND operators from the Attributes class. Replace it with the equivalent from the builder class.
llvm-svn: 165896
2012-10-14 07:52:48 +00:00
Bill Wendling 722b26c0f2 Remove the bitwise assignment OR operator from the Attributes class. Replace it with the equivalent from the builder class.
llvm-svn: 165895
2012-10-14 07:35:59 +00:00
Bill Wendling 5c407ed3ab Remove the bitwise OR operator from the Attributes class. Replace it with the equivalent from the builder class.
llvm-svn: 165894
2012-10-14 07:17:34 +00:00
Bill Wendling a05b043c4a Remove the bitwise XOR operator from the Attributes class. Replace it with the equivalent from the builder class.
llvm-svn: 165893
2012-10-14 06:56:13 +00:00
Bill Wendling 85a64c217f Remove the bitwise NOT operator from the Attributes class. Replace it with the equivalent from the builder class.
llvm-svn: 165892
2012-10-14 06:39:53 +00:00
Bill Wendling 1fcc82225a Decode the LLVM attributes from bitcode using the attributes builder.
llvm-svn: 165891
2012-10-14 04:10:01 +00:00
Bill Wendling abd5ba2523 Use builder to create alignment attributes. Remove dead function.
llvm-svn: 165890
2012-10-14 03:58:29 +00:00
Bill Wendling 9d7ba8da47 Add the LLVM context to this c'tor. It will be needed in the future.
llvm-svn: 165687
2012-10-11 01:10:00 +00:00
Bill Wendling 13410278b6 Support a common idiom on how to build an Attributes class with a single attribute.
llvm-svn: 165686
2012-10-11 01:05:52 +00:00
Nadav Rotem e10328737d Add a new interface to allow IR-level passes to access codegen-specific information.
llvm-svn: 165665
2012-10-10 22:04:55 +00:00
Sean Silva c399c753d9 Revert r165652: "Remove unnecessary RTTI from the build."
... Apparently the RTTI is still necessary for some reason.

llvm-svn: 165654
2012-10-10 20:50:36 +00:00
Sean Silva 9b72524e54 Remove unnecessary RTTI from the build.
llvm-svn: 165652
2012-10-10 20:27:20 +00:00
Bill Wendling 7f1c5472b5 Cleanup. Get rid of now dead code.
llvm-svn: 165613
2012-10-10 08:03:34 +00:00
Bill Wendling bbcdf4e2a5 Remove the final bits of Attributes being declared in the Attribute
namespace. Use the attribute's enum value instead. No functionality change
intended.

llvm-svn: 165610
2012-10-10 07:36:45 +00:00
Bill Wendling ff758fbd45 Use the attribute enums to query if a function has an attribute.
llvm-svn: 165551
2012-10-09 21:49:51 +00:00
Bill Wendling 8ccd6ca199 Use the attribute enums to query if a parameter has an attribute.
llvm-svn: 165550
2012-10-09 21:38:14 +00:00
Bill Wendling b3723341f3 Revert r165547 to fix build.
llvm-svn: 165548
2012-10-09 20:56:48 +00:00
Bill Wendling 5abc0ef174 Use a single location for calculating the alignments.
llvm-svn: 165547
2012-10-09 20:55:16 +00:00
Bill Wendling 4caad41f1e Use appropriate method calls to get the alignment value.
llvm-svn: 165541
2012-10-09 20:28:54 +00:00
Bill Wendling 9864a6557e Inline the checks for mutually exclusive attributes since they're used in only one module.
llvm-svn: 165539
2012-10-09 20:11:19 +00:00
Bill Wendling 7c04e04a75 Move the 'FunctionOnly' attributes thingy inside of the Attributes class.
llvm-svn: 165530
2012-10-09 19:01:18 +00:00
Micah Villmow 89021e4740 Add in the first step of the multiple pointer support. This adds in support to the data layout for specifying a per address space pointer size.
The next step is to update the optimizers to allow them to optimize the different address spaces with this information.

llvm-svn: 165505
2012-10-09 16:06:12 +00:00
Bill Wendling 908126a745 Move the 'ParameterOnly' variable inside of the Attributes class and make it a method.
llvm-svn: 165497
2012-10-09 09:51:10 +00:00
Bill Wendling 217c9b1916 Remove the now dead VarArgsIncompatible variable.
llvm-svn: 165496
2012-10-09 09:33:01 +00:00
Bill Wendling 1c1b324ccf Use the enum value of the attributes when removing them from the attributes builder.
llvm-svn: 165495
2012-10-09 09:17:28 +00:00
Bill Wendling 93f70b78fd Use the enum value of the attributes when adding them to the attributes builder.
llvm-svn: 165494
2012-10-09 09:11:20 +00:00
Alexey Samsonov 3b861ec989 Fix PR14016.
DeadArgumentElimination pass can replace one LLVM function with another,
invalidating a pointer stored in debug info metadata entry for this function.
To fix this, we collect debug info descriptors for functions before
running a DeadArgumentElimination pass and "patch" pointers in metadata nodes
if we replace a function.

llvm-svn: 165490
2012-10-09 08:13:15 +00:00
Bill Wendling c9b22d735a Create enums for the different attributes.
We use the enums to query whether an Attributes object has that attribute. The
opaque layer is responsible for knowing where that specific attribute is stored.

llvm-svn: 165488
2012-10-09 07:45:08 +00:00
Bill Wendling bcd425b094 Remove some dead methods.
llvm-svn: 165485
2012-10-09 05:54:39 +00:00
Bill Wendling 375eb1f980 Remove more uses of the attribute enums by supplying appropriate query methods for them.
No functionality change intended.

llvm-svn: 165466
2012-10-09 00:28:54 +00:00
Bill Wendling 70f3917b0e Convert to using the Attributes::Builder interface.
llvm-svn: 165465
2012-10-09 00:01:21 +00:00
Bill Wendling c6daefad7e Use the Attributes::Builder to build the attributes in the parser.
llvm-svn: 165458
2012-10-08 23:27:46 +00:00
Bill Wendling 68d240175b Convert the LLVM parser over to using the new Attributes::Builder to build its
attributes objects.

llvm-svn: 165436
2012-10-08 22:20:14 +00:00
Bill Wendling 73ea2defb2 Begin the transition to using the AttributesImpl object for the Attributes ivar.
Start using the AttributesImpl object to hold the value of the attributes. All
queries go through the interfaces now.

This has one unfortunate consequence. I needed to move the AttributesImpl.h file
into include/llvm. But this is only temporary! Otherwise, the changes needed to
support this would be too large.

llvm-svn: 165433
2012-10-08 21:47:17 +00:00
Micah Villmow cdfe20b97f Move TargetData to DataLayout.
llvm-svn: 165402
2012-10-08 16:38:25 +00:00
Bill Wendling be7c6f23a2 Move more methods out-of-line. This is in preparation for changing the internal
contents of the Attributes class over to an AttributesImpl.

llvm-svn: 165373
2012-10-07 08:55:05 +00:00
Micah Villmow 6d05e69d5a Implement TargetData with the DataLayout class, this will allow LLVM projects to transition to DataLayout without loosing functionality.
llvm-svn: 165318
2012-10-05 17:02:14 +00:00
Bill Wendling abf3febad3 Move methods out-of-line.
The internal representation of the Attributes class will be opaque. All of the
query methods will need to query the opaque class. Therefore, these methods need
to be out-of-line.
No functionality change intended.

llvm-svn: 165305
2012-10-05 06:44:41 +00:00
Bill Wendling f3216e9536 Use method to query for attributes.
llvm-svn: 165304
2012-10-05 06:18:50 +00:00
Eli Friedman c6c86c43f9 Make sure to generate the right kind of MDNode for enum forward declarations.
PR14029, LLVM part.

llvm-svn: 165288
2012-10-05 01:49:14 +00:00
Micah Villmow b4faa15125 Rename the Target specific passes in the DataLayout class to be Target agnostic.
llvm-svn: 165270
2012-10-04 23:01:22 +00:00
Micah Villmow ac34b5c9e5 Resubmit the copying of TargetData to DataLayout without any changes to the files, this should fix the problems and the changes to rename to DataLayout will come next.
llvm-svn: 165262
2012-10-04 22:08:14 +00:00