Commit Graph

449 Commits

Author SHA1 Message Date
Duncan Sands 1efabaaa2a Allow readonly functions to unwind exceptions. Teach
the optimizers about this.  For example, a readonly
function with no uses cannot be removed unless it is
also marked nounwind.

llvm-svn: 71071
2009-05-06 06:49:50 +00:00
Chris Lattner 680ae74885 Remove obsolete wording, the only exception a readnone function can throw
is the empty set. :)  Thanks to Fritz for pointing this out.

llvm-svn: 70790
2009-05-03 19:06:00 +00:00
Chris Lattner f031421afe be very explicit that readnone/readonly functions can't
throw exceptions.

llvm-svn: 70788
2009-05-03 18:49:37 +00:00
Sanjiv Gupta 1f8555a07f Now that any size of integer indices are allowed for sequential types, remove the unneccessary gyan about promoting them.
llvm-svn: 70181
2009-04-27 03:21:00 +00:00
Sanjiv Gupta 8d319047c5 Any size of integral indices are allowed in gep for indexing into sequential types. Also adding a test case to check the indices type allowed into struct.
llvm-svn: 70134
2009-04-26 17:14:35 +00:00
Sanjiv Gupta 0c155e6dbe Fixed the gep example for i16 type indices.
llvm-svn: 70019
2009-04-25 07:27:44 +00:00
Sanjiv Gupta 77abea0d6a Fixed spaces and the getelementpointer example with i16 type indices.
llvm-svn: 69971
2009-04-24 16:38:13 +00:00
Sanjiv Gupta 46c97e626f Allow i16 type indices to gep.
llvm-svn: 69946
2009-04-24 02:37:54 +00:00
Chris Lattner 184f1be4a8 Add a new "available_externally" linkage type. This is intended
to support C99 inline, GNU extern inline, etc.  Related bugzilla's
include PR3517, PR3100, & PR2933.  Nothing uses this yet, but it
appears to work.

llvm-svn: 68940
2009-04-13 05:44:34 +00:00
Nick Lewycky 49f891958f Add support for embedded metadata to LLVM. This introduces two new types of
Constant, MDString and MDNode which can only be used by globals with a name
that starts with "llvm." or as arguments to a function with the same naming
restriction.

llvm-svn: 68420
2009-04-04 07:22:01 +00:00
Duncan Sands b1656c1e1f Add some explanations of how apint loads and stores
work.

llvm-svn: 67471
2009-03-22 11:33:16 +00:00
Duncan Sands 4581bebf2a It makes no sense to have a ODR version of common
linkage, so remove it.

llvm-svn: 66690
2009-03-11 20:14:15 +00:00
Duncan Sands e2881053c9 Remove the one-definition-rule version of extern_weak
linkage: this linkage type only applies to declarations,
but ODR is only relevant to globals with definitions.

llvm-svn: 66650
2009-03-11 08:08:06 +00:00
Chris Lattner dd282825a8 Clarify wording, patch by Stefanus Du Toit!
llvm-svn: 66458
2009-03-09 20:55:18 +00:00
Duncan Sands 12da8ce3d2 Introduce new linkage types linkonce_odr, weak_odr, common_odr
and extern_weak_odr.  These are the same as the non-odr versions,
except that they indicate that the global will only be overridden
by an *equivalent* global.  In C, a function with weak linkage can
be overridden by a function which behaves completely differently.
This means that IP passes have to skip weak functions, since any
deductions made from the function definition might be wrong, since
the definition could be replaced by something completely different
at link time.   This is not allowed in C++, thanks to the ODR
(One-Definition-Rule): if a function is replaced by another at
link-time, then the new function must be the same as the original
function.  If a language knows that a function or other global can
only be overridden by an equivalent global, it can give it the
weak_odr linkage type, and the optimizers will understand that it
is alright to make deductions based on the function body.  The
code generators on the other hand map weak and weak_odr linkage
to the same thing.

llvm-svn: 66339
2009-03-07 15:45:40 +00:00
Bill Wendling 050ee8fb8d Fix grammaro.
llvm-svn: 65727
2009-02-28 22:12:54 +00:00
Chris Lattner 361bfcd932 don't use the word 'aggregate' with constants, it is confusing.
llvm-svn: 65702
2009-02-28 18:32:25 +00:00
Chris Lattner 789dee38a5 don't redescribe bitcast constraints in two places. It is not valid to
bitcast from one aggregate to another.

llvm-svn: 65700
2009-02-28 18:27:03 +00:00
Nick Lewycky cd5b1443bb Update this text for first-class aggregates.
llvm-svn: 65697
2009-02-28 17:30:06 +00:00
Nick Lewycky dac78d87cb Demonstrate the act of including multiple space-separated parameter attributes,
by request on IRC.

llvm-svn: 64619
2009-02-15 23:06:14 +00:00
Dale Johannesen cd4a301a1a Edit description of floating point constants to
reflect reality.  Acknowledgements to John Clements
for prodding me into this.

