Commit Graph

627 Commits

Author SHA1 Message Date
Rafael Espindola
a5eaa861e4 Add a clarification about merging constants with and without unnamed_addr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123530 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-15 08:20:57 +00:00
Rafael Espindola
bea4626f93 First step in fixing PR8927:
Add a unnamed_addr bit to global variables and functions. This will be used
to indicate that the address is not significant and therefore the constant
or function can be merged with others.

If an optimization pass can show that an address is not used, it can set this.

Examples of things that can have this set by the FE are globals created to
hold string literals and C++ constructors.

Adding unnamed_addr to a non-const global should have no effect unless
an optimization can transform that global into a constant.

Aliases are not allowed to have unnamed_addr since I couldn't figure
out any use for it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123063 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-08 16:42:36 +00:00
Tobias Grosser
0538729a3a Integers are primitive types. Update the documentation to state this
This was done for label, void, floating point, x86mmx, metadata,
just not integer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122606 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-28 20:29:31 +00:00
Frits van Bommel
1324289d24 Clarify some of the differences between indexing with getelementptr and indexing with insertvalue/extractvalue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120957 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-05 20:54:38 +00:00
Nick Lewycky
29b6cb40c1 Make @llvm.invariant.start not be readonly, so that it has side-effects. This
unbreaks test/Transforms/InstCombine/invariant.ll which was broken by r120382.
This is a fix-forward to do what I think Chris intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120388 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-30 04:13:41 +00:00
Chris Lattner
a6fd81dd7f a byval argument without an align can have an arbitrary alignment
requirement on the input pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119914 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-20 23:49:06 +00:00
Chris Lattner
ce1b9ad539 With the newly simplified SourceMgr interfaces and the generalized
SrcMgrDiagHandler, we can improve clang diagnostics for inline asm:
instead of reporting them on a source line of the original line,
we can report it on the correct line wherever the string literal came
from. For something like this:

void foo() {
  asm("push %rax\n"
      ".code32\n");
}

