Commit Graph

3428 Commits

Author SHA1 Message Date
Victor Hernandez 5d6551816b Improve llvm.dbg.declare intrinsic by referring directly to the storage in its first argument, via function-local metadata (instead of via a bitcast).
This patch also cleans up code that expects there to be a bitcast in the first argument and testcases that call llvm.dbg.declare.

llvm-svn: 93504
2010-01-15 03:37:48 +00:00
Victor Hernandez 8296da7b56 In debug builds, assert that function-local metadata has only 1 parent function
llvm-svn: 93449
2010-01-14 20:12:34 +00:00
Victor Hernandez 61e6e829c6 Fix printing of function-local metadata in AsmWriter
llvm-svn: 93402
2010-01-14 01:47:37 +00:00
Victor Hernandez 8c85e25589 Add MDNode::getFunction(), which figures out the metadata's function, if it has function that it is local to.
llvm-svn: 93400
2010-01-14 01:45:14 +00:00
Benjamin Kramer 2e06b93f43 Introduce Twine::toStringRef, a variant of toVector which avoids the copy if the
twine can be represented as a single StringRef. Use the new methode to simplify
some twine users.

llvm-svn: 93317
2010-01-13 12:45:23 +00:00
Chris Lattner 98b05e017b don't add the \1 to the name.
llvm-svn: 93304
2010-01-13 07:50:21 +00:00
Chris Lattner 1126534dce add new isSingleStringRef()/getSingleStringRef() methods to twine,
and use them to avoid a copy of a string in getNameWithPrefix in
the common case.  It seems like Value::setName and other places 
should use this as well?

llvm-svn: 93301
2010-01-13 07:12:06 +00:00
Chris Lattner 33535b3250 ugh, my last patch just sped up a method and changed all the clients
that I want to completely eliminate.  Add fixme's so I remember this
in the future, and add the missing helper that they should be upgraded
to use instead.

llvm-svn: 93300
2010-01-13 07:01:09 +00:00
Chris Lattner 209aecad0c change Mangler::makeNameProper to return its result in a SmallVector
instead of returning it in an std::string.  Based on this change:

1. Change TargetLoweringObjectFileCOFF::getCOFFSection to take a StringRef
2. Change a bunch of targets to call makeNameProper with a smallstring,
   making several of them *much* more efficient.
3. Rewrite Mangler::makeNameProper to not build names and then prepend
   prefixes, not use temporary std::strings, and to avoid other crimes.

llvm-svn: 93298
2010-01-13 06:38:18 +00:00
Chris Lattner b252cbb04c my mistake, Mangler::makeNameProper wants to take a twine, not a stringref!
llvm-svn: 93296
2010-01-13 05:02:57 +00:00
Chris Lattner 04a7ce850d change makeNameProper to take a stringref instead of std::string.
llvm-svn: 93295
2010-01-13 04:55:33 +00:00
Dale Johannesen 7b1a7ed330 Further progration of metadata operands. The
dumper doesn't really do what I want yet, but
at least it doesn't crash now.

llvm-svn: 93272
2010-01-13 00:00:24 +00:00
Devang Patel f76941ed83 Use Twine, instead of StringRef, for consistency.
llvm-svn: 93249
2010-01-12 18:57:56 +00:00
Devang Patel 943ddf666d Use ilist_tratis to autoinsert and remove NamedMDNode from MDSymbolTable.
llvm-svn: 93247
2010-01-12 18:34:06 +00:00
Benjamin Kramer c6fe3c3273 Reimplement getToken and SplitString as "StringRef helper functions"
- getToken is modeled after StringRef::split but it can split on multiple
  separator chars and skips leading seperators.
- SplitString is a StringRef::split variant for more than 2 elements with the
  same behaviour as getToken.

llvm-svn: 93161
2010-01-11 18:03:24 +00:00
Victor Hernandez 9ce5b5134d Respond to Chris' review:
Make InsertDbgValueIntrinsic() and get Offset take and recieve a uint64_t.
Get constness correct for getVariable() and getValue().

llvm-svn: 93149
2010-01-11 07:45:19 +00:00
Chris Lattner 5370ae7b70 fix a buggy assertion, CreateIntegerCast should allow
integer vectors as well as just integers.

llvm-svn: 93126
2010-01-10 20:21:42 +00:00
Mikhail Glushenkov ed3bd13c3a Suppress a warning on gcc 4.4.
warning: suggest parentheses around ‘&&’ within ‘||’.
llvm-svn: 93121
2010-01-10 18:48:49 +00:00
Victor Hernandez b8fd152d94 Compute isFunctionLocal in MDNode ctor or via argument in new function getWhenValsUnresolved().
Document PFS argument to ParseValID() and ConvertGlobalOrMetadataValIDToValue().

llvm-svn: 93108
2010-01-10 07:14:18 +00:00
Chris Lattner 25963c6113 "In order to ease automatic bindings generation, it would be helpful if boolean values were distinguishable from integers. The attached patch introduces "typedef int LLVMBool;", and uses LLVMBool instead of int throughout the C API, wherever a boolean value is called for."
Patch by James Y Knight!

llvm-svn: 93079
2010-01-09 22:27:07 +00:00
Devang Patel 71ff547575 Delete NamedMDSymTable while destrucing Module.
Disable  copy ctor and operator= for NamedMDSymTable. Hide typedef that should be public.