llvm-svn: 64332
2009-02-11 22:14:51 +00:00
Chris Lattner bf1d5458ad fix typo, patch by Jonathan Brandmeyer!
llvm-svn: 64132
2009-02-09 10:00:56 +00:00
Bill Wendling b9a7327006 Document llvm.umul.with.overflow indicating that it's badly broken and not intended for use.
llvm-svn: 64104
2009-02-08 23:00:09 +00:00
Chris Lattner d1d4cffae9 I can't type today apparently.
llvm-svn: 64097
2009-02-08 22:21:28 +00:00
Chris Lattner 04c57c5bae fix typo
llvm-svn: 64090
2009-02-08 19:59:51 +00:00
Chris Lattner 4a67c91d0b document pointer type constraints, PR3513
llvm-svn: 64088
2009-02-08 19:53:29 +00:00
Bill Wendling fd2bd720da Fixes from feedback.
llvm-svn: 64070
2009-02-08 04:04:40 +00:00
Bill Wendling f4d70628a3 Document the 'llvm.OP.with.overflow' intrinsics.
llvm-svn: 64066
2009-02-08 01:40:31 +00:00
Chris Lattner 08aa90643e PR3485, document alignment on byref.
llvm-svn: 63836
2009-02-05 05:42:28 +00:00
Chris Lattner 5e66858152 validation error fix.
llvm-svn: 63503
2009-02-02 07:33:15 +00:00
Chris Lattner cf7a584341 Document type upreferences (PR3380), patch by Stein Roger Skafløtten
with enhancements and corrections by me.

llvm-svn: 63502
2009-02-02 07:32:36 +00:00
Dan Gohman 142ccc0e15 Add more documentation mentioning the limitations due to PR2660.
llvm-svn: 62919
2009-01-24 15:58:40 +00:00
Dan Gohman a5127abeec Add a few more notes about LLVM IR features that codegen doesn't
yet support.

llvm-svn: 62739
2009-01-22 01:39:38 +00:00
Duncan Sands 35e43c12f1 Grammar fix.
llvm-svn: 62319
2009-01-16 09:29:46 +00:00
Rafael Espindola 6de96a1b5d Add the private linkage.
llvm-svn: 62279
2009-01-15 20:18:42 +00:00
Dan Gohman 3065b6169f Document several current CodeGen limitations in LangRef.html.
Patches for any of these are welcome!

llvm-svn: 62120
2009-01-12 23:12:39 +00:00
Dan Gohman 33a9cef204 The LLVM Assembly Language Reference incorrectly stated that the
prefix used for dll{import,export} is _imp__; it is actually __imp_.
Patch by Mahadevan R!

llvm-svn: 62103
2009-01-12 21:35:55 +00:00
Chris Lattner bc088218e6 Implement PR3313, and while I'm at it address a very FAQ.
llvm-svn: 62048
2009-01-11 20:53:49 +00:00
Dan Gohman aaa679b270 Fix the example syntax for named sections.
llvm-svn: 62033
2009-01-11 00:40:00 +00:00
Dan Gohman 7a5acb5be5 A few more whitespace tidyments.
llvm-svn: 61655
2009-01-04 23:49:44 +00:00
Dan Gohman 623806eb2b Tidy whitespace.
llvm-svn: 61653
2009-01-04 23:44:43 +00:00
Chris Lattner 8730c6d46c new non-ambiguous syntax.
llvm-svn: 61559
2009-01-02 07:02:56 +00:00
Nick Lewycky 2abb108f1b Resubmit support for the 'nocapture' attribute.
The problematic part of this patch is that we were out of attribute bits,
requiring some fancy bit hacking to make it fit (by shrinking alignment)
without breaking existing users or the file format.

This change will require users to rebuild llvm-gcc to match llvm.

llvm-svn: 61239
2008-12-19 06:39:12 +00:00
Bill Wendling a397baea88 Temporarily revert r61019, r61030, and r61040. These were breaking LLVM Release
builds.

llvm-svn: 61094
2008-12-16 19:06:48 +00:00
Nick Lewycky ddffe620e4 Introducing nocapture, a parameter attribute for pointers to indicate that the
callee will not introduce any new aliases of that pointer.

The attributes had all bits allocated already, so I decided to collapse
alignment. Alignment was previously stored as a 16-bit integer from bits 16 to
32 of the attribute, but it was required to be a power of 2. Now it's stored in
log2 encoded form in five bits from 16 to 21. That gives us 11 more bits of
space.

You may have already noticed that you only need four bits to encode a 16-bit
power of two, so why five bits? Because the AsmParser accepted 32-bit
alignments, even though we couldn't store them (they were silently discarded).
Now we can store them in memory, but not in the bitcode.

The bitcode format was already storing these as 64-bit VBR integers. So, the
bitcode format stays the same, keeping the alignment values stored as 16 bit
raw values. There's some hideous code in the reader and writer that deals with
this, waiting to be ripped out the moment we run out of bits again and have to
replace the parameter attributes table encoding.

llvm-svn: 61019
2008-12-15 01:34:58 +00:00
Misha Brukman 86242e1990 Global replace of yellow W3C "valid HTML/CSS" icons with blue ones.
llvm-svn: 60880
2008-12-11 17:34:48 +00:00
Mon P Wang 68d4eee062 Added a little more information that vector shifts require vector shift amount.
llvm-svn: 60831
2008-12-10 08:55:09 +00:00
Mon P Wang 4dd832d241 Fix getNode to allow a vector for the shift amount for shifts of vectors.
Fix the shift amount when unrolling a vector shift into scalar shifts.
Fix problem in getShuffleScalarElt where it assumes that the input of
a bit convert must be a vector.

llvm-svn: 60740
2008-12-09 05:46:39 +00:00
Misha Brukman c9813bda47 Fixed HTML closing tag, cleaned up some spacing.
llvm-svn: 60153
2008-11-27 06:41:20 +00:00
Bill Wendling 6e41adddab Small formatting change.
llvm-svn: 60113
2008-11-26 19:19:05 +00:00