we used to get this: (note that the line in t.c isn't helpful)

t.c:4:7: error: warning: ignoring directive for now
  asm("push %rax\n"
      ^
<inline asm>:2:1: note: instantiated into assembly here
.code32
^

now we get:

t.c:5:8: error: warning: ignoring directive for now
      ".code32\n"
       ^
<inline asm>:2:1: note: instantiated into assembly here
.code32
^

Note that we're pointing to line 5 properly now.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119488 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17 08:20:42 +00:00
Bill Wendling
1b383ba6ae Random cleanups and format changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117428 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-27 01:07:41 +00:00
Charles Davis
0076d2057c Make the description of the hotpatch attribute even more generic. Spotted by
Michael Spencer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117286 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-25 19:07:39 +00:00
Charles Davis
6f12e29f7d Make hotpatch attribute description a little less Wintel-specific.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117267 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-25 16:29:03 +00:00
Charles Davis
970bfcc7d8 Add a new 'hotpatch' attribute. This attribute will insert a two-byte no-op
instruction at the beginning of each function that has the attribute, allowing
the function to be easily hooked and/or patched.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117264 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-25 15:37:09 +00:00
Chris Lattner
7d2e7bef90 clarify that zero sized vectors are illegal, PR8340
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116167 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-10 18:20:35 +00:00
Dale Johannesen
473a8c84f2 Fix pasto.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115261 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-01 01:07:02 +00:00
Dale Johannesen
21fe99bbc8 Add some doc for the x86mmx type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115255 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-01 00:48:59 +00:00
Chris Lattner
61c70e98ac remove unions from LLVM IR. They are severely buggy and not
being actively maintained, improved, or extended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112356 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-28 04:09:24 +00:00
Bill Wendling
55ae515f9d Create the new linker type "linker_private_weak_def_auto".
It's similar to "linker_private_weak", but it's known that the address of the
object is not taken. For instance, functions that had an inline definition, but
the compiler decided not to inline it. Note, unlike linker_private and
linker_private_weak, linker_private_weak_def_auto may have only default
visibility.  The symbols are removed by the linker from the final linked image
(executable or dynamic library).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111684 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-20 22:05:50 +00:00
Chris Lattner
dc65f22390 fix a broken link
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111326 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-17 23:26:04 +00:00
Chris Lattner
63e4ccb3cd add some &nbsp;'s to a pre to avoid newlines being eaten
and the formatting being thrown off.  I admit to not knowing
what is going on here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111249 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-17 17:13:42 +00:00
John Criswell
cdcbbfcb15 Grammar cop pullover: Corrected and improved some grammar in the description of
the llvm.memset() intrinsic family.
No content changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109863 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-30 16:30:28 +00:00
Dan Gohman
872814ae04 Disallow null as a named metadata operand.
Make MDNode::destroy private.
Fix the one thing that used MDNode::destroy, outside of MDNode itself.

One should never delete or destroy an MDNode explicitly. MDNodes
implicitly go away when there are no references to them (implementation
details aside).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109028 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-21 18:54:18 +00:00
Dan Gohman
1005bc5068 Fix the Named Metadata example to make it clear which specific
construct is the named metadata.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108263 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-13 19:48:13 +00:00
Benjamin Kramer
26fe25f651 HTML cleanup and validation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108239 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-13 12:26:09 +00:00
Duncan Sands
28afd4306a When doing sext/zext of constants, the target type must be strictly
wider than the source type.  Correct LangRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108238 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-13 12:06:14 +00:00
Dan Gohman
38da927703 sdiv overflow is outright undefined behavior, with or without the
'exact' keyword. Thanks to nlewycky for pointing this out!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108064 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-11 00:08:34 +00:00
John McCall
191d4ee342 Closing tags start with slashes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107699 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06 21:07:14 +00:00
Chris Lattner
211244aa52 minor typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107696 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06 20:51:35 +00:00
Nick Lewycky
76ec37a138 Alphabetize the list of function parameters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107680 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06 18:24:09 +00:00
Dan Gohman
ff70fe40aa Note the relationship between C99 restrict and LLVM noalias, and
clarify a few other things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107659 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-06 15:26:33 +00:00
Dan Gohman
efca7f9681 Describe which dependencies are relevant to noalias, and document how
AliasAnalyses have the choice to respect noalias.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107544 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-02 23:46:54 +00:00
Dan Gohman
ff23535df6 Add some html anchors, to allow attributes to be linked to directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107538 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-02 23:18:08 +00:00
Dan Gohman
1e109621f1 Reword the definition of the noalias attribute. The intention is for
the noalias argument on function attributes be usable to model the
C99 restrict keyword on arguments, and to allow AliasAnalysis to
consider a noalias-attributed argument to be an "identified object".

To support this, refactor a new "based on" concept out of the current
pointer aliasing "associated" concept. This "based on" concept is very
similar to (though it is not identical with) the "based on" concept
in C99.

Also, reword the definition of NoAlias to more closely describe the
concept that the optimizer uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107495 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-02 18:41:32 +00:00
Bill Wendling
5e721d7682 Implement the "linker_private_weak" linkage type. This will be used for
Objective-C metadata types which should be marked as "weak", but which the
linker will remove upon final linkage. However, this linkage isn't specific to
Objective-C.

For example, the "objc_msgSend_fixup_alloc" symbol is defined like this:

      .globl l_objc_msgSend_fixup_alloc
      .weak_definition l_objc_msgSend_fixup_alloc
      .section __DATA, __objc_msgrefs, coalesced
      .align 3
l_objc_msgSend_fixup_alloc:
       .quad   _objc_msgSend_fixup
       .quad   L_OBJC_METH_VAR_NAME_1

This is different from the "linker_private" linkage type, because it can't have
the metadata defined with ".weak_definition".

Currently only supported on Darwin platforms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107433 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-01 21:55:59 +00:00
Bill Wendling
07d3177117 Revert r107205 and r107207.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107215 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-29 22:34:52 +00:00
Bill Wendling
7645f14ee8 Improve explanation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107207 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-29 21:41:58 +00:00
Bill Wendling
207855cff9 Introducing the "linker_weak" linkage type. This will be used for Objective-C
metadata types which should be marked as "weak", but which the linker will
remove upon final linkage. For example, the "objc_msgSend_fixup_alloc" symbol is
defined like this:

       .globl l_objc_msgSend_fixup_alloc
       .weak_definition l_objc_msgSend_fixup_alloc
       .section __DATA, __objc_msgrefs, coalesced
       .align 3
l_objc_msgSend_fixup_alloc:
        .quad   _objc_msgSend_fixup
        .quad   L_OBJC_METH_VAR_NAME_1

This is different from the "linker_private" linkage type, because it can't have
the metadata defined with ".weak_definition".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107205 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-29 21:24:00 +00:00
Dan Gohman
c22c0f37b4 Minor clarification.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106234 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-17 19:23:50 +00:00
Nick Lewycky
9e130ce3aa Document aggregate operation constant expressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105098 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-29 06:44:15 +00:00
Dale Johannesen
9d8d221a68 Fix Data Layout description of floating point.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104993 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-28 18:54:47 +00:00
Dan Gohman
fe47aae6a8 Fix more whitespace to be consistent with AsmPrinter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104963 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-28 17:13:49 +00:00
Dan Gohman
3dfb3cfb38 Fix whitespace to be more consistent with AsmPrinter's style.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104962 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-28 17:07:41 +00:00
Dan Gohman
f75a7d3fbf Eliminate the restriction that the array size in an alloca must be i32.
This will help reduce the amount of casting required on 64-bit targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104911 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-28 01:14:11 +00:00
Dan Gohman
31f1af118a Fix a missing quote.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104750 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-26 21:56:15 +00:00
mike-m
e2c3a49c80 Revert r103213. It broke several sections of live website.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103219 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-07 00:28:04 +00:00
mike-m
68cb31901c Overhauled llvm/clang docs builds. Closes PR6613.
NOTE: 2nd part changeset for cfe trunk to follow.

*** PRE-PATCH ISSUES ADDRESSED

- clang api docs fail build from objdir
- clang/llvm api docs collide in install PREFIX/
- clang/llvm main docs collide in install
- clang/llvm main docs have full of hard coded destination
  assumptions and make use of absolute root in static html files;
  namely CommandGuide tools hard codes a website destination
  for cross references and some html cross references assume
  website root paths

*** IMPROVEMENTS

- bumped Doxygen from 1.4.x -> 1.6.3
- splits llvm/clang docs into 'main' and 'api' (doxygen) build trees
- provide consistent, reliable doc builds for both main+api docs
- support buid vs. install vs. website intentions
- support objdir builds
- document targets with 'make help'
- correct clean and uninstall operations
- use recursive dir delete only where absolutely necessary
- added call function fn.RMRF which safeguards against botched 'rm -rf';
  if any target (or any variable is evaluated) which attempts
  to remove any dirs which match a hard-coded 'safelist', a verbose
  error will be printed and make will error-stop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103213 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06 23:45:43 +00:00
Chris Lattner
b7d0688195 Fix some ..'s
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103134 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05 23:29:09 +00:00
Dan Gohman
7c24ff12c4 Update this comment to note its relationship with the "happens-before"
concept in the proposed memory model changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102911 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03 14:59:34 +00:00
Dan Gohman
45baf4191b Delete this comment. The behavior of struct loads and stores with
respect to padding bytes isn't something that the dependence text
needs to spell out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102910 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03 14:58:14 +00:00
Dan Gohman
b532816ac9 Describe invoke instruction dependencies. Generalize the text for
terminator instructions so that it applies to all terminators with
multiple successors, including invoke.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102909 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03 14:55:22 +00:00
Dan Gohman
855abed3cb Say "operations" instead of "instructions", as nsw can be applied to
constant expressions as well as instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102908 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-03 14:51:43 +00:00
David Chisnall
27195a5831 Fixed @ctor / @dtor the wrong way around in last commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102741 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-30 19:27:35 +00:00