llvm-svn: 93041
2010-01-09 01:44:59 +00:00
Devang Patel 99ff5a864b Derive NamedMDNode from Value.
llvm-svn: 93032
2010-01-09 00:30:14 +00:00
Devang Patel fcfee0ff35 Use separate namespace for named metadata.
llvm-svn: 92931
2010-01-07 19:39:36 +00:00
Devang Patel 6edcd3994c Allow null to be an element of NamedMDNode. e.g. !llvm.stuff = !{!0, !1, null}
llvm-svn: 92783
2010-01-05 21:47:32 +00:00
Victor Hernandez c2044a1193 Fix comment for CheckDebugInfoIntrinsics
llvm-svn: 92774
2010-01-05 21:13:46 +00:00
Benjamin Kramer d2564e3afb Move remaining stuff to the isInteger predicate.
llvm-svn: 92771
2010-01-05 21:05:54 +00:00
Devang Patel e307348325 NamedMDNode is a collection MDNodes.
llvm-svn: 92761
2010-01-05 20:41:31 +00:00
Benjamin Kramer a81a6dff0d Convert a ton of simple integer type equality tests to the new predicate.
llvm-svn: 92760
2010-01-05 20:07:06 +00:00
Benjamin Kramer 76aa677ec3 Add a new predicate for integer type equality tests.
llvm-svn: 92759
2010-01-05 20:04:48 +00:00
Benjamin Kramer ccce8bae14 Avoid going through the LLVMContext for type equality where it's safe to dereference the type pointer.
llvm-svn: 92726
2010-01-05 13:12:22 +00:00
David Greene 338a9030a2 Fix a build error and change errs() to dbgs().
llvm-svn: 92669
2010-01-05 01:34:26 +00:00
David Greene 5f2433ef29 Change errs() to dbgs().
llvm-svn: 92665
2010-01-05 01:30:18 +00:00
David Greene 2c8121fdcb Change errs() to dbgs().
llvm-svn: 92664
2010-01-05 01:30:14 +00:00
David Greene 3f907a9779 Change errs() to dbgs().
llvm-svn: 92663
2010-01-05 01:30:09 +00:00
David Greene 73631b995f Change errs() to dbgs().
llvm-svn: 92662
2010-01-05 01:30:06 +00:00
David Greene dfe4ad71b0 Change errs() to dbgs().
llvm-svn: 92661
2010-01-05 01:30:04 +00:00
David Greene 994e1bbdd1 Change errs() to dbgs().
llvm-svn: 92660
2010-01-05 01:30:02 +00:00
David Greene 3652f2aeb6 Change errs() to dbgs().
llvm-svn: 92659
2010-01-05 01:30:00 +00:00
David Greene f701473f9f Change errs() to dbgs().
llvm-svn: 92658
2010-01-05 01:29:58 +00:00
David Greene 58e9cbbede Change errs() to dbgs().
llvm-svn: 92657
2010-01-05 01:29:55 +00:00
David Greene 6abc01ebf9 Change errs() to dbgs().
llvm-svn: 92656
2010-01-05 01:29:39 +00:00
David Greene c7f9b12207 Change errs() to dbgs().
llvm-svn: 92652
2010-01-05 01:29:26 +00:00
David Greene 1e27a13838 Change errs() to dbgs().
llvm-svn: 92650
2010-01-05 01:29:19 +00:00
David Greene 7749903658 Change errs() to dbgs().
llvm-svn: 92649
2010-01-05 01:29:14 +00:00
Devang Patel be94f23992 Remove dead debug info intrinsics.
Intrinsic::dbg_stoppoint
 Intrinsic::dbg_region_start 
 Intrinsic::dbg_region_end 
 Intrinsic::dbg_func_start
AutoUpgrade simply ignores these intrinsics now.

llvm-svn: 92557
2010-01-05 01:10:40 +00:00
Dan Gohman fc76441623 Add a comment.
llvm-svn: 92492
2010-01-04 18:38:39 +00:00
Chris Lattner fd11f49b4e it isn't safe to speculative load from a malloc, it might have
returned null, and may not have been big enough in any case.  
Thanks to Jay Foad for pointing this out!

llvm-svn: 92452
2010-01-03 18:14:24 +00:00
Chris Lattner a7cfc43af8 differences between two blockaddress's don't cause a
global variable initializer to require relocations.

llvm-svn: 92450
2010-01-03 18:09:40 +00:00
Chris Lattner d5bace7092 fix refactoro
llvm-svn: 92349
2009-12-31 08:23:09 +00:00
Chris Lattner b419a1e44f use early exits to reduce indentation.
llvm-svn: 92335
2009-12-31 02:33:14 +00:00
Chris Lattner cdec581a35 eliminate another copy of the mdnode printing logic, simplify the
one that remains.

llvm-svn: 92334
2009-12-31 02:31:59 +00:00
Chris Lattner 0d50bddda6 random tidying for MDNode printing.
llvm-svn: 92333
2009-12-31 02:27:30 +00:00
Chris Lattner efb5e39428 eliminate a bunch of useless forwarding functions with one caller.
llvm-svn: 92332
2009-12-31 02:23:35 +00:00
Chris Lattner cf4a76e441 make mdnMap type safe, rename accessors for consistency with the rest of llvm.
llvm-svn: 92331
2009-12-31 02:20:11 +00:00
Chris Lattner 01635a8428 metadata can't be a global var initializer.
llvm-svn: 92330
2009-12-31 02:15:45 +00:00
Chris Lattner bddea6a530 simplify mdnode printing logic. Now N->dump() only
dumps one node instead of all of them.

llvm-svn: 92329
2009-12-31 02:13:35 +00:00
Chris Lattner 2c48c64821 unify two copies of the NamedMDNode printing code.
llvm-svn: 92327
2009-12-31 01:54:05 +00:00
Chris Lattner b9196679f9 fix printing of function-local metadata to print all the operands of the
mdnode, not just operand 0 over and over.

llvm-svn: 92326
2009-12-31 01:44:44 +00:00
Chris Lattner 31fcc28a84 simplify printing of mdstring and Argument.
llvm-svn: 92325
2009-12-31 01:41:14 +00:00
Chris Lattner be2de79b77 simplify asmprinting of NamedMDNode
llvm-svn: 92324
2009-12-31 01:36:50 +00:00
Chris Lattner cc8c8146d2 Remove #include of metadata.h from intrinsicinst.h. The only
method that needs it (DbgValueInst::getValue) has been moved out
of line.

llvm-svn: 92323
2009-12-31 01:32:41 +00:00
Chris Lattner 9b493028df rename "elements" of metadata to "operands". "Elements" are
things that occur in types.  "operands" are things that occur
in values.

llvm-svn: 92322
2009-12-31 01:22:29 +00:00
Chris Lattner 8cb6c3476d Optimize MDNode to coallocate the operand list immediately
after the MDNode in memory.  This eliminates the operands
pointer and saves a new[] per node.

Note that the code in DIDerivedType::replaceAllUsesWith is wrong
and quite scary.  A MDNode should not be RAUW'd with something
else: this changes all uses of the mdnode, which may not be debug
info related!  Debug info should use something non-mdnode for
declarations.

llvm-svn: 92321
2009-12-31 01:05:46 +00:00
Chris Lattner 30ae06be14 do not bother reuniquing mdnodes whose operands drop to null. Doing
so can be a huge performance issue when tearing down modules and mdnodes
are not guaranteed to be unique anyway.  This speeds up:
$ time ~/llvm/Release/bin/clang gcc.c -w -S -g

from 72 to 35s, where gcc.c is from:
http://people.csail.mit.edu/smcc/projects/single-file-programs/

llvm-svn: 92315
2009-12-30 21:42:11 +00:00
Chris Lattner 09660c9b06 remove some misleading comments.
llvm-svn: 92311
2009-12-30 20:25:09 +00:00
Chris Lattner 93163c401e Do not crash when .ll printing metadata that smells like debug info, but isn't.
llvm-svn: 92268
2009-12-29 21:17:33 +00:00
Chris Lattner a0566979b7 Final step in the metadata API restructuring: move the
getMDKindID/getMDKindNames methods to LLVMContext (and add
convenience methods to Module), eliminating MetadataContext.
Move the state that it maintains out to LLVMContext.

llvm-svn: 92259
2009-12-29 09:01:33 +00:00
Chris Lattner 5508da383a privatize another interface.
llvm-svn: 92255
2009-12-29 07:56:15 +00:00
Chris Lattner c88199e999 the only call to this function (from clang) has been removed, zap it.
llvm-svn: 92254
2009-12-29 07:50:09 +00:00
Chris Lattner 68017800cd remove some unneeded Metadata interfaces.
llvm-svn: 92252
2009-12-29 07:44:16 +00:00
Chris Lattner 031560c2c7 tidy up debug info comments, use ->isVoidTy() where reasonable.
llvm-svn: 92249
2009-12-29 07:25:48 +00:00
Chris Lattner 241264ee32 When doing v1->RAUW(v2), don't do anything to metadata. We don't know
why one was replaced with the other.  Even in the specific case of 
debug information, it doesn't make sense to transfer the location over,
this will just result in jumbled loc info.

llvm-svn: 92241
2009-12-29 02:53:52 +00:00
Chris Lattner d8eb2cf571 sink the Instruction::HasMetadata bit into SubclassData.
llvm-svn: 92240
2009-12-29 02:46:09 +00:00
Chris Lattner b9c8651b8c add a layer of accessors around the Value::SubClassData member, and use
a convention (shadowing the setter with private forwarding function) to
prevent subclasses from accidentally using it.

This exposed some bogosity in ConstantExprs, which was propaging the
opcode of the constant expr into the NUW/NSW/Exact field in the
getWithOperands/getWithOperandReplaced methods.

llvm-svn: 92239
2009-12-29 02:14:09 +00:00
Chris Lattner 2f2aa2b067 This is a major cleanup of the instruction metadata interfaces that
I asked Devang to do back on Sep 27.  Instead of going through the
MetadataContext class with methods like getMD() and getMDs(), just
ask the instruction directly for its metadata with getMetadata()
and getAllMetadata().

This includes a variety of other fixes and improvements: previously
all Value*'s were bloated because the HasMetadata bit was thrown into
value, adding a 9th bit to a byte.  Now this is properly sunk down to
the Instruction class (the only place where it makes sense) and it
will be folded away somewhere soon.

This also fixes some confusion in getMDs and its clients about 
whether the returned list is indexed by the MDID or densely packed.
This is now returned sorted and densely packed and the comments make
this clear.

This introduces a number of fixme's which I'll follow up on.

llvm-svn: 92235
2009-12-28 23:41:32 +00:00
Chris Lattner a16bdb9f96 add IRBuilder.cpp to cmake
llvm-svn: 92233
2009-12-28 21:52:41 +00:00
Chris Lattner 49f9f76030 remove #include of Function.h from IRBuilder
llvm-svn: 92231
2009-12-28 21:50:56 +00:00
Chris Lattner 7ef1cac576 move debug info stuff out of line, allowing two #includes
to go away from IRBuilder.h

llvm-svn: 92230
2009-12-28 21:45:40 +00:00
Chris Lattner 17079fc0fa split code that doesn't need to be templated out of IRBuilder into a new
non-templated IRBuilderBase class.  Move that large CreateGlobalString
out of line, eliminating the need to #include GlobalVariable.h in IRBuilder.h

llvm-svn: 92227
2009-12-28 21:28:46 +00:00
Chris Lattner 7093946ab1 rename getMDKind -> getMDKindID, make it autoinsert if an MD Kind
doesn't exist already, eliminate registerMDKind.  Tidy up a bunch
of random stuff.

llvm-svn: 92225
2009-12-28 20:45:51 +00:00
Chris Lattner c9558df1f0 rename getHandlerNames to getMDKindNames, simplify its interface
and simplify all the clients that use it.

llvm-svn: 92224
2009-12-28 20:10:43 +00:00
Chris Lattner 9a258777a5 tidy up and delete a dead smallvector.
llvm-svn: 92223
2009-12-28 19:49:00 +00:00
Chris Lattner 95c445d280 avoid a completely unneeded linear walk.
llvm-svn: 92221
2009-12-28 09:32:10 +00:00
Chris Lattner c6d17e29df Eliminate two bits of ugliness in MDNode::replaceElement:
eliminate the temporary smallvector, and only do FindNodeOrInsertPos
twice if the first one succeeds and we delete a node.

llvm-svn: 92220
2009-12-28 09:24:53 +00:00
Chris Lattner f543eff71c rearrange some methods, no functionality change.
llvm-svn: 92219
2009-12-28 09:12:35 +00:00
Chris Lattner d944cf76de avoid temporary CallbackVH's.
llvm-svn: 92218
2009-12-28 09:10:16 +00:00
Chris Lattner 588096e51d Rewrite the function-local validation logic for MDNodes (most of r91708).
Among other benefits, this doesn't leak the SmallPtrSet, has the verifier
code in the verifier pass, actually does the verification at the end,
and is considerably simpler.

llvm-svn: 92217
2009-12-28 09:07:21 +00:00
Chris Lattner 66a4c3d084 rename MDNode instance variables to something meaningful.
llvm-svn: 92216
2009-12-28 08:48:12 +00:00
Chris Lattner 5a409bd17a snip one more #include from Metadata.h
llvm-svn: 92214
2009-12-28 08:30:43 +00:00
Chris Lattner 1300f45ba9 prune some #includes
llvm-svn: 92212
2009-12-28 08:24:16 +00:00
Chris Lattner 53bb5e4ae0 change the strange MetadataContext::getMDs function to expose less
irrelevant internal implementation details to clients.

llvm-svn: 92210
2009-12-28 08:14:54 +00:00
Chris Lattner 1bc810bb89 change NamedMDNode to use a pimpl for its operand list instead
of making it a declared part of the value.

llvm-svn: 92209
2009-12-28 08:07:14 +00:00
Chris Lattner 74a6ad6f29 move ElementVH out of the MDNode class into the MDNode.cpp file. Among
other things, this avoids vtable and rtti data for it being splatted in 
every translation unit that uses it.

llvm-svn: 92207
2009-12-28 07:41:54 +00:00
Bill Wendling 6ce6d268a6 Avoid assigning to Changed when it won't be used after the return.
llvm-svn: 92160
2009-12-25 13:50:18 +00:00
John McCall 086bb4ef82 Qualify a bunch of explicit template instantiations to satisfy clang++.
llvm-svn: 91736
2009-12-19 00:55:12 +00:00
John McCall 791e5c9dd5 Put TypesEqual and TypeHasCycleThroughItself in namespace llvm so ADL from
the templates in TypesContext.h can find them.  Caught by clang++.

llvm-svn: 91735
2009-12-19 00:51:42 +00:00
Eli Friedman 3a7cdaca33 Fix gcc warning.
llvm-svn: 91715
2009-12-18 21:07:18 +00:00
Rafael Espindola 2c5792a6bd Catch more cases of a pointer being marked garbage twice. This helps when
debugging some leaks (PR5770 in particular).

llvm-svn: 91713
2009-12-18 20:35:38 +00:00
Victor Hernandez 0471abd58b Formalize MDNode's function-localness:
- an MDNode is designated as function-local when created, and continues to be even if its operands are modified not to refer to function-local IR
- function-localness is designated via lowest bit in SubclassData
- getLocalFunction() descends MDNode tree to see if it is consistently function-local

Add verification of MDNodes to checks that MDNodes are consistently function-local.
Update AsmWriter to use isFunctionLocal().

llvm-svn: 91708
2009-12-18 20:09:14 +00:00
Dan Gohman 4e3b29e309 Add utility routines for NSW multiply.
llvm-svn: 91664
2009-12-18 03:10:26 +00:00
Dan Gohman 4ab4420d7a Add utility routines for creating integer negation operators with NSW set.
Integer negation only overflows with INT_MIN, but that's an important case.

llvm-svn: 91662
2009-12-18 02:58:50 +00:00
Jeffrey Yasskin 28f244863e This fixes a memory leak in OpaqueType found by Google's internal heapchecker.
llvm-svn: 91611
2009-12-17 19:55:06 +00:00
Eli Friedman e67cae33e1 Aggressively flip compare constant expressions where appropriate; constant
folding in particular expects null to be on the RHS.

llvm-svn: 91587
2009-12-17 06:07:04 +00:00
Victor Hernandez 2003b90807 Use different name for argument and field
llvm-svn: 91524
2009-12-16 08:10:57 +00:00
Victor Hernandez dd7418ae3f MDNodes that refer to an instruction are local to a function; in that case, explicitly keep track of the function they are local to
llvm-svn: 91497
2009-12-16 02:52:09 +00:00
Chris Lattner 45d040bd85 Remove isPod() from DenseMapInfo, splitting it out to its own
isPodLike type trait.  This is a generally useful type trait for
more than just DenseMap, and we really care about whether something
acts like a pod, not whether it really is a pod.

llvm-svn: 91421
2009-12-15 07:26:43 +00:00
Dan Gohman 1cfbfc86cf Move several function bodies which are rarely inlined out of line.
llvm-svn: 91319
2009-12-14 19:43:09 +00:00
Duncan Sands 5d96f3fcb6 Add utility method for determining whether a function argument
has the 'nest' attribute.

llvm-svn: 91109
2009-12-11 08:36:17 +00:00
Benjamin Kramer dfcc285902 Remove useless calls to c_str().
llvm-svn: 90855
2009-12-08 13:07:38 +00:00
Chris Lattner ff09559a8f whitespace cleanup
llvm-svn: 90834
2009-12-08 05:31:46 +00:00
Anton Korobeynikov 27a0ecfa39 Add MSP430 interrupt calling conv. No functionality change yet.
llvm-svn: 90738
2009-12-07 02:27:35 +00:00
Victor Hernandez 4d633542f2 Avoid creating a metadata slot for all metadata that contains an instruction
llvm-svn: 90581
2009-12-04 20:07:10 +00:00
Victor Hernandez a6bd3f5f5e Fix crasher when N->getElement(n) is NULL
llvm-svn: 90572
2009-12-04 18:29:23 +00:00
Andreas Neustifter 4665141ebd Added debug output for inherited passes that are invalidated.
llvm-svn: 90553
2009-12-04 06:58:24 +00:00
Victor Hernandez b7176a13a4 Teach AsmWriter to write inline (not via a global metadata slot) metadata that contains an instruction
llvm-svn: 90512
2009-12-04 01:35:02 +00:00
Chris Lattner a48f44d9ee improve portability to avoid conflicting with std::next in c++'0x.
Patch by Howard Hinnant!

llvm-svn: 90365
2009-12-03 00:50:42 +00:00
Nick Lewycky 6e0525141f Oops! Fix bug introduced in my recent cleanup change. Thanks to Tobias Grosser
for pointing this out.

llvm-svn: 90015
2009-11-27 19:57:53 +00:00
Nick Lewycky a75fe185ba Fix typo spotted by Gabor Greif.
llvm-svn: 89976
2009-11-26 23:19:05 +00:00
Nick Lewycky 898e8f756a Clean up file, no functionality change.
llvm-svn: 89974
2009-11-26 22:54:26 +00:00
Dan Gohman 05ebc8f71f Move FunctionPassManagerImpl's dumpArguments and dumpPasses calls
out of its run function and into its doInitialization method, so
that it does the dump once instead of once per function.

llvm-svn: 89660
2009-11-23 16:24:18 +00:00
Duncan Sands 9d786d701d I forgot to update the prototype for LLVMBuildIntCast when correcting
the body to not pass the name for the isSigned parameter.  However it
seems that changing prototypes is a big-no-no, so here I revert the
previous change and pass "true" for isSigned, meaning this always does
a signed cast, which was the previous behaviour assuming the name was
not NULL!  Some other C function needs to be introduced for the general
case of signed or unsigned casts.  This hopefully unbreaks the ocaml
binding.

llvm-svn: 89648
2009-11-23 10:49:03 +00:00
Nick Lewycky 890a1d120f Start catching LLVMContext misuse in the verifier.
llvm-svn: 89646
2009-11-23 04:52:00 +00:00
Jeffrey Yasskin 7c57c41d5f In GlobalVariable::setInitializer, assert that the initializer has the
right type.

llvm-svn: 89014
2009-11-17 00:43:13 +00:00
Duncan Sands 9649e6085d BuildIntCast takes an additional parameter, isSigned.
llvm-svn: 88910
2009-11-16 13:15:28 +00:00
Evan Cheng 00e87d19f5 Special case FixedStackPseudoSourceValueVal as well. Do we really need to differentiate PseudoSourceValueVal from FixedStackPseudoSourceValueVal at this level?
llvm-svn: 88902
2009-11-16 07:10:36 +00:00
Eric Christopher 96b26acd0f Remove extraneous commit.
llvm-svn: 88716
2009-11-13 23:08:47 +00:00
Eric Christopher 0cabd30b22 Print out something, even if it's non-parseable later when we've
got ghost linkage. It's better than aborting.

llvm-svn: 88715
2009-11-13 23:00:14 +00:00
Devang Patel 862ef782de Do not use StringRef in DebugInfo interface.
This allows StringRef to skip controversial if(str) check in constructor.
Buildbots, wait for corresponding clang and llvm-gcc FE check-ins!

llvm-svn: 86914
2009-11-12 00:50:58 +00:00
Chris Lattner 7eb84155a5 Reject duplicate case values in a switch, PR5450.
llvm-svn: 86846
2009-11-11 17:37:02 +00:00
Victor Hernandez bb336a1987 make this handle redefinition of malloc function with different prototype correctly
llvm-svn: 86712
2009-11-10 19:53:28 +00:00
Jeffrey Yasskin b40d3f76a0 Fix DenseMap iterator constness.
This patch forbids implicit conversion of DenseMap::const_iterator to
DenseMap::iterator which was possible because DenseMapIterator inherited
(publicly) from DenseMapConstIterator. Conversion the other way around is now
allowed as one may expect.

The template DenseMapConstIterator is removed and the template parameter
IsConst which specifies whether the iterator is constant is added to
DenseMapIterator.

Actually IsConst parameter is not necessary since the constness can be
determined from KeyT but this is not relevant to the fix and can be addressed
later.

Patch by Victor Zverovich!

llvm-svn: 86636
2009-11-10 01:02:17 +00:00
Daniel Dunbar 124fc5e252 Fix MemoryBuffer::getSTDIN to *not* return null if stdin is empty, this is a lame API.
Also, Stringrefify some more MemoryBuffer functions, and add two performance FIXMEs.

llvm-svn: 86630
2009-11-10 00:43:58 +00:00
Chris Lattner 2156c22b3c make this handle redefinition of malloc with different prototype correctly.
llvm-svn: 86525
2009-11-09 07:12:01 +00:00
Chris Lattner 6b22952b03 prune #include / layering violation
llvm-svn: 86365
2009-11-07 09:07:01 +00:00
Victor Hernandez e04ed0c68f Fit in 80 columns
llvm-svn: 86316
2009-11-07 00:36:50 +00:00
Victor Hernandez f3db915294 Re-commit r86077 now that r86290 fixes the 179.art and 175.vpr ARM regressions.
Here is the original commit message:

This commit updates malloc optimizations to operate on malloc calls that have constant int size arguments.

Update CreateMalloc so that its callers specify the size to allocate:
MallocInst-autoupgrade users use non-TargetData-computed allocation sizes.
Optimization uses use TargetData to compute the allocation size.

Now that malloc calls can have constant sizes, update isArrayMallocHelper() to use TargetData to determine the size of the malloced type and the size of malloced arrays.
Extend getMallocType() to support malloc calls that have non-bitcast uses.

Update OptimizeGlobalAddressOfMalloc() to optimize malloc calls that have non-bitcast uses.  The bitcast use of a malloc call has to be treated specially here because the uses of the bitcast need to be replaced and the bitcast needs to be erased (just like the malloc call) for OptimizeGlobalAddressOfMalloc() to work correctly.

Update PerformHeapAllocSRoA() to optimize malloc calls that have non-bitcast uses.  The bitcast use of the malloc is not handled specially here because ReplaceUsesOfMallocWithGlobal replaces through the bitcast use.

Update OptimizeOnceStoredGlobal() to not care about the malloc calls' bitcast use.

Update all globalopt malloc tests to not rely on autoupgraded-MallocInsts, but instead use explicit malloc calls with correct allocation sizes.

llvm-svn: 86311
2009-11-07 00:16:28 +00:00
Victor Hernandez ce99780980 CallInst::CreateMalloc() and CallInst::CreateFree() need to create calls with correct calling convention
llvm-svn: 86290
2009-11-06 21:43:21 +00:00
Daniel Dunbar ad36e8aceb Pass StringRef by value.
llvm-svn: 86251
2009-11-06 10:58:06 +00:00
Chris Lattner 46b5c642b9 remove a bunch of extraneous LLVMContext arguments
from various APIs, addressing PR5325.

llvm-svn: 86231
2009-11-06 04:27:31 +00:00
Victor Hernandez b9f5899779 Revert r86077 because it caused crashes in 179.art and 175.vpr on ARM
llvm-svn: 86213
2009-11-06 01:33:24 +00:00
Victor Hernandez 492ed30a32 Update CreateMalloc so that its callers specify the size to allocate:
MallocInst-autoupgrade users use non-TargetData-computed allocation sizes.
Optimization uses use TargetData to compute the allocation size.

Now that malloc calls can have constant sizes, update isArrayMallocHelper() to use TargetData to determine the size of the malloced type and the size of malloced arrays.
Extend getMallocType() to support malloc calls that have non-bitcast uses.

Update OptimizeGlobalAddressOfMalloc() to optimize malloc calls that have non-bitcast uses.  The bitcast use of a malloc call has to be treated specially here because the uses of the bitcast need to be replaced and the bitcast needs to be erased (just like the malloc call) for OptimizeGlobalAddressOfMalloc() to work correctly.

Update PerformHeapAllocSRoA() to optimize malloc calls that have non-bitcast uses.  The bitcast use of the malloc is not handled specially here because ReplaceUsesOfMallocWithGlobal replaces through the bitcast use.

Update OptimizeOnceStoredGlobal() to not care about the malloc calls' bitcast use.

Update all globalopt malloc tests to not rely on autoupgraded-MallocInsts, but instead use explicit malloc calls with correct allocation sizes.

llvm-svn: 86077
2009-11-05 00:03:03 +00:00
Victor Hernandez 3318858efd Changes requested (avoid getFunction(), avoid Type creation via isVoidTy(), and avoid redundant isFreeCall cases) in feedback to r85176
llvm-svn: 85936
2009-11-03 20:39:35 +00:00
Chris Lattner 37536b90e1 remove a bunch of locking from LLVMContextImpl. Since only one thread
can be banging on a context at a time, this isn't needed.  Owen, please
review.

llvm-svn: 85728
2009-11-01 18:42:03 +00:00
Chris Lattner 253bc77513 the verifier shouldn't modify the IR.
llvm-svn: 85722
2009-11-01 18:11:50 +00:00
Chris Lattner 274717419c fix an issue where the verifier would reject a function whose entry
block had its address taken even if the blockaddress was dead.

llvm-svn: 85706
2009-11-01 04:08:01 +00:00
Chris Lattner c559a9f686 Fix BlockAddress::replaceUsesOfWithOnConstant to correctly
maintain the block use count in SubclassData.

llvm-svn: 85701
2009-11-01 03:03:03 +00:00
Chris Lattner aa99c94e2a Revert 85678/85680. The decision is to stay with the current form of
indirectbr, thus we don't need "blockaddr(@func, null)".  Eliminate it
for simplicity.

llvm-svn: 85699
2009-11-01 01:27:45 +00:00
Chris Lattner b2c0e243c5 Make blockaddress(@func, null) be valid, and make 'deleting a basic
block with a blockaddress still referring to it' replace the invalid 
blockaddress with a new blockaddress(@func, null) instead of a 
inttoptr(1).

This changes the bitcode encoding format, and still needs codegen 
support (this should produce a non-zero value, referring to the entry
block of the function would also be quite reasonable).

llvm-svn: 85678
2009-10-31 20:08:37 +00:00
Chris Lattner dd5d035302 if basic blocks are destroyed while there are *just* BlockAddress' hanging
around, then zap them.  This is analogous to dangling constantexprs hanging
off functions.

llvm-svn: 85627
2009-10-30 22:39:36 +00:00
Chris Lattner 74eb5d71a3 make hasAddressTaken() constant time by storing a refcount in BB's subclass data.
llvm-svn: 85625
2009-10-30 22:33:29 +00:00
Chris Lattner 112caed500 it isn't valid to take the address of the entry block.
llvm-svn: 85621
2009-10-30 22:15:48 +00:00
Dan Gohman 43c574068b Simplify this code and avoid an extra space character in the output.
llvm-svn: 85568
2009-10-30 02:01:10 +00:00
Chris Lattner 6747b4ca30 add sanity check for indbr.
llvm-svn: 85496
2009-10-29 05:53:32 +00:00
Dan Gohman 3903320a48 Add a hasAddressTaken for BasicBlock.
llvm-svn: 85449
2009-10-29 00:09:08 +00:00
Chris Lattner a91a563530 Previously, all operands to Constant were themselves constant.
In the new world order, BlockAddress can have a BasicBlock operand.
This doesn't permute much, because if you have a ConstantExpr (or
anything more specific than Constant) we still know the operand has
to be a Constant.

llvm-svn: 85375
2009-10-28 05:14:34 +00:00
Chris Lattner 2cb85b4020 'static const void *X = &&y' can only be put in the
readonly section if a reference to the containing function
is valid in the readonly section.

llvm-svn: 85370
2009-10-28 04:12:16 +00:00
Chris Lattner 214cc709bc asmprinter support for BlockAddress.
llvm-svn: 85367
2009-10-28 03:38:12 +00:00
Chris Lattner 3a39530445 when we tear down a module, we need to be careful to
zap BlockAddress values.

llvm-svn: 85366
2009-10-28 03:37:35 +00:00
Chris Lattner d04cb6d0fa rename indbr -> indirectbr to appease the residents of #llvm.
llvm-svn: 85351
2009-10-28 00:19:10 +00:00
Chris Lattner 31b132c0b7 IR support for the new BlockAddress constant kind. This is
untested and there is no way to use it, next up: doing battle
with asmparser.

llvm-svn: 85349
2009-10-28 00:01:44 +00:00
Jeffrey Yasskin f6ee7bea88 Rename lib/VMCore/ConstantsContext.h:ValueMap<> to ConstantUniqueMap<> to avoid
colliding with llvm/ADT/ValueMap.h:ValueMap<>.

llvm-svn: 85344
2009-10-27 23:45:55 +00:00
Devang Patel 11cf3f4a27 Factor out redundancy from clone() implementations.
llvm-svn: 85327
2009-10-27 22:16:29 +00:00
Victor Hernandez f390e04a47 Rename MallocFreeHelper as MemoryBuiltins
llvm-svn: 85286
2009-10-27 20:05:49 +00:00
Chris Lattner 3ed871fe62 add enough support for indirect branch for the feature test to pass
(assembler,asmprinter, bc reader+writer) and document it.  Codegen
currently aborts on it.

llvm-svn: 85274
2009-10-27 19:13:16 +00:00
Chris Lattner 26a7ae4fba Type.h doesn't need to #include LLVMContext.h
llvm-svn: 85254
2009-10-27 17:08:31 +00:00
Victor Hernandez 762195bd01 Rename MallocHelper as MallocFreeHelper, since it now also identifies calls to free()
llvm-svn: 85181
2009-10-26 23:58:56 +00:00
Victor Hernandez de5ad42aa1 Remove FreeInst.
Remove LowerAllocations pass.
Update some more passes to treate free calls just like they were treating FreeInst.

llvm-svn: 85176
2009-10-26 23:43:48 +00:00
Devang Patel d6dd2a0840 Do not use expensive sort().
llvm-svn: 85130
2009-10-26 17:09:00 +00:00
Nick Lewycky 974e12b2d3 Remove includes of Support/Compiler.h that are no longer needed after the
VISIBILITY_HIDDEN removal.

llvm-svn: 85043
2009-10-25 06:57:41 +00:00
Nick Lewycky 02d5f77d26 Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.

llvm-svn: 85042
2009-10-25 06:33:48 +00:00
Nick Lewycky 54d7179a25 Remove ICmpInst::isSignedPredicate which was a reimplementation
CmpInst::isSigned.

llvm-svn: 85037
2009-10-25 05:20:17 +00:00
Nick Lewycky 7494b3b1d4 Sink isTrueWhenEqual from ICmpInst to CmpInst. Add a matching isFalseWhenEqual
which is equal to !isTrueWhenEqual for ints but not for floats.

llvm-svn: 85036
2009-10-25 03:50:03 +00:00
Dan Gohman 2cbca4e229 Make DominanceFrontierBase::print's output prettier.
llvm-svn: 85011
2009-10-24 20:01:11 +00:00
Victor Hernandez e297149e26 Auto-upgrade free instructions to calls to the builtin free function.
Update all analysis passes and transforms to treat free calls just like FreeInst.
Remove RaiseAllocations and all its tests since FreeInst no longer needs to be raised.

llvm-svn: 84987
2009-10-24 04:23:03 +00:00
Victor Hernandez 8acf2956b8 Remove AllocationInst. Since MallocInst went away, AllocaInst is the only subclass of AllocationInst, so it no longer is necessary.
llvm-svn: 84969
2009-10-23 21:09:37 +00:00
Devang Patel 1155fdf6dc Hide MetadataContext implementation details.
llvm-svn: 84886
2009-10-22 19:36:54 +00:00
Devang Patel 6da5dbf3c2 Fix getMDs() interface such that it does not expose implementation details.
llvm-svn: 84885
2009-10-22 18:55:16 +00:00
Devang Patel 084679e70a Using TrackingVH instead of WeakVH or WeakMetadataVH.
llvm-svn: 84884
2009-10-22 18:25:28 +00:00
Devang Patel 09c319e269 Sort handler names to ensure deterministic behavior.
llvm-svn: 84878
2009-10-22 17:40:37 +00:00
Devang Patel 0fffb49d56 Fix getHandlerNames() interface. Now it populate clinet supplied small vector with handler names.
llvm-svn: 84820
2009-10-22 01:01:24 +00:00
Devang Patel 6746d43a3f Use StringRef to construct MDString.
llvm-svn: 84811
2009-10-22 00:22:05 +00:00
Devang Patel dcb99d310a Remove meaningless const.
Pass StringRef by value.

llvm-svn: 84804
2009-10-22 00:10:15 +00:00
Devang Patel 27e0be274e Derive metadata hierarchy from Value instead of User.
llvm-svn: 84801
2009-10-21 23:57:35 +00:00
Benjamin Kramer 8b051b8240 Fix thinko noticed by Chris.
llvm-svn: 84797
2009-10-21 23:29:32 +00:00
Dale Johannesen 1cfb958b00 Rename msasm to alignstack per review.
llvm-svn: 84795
2009-10-21 23:28:00 +00:00
Benjamin Kramer 22146fbc5f Remove pointless return; at end of function.
llvm-svn: 84794
2009-10-21 23:27:54 +00:00
Benjamin Kramer b378347796 Simplify code. No intended functionality change.
llvm-svn: 84790
2009-10-21 22:55:51 +00:00
Devang Patel 2505c1e17a Use StringRef.
llvm-svn: 84786
2009-10-21 21:57:13 +00:00
Devang Patel 49914e6eb3 Do not use SmallVector to store MDNode elements.
llvm-svn: 84784
2009-10-21 21:25:09 +00:00
Devang Patel 3eb5d33b65 Incorporate various suggestions Chris gave during metadata review.
- i < getNumElements()  instead of getNumElements() > i
- Make setParent() private
- Fix use of resizeOperands
- Reset HasMetadata bit after removing all metadata attached to an instruction
- Efficient use of iterators

llvm-svn: 84765
2009-10-21 17:33:41 +00:00
Devang Patel 0c35dbdf03 Cosmetic changes.
s/validName/isValidName/g
s/with an Instruction/to an Instruction/g
s/RegisterMDKind/registerMDKind/g

llvm-svn: 84689
2009-10-20 22:50:27 +00:00
Owen Anderson 5dab84ca9c Banish ConstantsLock. It's serving no purpose other than slowing things down
at the moment.

llvm-svn: 84529
2009-10-19 20:11:52 +00:00
Chris Lattner b0c23e81e7 various cleanups.
llvm-svn: 84471
2009-10-19 07:10:59 +00:00
Nick Lewycky bb1410ea8b Fix test/Bindings/Ocaml/vmcore.ml. When IRBuilder::CreateMalloc was removed,
LLVMBuildMalloc was reimplemented but with the bug that it didn't insert the
resulting instruction.

llvm-svn: 84374
2009-10-17 23:52:26 +00:00
Chris Lattner f67d297eda Teach vm core to more aggressively fold 'trunc' constantexprs,
allowing it to simplify the crazy constantexprs in the testcases
down to something sensible.  This allows -std-compile-opts to
completely "devirtualize" the pointers to member functions in
the testcase from PR5176.

llvm-svn: 84368
2009-10-17 21:53:27 +00:00
Nick Lewycky e63c2cb3b7 Emit newlines at the end of instructions too.
llvm-svn: 84348
2009-10-17 19:43:45 +00:00
Daniel Dunbar c099f1a0c5 Remove unnecessary include.
llvm-svn: 84336
2009-10-17 18:11:57 +00:00
Victor Hernandez a3aaf85e23 Remove MallocInst from LLVM Instructions.
llvm-svn: 84299
2009-10-17 01:18:07 +00:00
Victor Hernandez c7d6a8327c Autoupgrade malloc insts to malloc calls.
Update testcases that rely on malloc insts being present.

Also prematurely remove MallocInst handling from IndMemRemoval and RaiseAllocations to help pass tests in this incremental step.

llvm-svn: 84292
2009-10-17 00:00:19 +00:00
Devang Patel ebaa76ed0d Add copyMD to copy metadata from one instruction to another instruction.
llvm-svn: 84113
2009-10-14 17:02:49 +00:00