[llvm-commits] [www-releases] r157276 [2/5] - in /www-releases/trunk/3.1/docs: ./ CommandGuide/ CommandGuide/html/ CommandGuide/man/ CommandGuide/man/man1/ CommandGuide/ps/ HistoricalNotes/ doxygen/ img/ tutorial/

Tanya Lattner tonic at nondot.org
Tue May 22 12:32:30 PDT 2012


Added: www-releases/trunk/3.1/docs/CommandGuide/ps/lit.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/lit.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/lit.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/lit.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,801 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 5
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic at 0 ENC0/Times-Italic RE/Times-Bold at 0 ENC0/Times-Bold RE
+/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 155.07<4c4954283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<4c4954283129>157.57 E/F1 10.95
+/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0<6c697420ad204c4c>108
+96 Q<564d20496e7465>-1 E<6772617465642054>-.15 E<6573746572>-.7 E F1
+<53594e4f50534953>72 112.8 Q/F2 10/Times-Bold at 0 SF<6c6974>108 124.8 Q F0
+<5b>2.5 E/F3 10/Times-Italic at 0 SF<6f7074696f6e73>A F0 2.5<5d5b>C F3
+<7465737473>-2.5 E F0<5d>A F1<4445534352495054494f4e>72 141.6 Q F2
+<6c6974>108 153.6 Q F0 2.428
+<6973206120706f727461626c6520746f6f6c20666f722065>4.928 F -.15<7865>-.15
+G<637574696e67>.15 E/F4 9/Times-Roman at 0 SF<4c4c>4.928 E<564d>-.9 E F0
+2.427<616e6420436c616e67207374796c652074657374207375697465732c2073756d6d
+6172697a696e6720746865697220726573756c74732c20616e64>4.928 F<70726f>108
+165.6 Q 2.094<766964696e6720696e6469636174696f6e206f662066>-.15 F
+<61696c757265732e>-.1 E F2<6c6974>4.594 E F0 2.094<69732064657369676e65
+6420746f2062652061206c696768747765696768742074657374696e6720746f6f6c2077
+6974682061732073696d706c6520612075736572>4.594 F<696e74657266>108 177.6
+Q<61636520617320706f737369626c652e>-.1 E F2<6c6974>108 194.4 Q F0 .108
+<73686f756c642062652072756e2077697468206f6e65206f72206d6f7265>2.608 F F3
+<7465737473>2.608 E F0 .108<746f2072756e2073706563698c6564206f6e20746865
+20636f6d6d616e64206c696e652e2054>2.608 F .108
+<657374732063616e2062652065697468657220696e6469>-.7 F<76696475616c>-.25
+E<74657374208c6c6573206f72206469726563746f7269657320746f2073656172636820
+666f7220746573747320287365652060>108 206.4 Q<60>-.74 E F4 .25
+<5445535420444953434f>B<564552>-.45 E<59>-.585 E F0 -.74<2727>C<292e>.74
+E .83<456163682073706563698c656420746573742077696c6c2062652065>108 223.2
+R -.15<7865>-.15 G .83<63757465642028706f74656e7469616c6c7920696e207061
+72616c6c656c2920616e64206f6e636520616c6c207465737473206861>.15 F 1.13
+-.15<76652062>-.2 H .83<65656e2072756e>.15 F F2<6c6974>3.33 E F0 .83
+<77696c6c207072696e74>3.33 F .528<73756d6d61727920696e666f726d6174696f6e
+206f6e20746865206e756d626572206f6620746573747320776869636820706173736564
+206f722066>108 235.2 R .527<61696c656420287365652060>-.1 F<60>-.74 E F4
+.777<54455354205354>B -.999<4154>-.837 G .777<555320524553554c>.999 F
+<5453>-.828 E F0 -.74<2727>C .527<292e20546865>.74 F F2<6c6974>108 247.2
+Q F0<70726f6772616d2077696c6c2065>2.5 E -.15<7865>-.15 G
+<6375746520776974682061206e6f6e2d7a65726f2065>.15 E
+<78697420636f646520696620616e>-.15 E 2.5<7974>-.15 G<657374732066>-2.5 E
+<61696c2e>-.1 E .197<427920646566>108 264 R<61756c74>-.1 E F2<6c6974>
+2.697 E F0 .197<77696c6c2075736520612073756363696e63742070726f6772657373
+20646973706c617920616e642077696c6c206f6e6c79207072696e742073756d6d617279
+20696e666f726d6174696f6e20666f7220746573742066>2.697 F<61696c757265732e>
+-.1 E<5365652060>108 276 Q<60>-.74 E F4 .25
+<4f5554505554204f5054494f4e53>B F0 1.48 -.74<27272066>D
+<6f72206f7074696f6e7320636f6e74726f6c6c696e6720746865>.74 E F2<6c6974>
+2.5 E F0<70726f677265737320646973706c617920616e64206f75747075742e>2.5 E
+F2<6c6974>108 292.8 Q F0 .72<616c736f20696e636c756465732061206e756d6265
+72206f66206f7074696f6e7320666f7220636f6e74726f6c6c696e6720686f>3.22 F
+3.22<7774>-.25 G .72<65737473206172652065>-3.22 F -.15<7865>-.15 G .72
+<6375746564202873706563698c63206665617475726573206d617920646570656e64>
+.15 F<6f6e2074686520706172746963756c6172207465737420666f726d6174292e2053
+65652060>108 304.8 Q<60>-.74 E F4 .25
+<455845435554494f4e204f5054494f4e53>B F0 1.48 -.74<27272066>D
+<6f72206d6f726520696e666f726d6174696f6e2e>.74 E<46696e616c6c79>108 321.6
+Q<2c>-.65 E F2<6c6974>4.731 E F0 2.232<616c736f20737570706f727473206164
+646974696f6e616c206f7074696f6e7320666f72206f6e6c792072756e6e696e67206120
+737562736574206f6620746865206f7074696f6e732073706563698c6564206f6e207468
+65>4.731 F<636f6d6d616e64206c696e652c207365652060>108 333.6 Q<60>-.74 E
+F4 .25<53454c454354494f4e204f5054494f4e53>B F0 1.48 -.74<27272066>D
+<6f72206d6f726520696e666f726d6174696f6e2e>.74 E 3.565
+<557365727320696e746572657374656420696e20746865>108 350.4 R F2<6c6974>
+6.065 E F0 3.565<617263686974656374757265206f722064657369676e696e672061>
+6.065 F F2<6c6974>6.065 E F0 3.564
+<74657374696e6720696d706c656d656e746174696f6e2073686f756c64207365652060>
+6.064 F<60>-.74 E F4<4c4954>A<494e465241535452>108 362.4 Q<554354555245>
+-.36 E F0 -.74<2727>C F1<47454e4552414c204f5054494f4e53>72 379.2 Q F2
+<ad68>108 391.2 Q F0<2c>A F2<adad68656c70>2.5 E F0<53686f>128 403.2 Q
+2.5<7774>-.25 G<6865>-2.5 E F2<6c6974>2.5 E F0
+<68656c70206d6573736167652e>2.5 E F2<ad6a>108 420 Q F3<4e>2.5 E F0<2c>A
+F2<adad746872>2.5 E<65616473>-.18 E F0<3d>A F3<4e>A F0<52756e>128 432 Q
+F3<4e>4.3 E F0 1.8<746573747320696e20706172616c6c656c2e20427920646566>
+4.3 F 1.8<61756c742c2074686973206973206175746f6d61746963616c6c792063686f
+73656e20746f206d6174636820746865206e756d626572206f66206465746563746564>
+-.1 F -.2<6176>128 444 S<61696c61626c6520435055732e>-.05 E F2
+<adad636f6e8c67ad7072>108 460.8 Q<658c78>-.18 E F0<3d>A/F5 9
+/Times-Italic at 0 SF -.243<4e41>C<4d45>.243 E F0 .195
+<53656172636820666f72>128 472.8 R F5 -.243<4e41>2.695 G<4d45>.243 E F3
+<2e636667>A F0<616e64>2.695 E F5 -.243<4e41>2.695 G<4d45>.243 E F3
+<2e73697465>A<2e636667>-.15 E F0 .195<7768656e20736561726368696e6720666f
+722074657374207375697465732c20696e7374656164206f66>2.695 F F3
+<6c69742e636667>2.695 E F0<616e64>2.695 E F3<6c69742e73697465>2.695 E
+<2e636667>-.15 E F0<2e>A F2<adad706172616d>108 489.6 Q F5 -.243<4e41>2.5
+G<4d45>.243 E F0<2c>A F2<adad706172616d>2.5 E F5 -.243<4e41>2.5 G<4d45>
+.243 E F0<3d>A F5 -.54<5641>C<4c5545>.54 E F0 1.439
+<416464206120757365722064658c6e656420706172616d65746572>128 501.6 R F5
+-.243<4e41>3.94 G<4d45>.243 E F0 1.44<7769746820746865206769>3.94 F -.15
+<7665>-.25 G<6e>.15 E F5 -.54<5641>3.94 G<4c5545>.54 E F0 1.44
+<286f722074686520656d70747920737472696e67206966206e6f74206769>3.94 F
+-.15<7665>-.25 G 1.44<6e292e20546865>.15 F<6d65616e696e6720616e64207573
+65206f6620746865736520706172616d6574657273206973207465737420737569746520
+646570656e64656e742e>128 513.6 Q F1<4f5554505554204f5054494f4e53>72
+530.4 Q F2<ad71>108 542.4 Q F0<2c>A F2<adad7175696574>2.5 E F0
+<537570707265737320616e>128 554.4 Q 2.5<796f>-.15 G<75747075742065>-2.5
+E<786365707420666f7220746573742066>-.15 E<61696c757265732e>-.1 E F2
+<ad73>108 571.2 Q F0<2c>A F2<adad73756363696e6374>2.5 E F0<53686f>128
+583.2 Q 2.5<776c>-.25 G<657373206f75747075742c20666f722065>-2.5 E
+<78616d706c6520646f6e27>-.15 E 2.5<7473>-.18 G<686f>-2.5 E 2.5<7769>-.25
+G<6e666f726d6174696f6e206f6e207465737473207468617420706173732e>-2.5 E F2
+<ad76>108 600 Q F0<2c>A F2<adad76>2.5 E<6572626f7365>-.1 E F0<53686f>128
+612 Q 2.568<776d>-.25 G .068
+<6f726520696e666f726d6174696f6e206f6e20746573742066>-2.568 F .068
+<61696c757265732c20666f722065>-.1 F .067<78616d706c652074686520656e7469
+72652074657374206f757470757420696e7374656164206f66206a757374207468652074
+65737420726573756c742e>-.15 F F2<adad6e6fad7072>108 628.8 Q<6f6772>-.18
+E<657373ad626172>-.18 E F0<446f206e6f7420757365206375727365732062617365
+642070726f677265737320626172>128 640.8 Q<2e>-.55 E F1
+<455845435554494f4e204f5054494f4e53>72 657.6 Q F2<adad70617468>108 669.6
+Q F0<3d>A F5 -.963 -.81<50412054>D<48>.81 E F0
+<5370656369667920616e206164646974696f6e>128 681.6 Q F5 -.963 -.81
+<50412054>2.5 H<48>.81 E F0
+<746f20757365207768656e20736561726368696e6720666f722065>2.5 E -.15<7865>
+-.15 G<63757461626c657320696e2074657374732e>.15 E F2<adad7667>108 698.4
+Q F0 .885<52756e20696e6469>128 710.4 R .886
+<76696475616c20746573747320756e6465722076>-.25 F .886<616c6772696e642028
+7573696e6720746865206d656d636865636b20746f6f6c292e20546865>-.25 F F3
+<adad657272>3.386 E<6f72ad65>-.45 E<786974636f6465>-.2 E F0<6172>3.386 E
+.886<67756d656e7420666f72>-.18 F -.25<7661>128 722.4 S
+<6c6772696e64206973207573656420736f20746861742076>.25 E
+<616c6772696e642066>-.25 E
+<61696c757265732077696c6c206361757365207468652070726f6772616d20746f2065>
+-.1 E<78697420776974682061206e6f6e2d7a65726f207374617475732e>-.15 E
+188.72<43565320323031322d30332d3236>72 768 R<31>205.67 E 0 Cg EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 155.07<4c4954283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<4c4954283129>157.57 E/F1 10
+/Times-Bold at 0 SF<adad7667ad6172>108 84 Q<67>-.1 E F0<3d>A/F2 9
+/Times-Italic at 0 SF<415247>A F0<5768656e>128 96 Q/F3 10/Times-Italic at 0 SF
+<adad7667>2.5 E F0
+<697320757365642c207370656369667920616e206164646974696f6e616c206172>2.5
+E<67756d656e7420746f207061737320746f2076>-.18 E
+<616c6772696e6420697473656c662e>-.25 E F1<adad74696d65ad7465737473>108
+112.8 Q F0 -.35<5472>128 124.8 S 1.117<61636b207468652077>.35 F 1.117
+<616c6c2074696d6520696e6469>-.1 F 1.116
+<76696475616c2074657374732074616b>-.25 F 3.616<6574>-.1 G 3.616<6f65>
+-3.616 G -.15<7865>-3.766 G 1.116<6375746520616e6420696e636c756465732074
+686520726573756c747320696e207468652073756d6d617279206f75747075742e>.15 F
+.683<546869732069732075736566756c20666f722064657465726d696e696e67207768
+69636820746573747320696e206120746573742073756974652074616b>128 136.8 R
+3.183<6574>-.1 G .683<6865206d6f73742074696d6520746f2065>-3.183 F -.15
+<7865>-.15 G .684<637574652e204e6f746520746861742074686973>.15 F
+<6f7074696f6e206973206d6f73742075736566756c2077697468>128 148.8 Q F3
+<ad6a2031>2.5 E F0<2e>A/F4 10.95/Times-Bold at 0 SF
+<53454c454354494f4e204f5054494f4e53>72 165.6 Q F1
+<adad6d6178ad7465737473>108 177.6 Q F0<3d>A F3<4e>A F0
+<52756e206174206d6f7374>128 189.6 Q F3<4e>2.5 E F0
+<746573747320616e64207468656e207465726d696e6174652e>2.5 E F1
+<adad6d6178ad74696d65>108 206.4 Q F0<3d>A F3<4e>A F0
+<5370656e64206174206d6f7374>128 218.4 Q F3<4e>2.5 E F0<7365636f6e647320
+28617070726f78696d6174656c79292072756e6e696e6720746573747320616e64207468
+656e207465726d696e6174652e>2.5 E F1<adad736875668d65>108 235.2 Q F0
+<52756e2074686520746573747320696e20612072616e646f6d206f72646572>128
+247.2 Q<2e>-.55 E F4<4144444954494f4e>72 264 Q<414c204f5054494f4e53>
+-.219 E F1<adad646562>108 276 Q<7567>-.2 E F0<52756e>128 288 Q F1
+<6c6974>2.5 E F0<696e20646562>2.5 E<7567206d6f64652c20666f7220646562>-.2
+E<756767696e6720636f6e8c6775726174696f6e2069737375657320616e64>-.2 E F1
+<6c6974>2.5 E F0<697473656c662e>2.5 E F1<adad73686f>108 304.8 Q
+<77ad737569746573>-.1 E F0<4c6973742074686520646973636f>128 316.8 Q -.15
+<7665>-.15 G<7265642074657374207375697465732061732070617274206f66207468
+65207374616e64617264206f75747075742e>.15 E F1
+<adad6e6fad74636cad6173ad7368>108 333.6 Q F0<52756e2054636c207363726970
+747320696e7465726e616c6c792028696e7374656164206f6620636f6e>128 345.6 Q
+-.15<7665>-.4 G<7274696e6720746f207368656c6c2073637269707473292e>.15 E
+F1<adad72>108 362.4 Q<6570656174>-.18 E F0<3d>A F3<4e>A F0 .43
+<52756e20656163682074657374>128 374.4 R F3<4e>2.93 E F0 .429<74696d6573
+2e2043757272656e746c792074686973206973207072696d6172696c792075736566756c
+20666f722074696d696e672074657374732c206f7468657220726573756c747320617265
+206e6f7420636f6c6c61746564>2.93 F<696e20616e>128 386.4 Q 2.5<7972>-.15 G
+<6561736f6e61626c652066>-2.5 E<617368696f6e2e>-.1 E F4<45584954205354>72
+403.2 Q -1.04<4154>-.986 G<5553>1.04 E F1<6c6974>108 415.2 Q F0 .809
+<77696c6c2065>3.309 F .809<786974207769746820616e2065>-.15 F .809
+<78697420636f6465206f6620312069662074686572652061726520616e>-.15 F<79>
+-.15 E/F5 9/Times-Roman at 0 SF -.666<4641>3.309 G<494c>.666 E F0<6f72>
+3.309 E F5<5850>3.309 E<415353>-.828 E F0 .809
+<726573756c74732e204f74686572776973652c2069742077696c6c2065>3.309 F .809
+<786974207769746820746865>-.15 F 1.514
+<73746174757320302e204f746865722065>108 427.2 R 1.513<78697420636f646573
+20617265207573656420666f72206e6f6e2d746573742072656c617465642066>-.15 F
+1.513<61696c757265732028666f722065>-.1 F 1.513
+<78616d706c6520612075736572206572726f72206f7220616e20696e7465726e616c>
+-.15 F<70726f6772616d206572726f72292e>108 439.2 Q F4
+<5445535420444953434f>72 456 Q<564552>-.548 E<59>-.383 E F0 1.208
+<54686520696e707574732070617373656420746f>108 468 R F1<6c6974>3.709 E F0
+1.209<63616e2062652065697468657220696e6469>3.709 F 1.209<76696475616c20
+74657374732c206f7220656e74697265206469726563746f72696573206f722068696572
+61726368696573206f6620746573747320746f2072756e2e>-.25 F<5768656e>108 480
+Q F1<6c6974>3.144 E F0 .643<7374617274732075702c20746865208c727374207468
+696e6720697420646f657320697320636f6e>3.143 F -.15<7665>-.4 G .643<727420
+74686520696e7075747320696e746f206120636f6d706c657465206c697374206f662074
+6573747320746f2072756e2061732070617274206f66>.15 F F3
+<7465737420646973636f>108 492 Q<76657279>-.1 E F0<2e>A 2.218
+<496e20746865>108 508.8 R F1<6c6974>4.718 E F0 2.219<6d6f64656c2c2065>
+4.719 F -.15<7665>-.25 G 2.219<72792074657374206d7573742065>.15 F 2.219
+<7869737420696e7369646520736f6d65>-.15 F F3 2.219<74657374207375697465>
+4.719 F F0<2e>A F1<6c6974>4.719 E F0<7265736f6c76>4.719 E 2.219
+<65732074686520696e707574732073706563698c6564206f6e20746865>-.15 F .017<
+636f6d6d616e64206c696e6520746f207465737420737569746573206279207365617263
+68696e6720757077>108 520.8 R .016<617264732066726f6d2074686520696e707574
+207061746820756e74696c206974208c6e64732061>-.1 F F3<6c69742e636667>2.516
+E F0<6f72>2.516 E F3<6c69742e73697465>2.516 E<2e636667>-.15 E F0
+<8c6c652e>2.516 E 1.861<5468657365208c6c65732073657276>108 532.8 R 4.361
+<6561>-.15 G 4.361<7362>-4.361 G 1.861<6f74682061206d61726b>-4.361 F
+1.861<6572206f6620746573742073756974657320616e6420617320636f6e8c67757261
+74696f6e208c6c6573207768696368>-.1 F F1<6c6974>4.361 E F0 1.861
+<6c6f61647320696e206f7264657220746f>4.361 F<756e6465727374616e6420686f>
+108 544.8 Q 2.5<7774>-.25 G 2.5<6f8c>-2.5 G<6e6420616e642072756e20746865
+20746573747320696e736964652074686520746573742073756974652e>-2.5 E
+<4f6e6365>108 561.6 Q F1<6c6974>2.974 E F0 .474<686173206d61707065642074
+686520696e7075747320696e746f20746573742073756974657320697420747261>2.974
+F -.15<7665>-.2 G .473<7273657320746865206c697374206f6620696e7075747320
+616464696e6720746573747320666f7220696e6469>.15 F .473
+<76696475616c208c6c6573>-.25 F<616e642072656375727369>108 573.6 Q -.15
+<7665>-.25 G<6c7920736561726368696e6720666f7220746573747320696e20646972
+6563746f726965732e>.15 E 2.936<546869732062656861>108 590.4 R 2.936
+<76696f72206d616b>-.2 F 2.936<6573206974206561737920746f2073706563696679
+206120737562736574206f6620746573747320746f2072756e2c207768696c6520737469
+6c6c20616c6c6f>-.1 F 2.937<77696e67207468652074657374207375697465>-.25 F
+.652<636f6e8c6775726174696f6e20746f20636f6e74726f6c2065>108 602.4 R .652
+<786163746c7920686f>-.15 F 3.151<7774>-.25 G .651
+<657374732061726520696e7465727072657465642e20496e206164646974696f6e2c>
+-3.151 F F1<6c6974>3.151 E F0<616c>3.151 E -.1<7761>-.1 G .651
+<7973206964656e74698c6573207465737473206279207468652074657374>.1 F 1.508
+<737569746520746865>108 614.4 R 4.008<7961>-.15 G 1.508
+<726520696e2c20616e642074686569722072656c617469>-4.008 F 1.809 -.15
+<76652070>-.25 H 1.509
+<61746820696e736964652074686520746573742073756974652e2046>.15 F 1.509<6f
+7220617070726f7072696174656c7920636f6e8c67757265642070726f6a656374732c20
+74686973>-.15 F<616c6c6f>108 626.4 Q<7773>-.25 E F1<6c6974>2.5 E F0
+<746f2070726f>2.5 E<7669646520636f6e>-.15 E -.15<7665>-.4 G
+<6e69656e7420616e64208d65>.15 E
+<7869626c6520737570706f727420666f72206f75742d6f662d747265652062>-.15 E
+<75696c64732e>-.2 E F4<54455354205354>72 643.2 Q -1.04<4154>-.986 G
+<555320524553554c>1.04 E<5453>-1.007 E F0<45616368207465737420756c74696d
+6174656c792070726f6475636573206f6e65206f662074686520666f6c6c6f>108 655.2
+Q<77696e672073697820726573756c74733a>-.25 E/F6 9/Times-Bold at 0 SF -.666
+<5041>108 672 S<5353>.666 E F0<5468652074657374207375636365656465642e>
+128 684 Q F6<5846>108 700.8 Q<41494c>-.81 E F0 1.11
+<54686520746573742066>128 712.8 R 1.11<61696c65642c2062>-.1 F 1.11
+<757420746861742069732065>-.2 F 1.109<787065637465642e205468697320697320
+7573656420666f72207465737420666f726d61747320776869636820616c6c6f>-.15 F
+3.609<7773>-.25 G 1.109<706563696679696e67207468617420612074657374>
+-3.609 F<646f6573206e6f742063757272656e746c792077>128 724.8 Q
+<6f726b2c2062>-.1 E<7574207769736820746f206c6561>-.2 E .3 -.15<76652069>
+-.2 H 2.5<7469>.15 G 2.5<6e74>-2.5 G<686520746573742073756974652e>-2.5 E
+188.72<43565320323031322d30332d3236>72 768 R<32>205.67 E 0 Cg EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 155.07<4c4954283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<4c4954283129>157.57 E/F1 9
+/Times-Bold at 0 SF<5850>108 84 Q<415353>-.666 E F0 .34
+<5468652074657374207375636365656465642c2062>128 96 R .34<75742069742077>
+-.2 F .34<61732065>-.1 F .34<7870656374656420746f2066>-.15 F .34<61696c
+2e2054686973206973207573656420666f72207465737473207768696368207765726520
+73706563698c65642061732065>-.1 F<78706563746564>-.15 E .072<746f2066>128
+108 R .072<61696c2c2062>-.1 F .072<757420617265206e6f>-.2 F 2.572<7773>
+-.25 G .072<756363656564696e67202867656e6572616c6c7920626563617573652074
+6865206665617475726520746865>-2.572 F 2.572<7974>-.15 G .072<6573742077>
+-2.572 F .072<61732062726f6b>-.1 F .071
+<656e20616e6420686173206265656e208c78>-.1 F<6564292e>-.15 E F1 -.81
+<4641>108 124.8 S<494c>.81 E F0<54686520746573742066>128 136.8 Q
+<61696c65642e>-.1 E F1<554e5245534f4c>108 153.6 Q<564544>-.828 E F0 .701
+<546865207465737420726573756c7420636f756c64206e6f742062652064657465726d
+696e65642e2046>128 165.6 R .702<6f722065>-.15 F .702<78616d706c652c2074
+686973206f6363757273207768656e20746865207465737420636f756c64206e6f742062
+652072756e2c20746865>-.15 F<7465737420697473656c6620697320696e>128 177.6
+Q -.25<7661>-.4 G<6c69642c206f722074686520746573742077>.25 E
+<617320696e7465727275707465642e>-.1 E F1<554e535550504f52>108 194.4 Q
+<544544>-.36 E F0 3.086<5468652074657374206973206e6f7420737570706f727465
+6420696e207468697320656e>128 206.4 R 3.085<7669726f6e6d656e742e20546869
+732069732075736564206279207465737420666f726d6174732077686963682063616e20
+7265706f7274>-.4 F<756e737570706f727465642074657374732e>128 218.4 Q .007
+<446570656e64696e67206f6e20746865207465737420666f726d617420746573747320
+6d61792070726f64756365206164646974696f6e616c20696e666f726d6174696f6e2061
+626f757420746865697220737461747573202867656e6572616c6c79206f6e6c7920666f
+72>108 235.2 R -.1<6661>108 247.2 S<696c75726573292e2053656520746865204f
+75747075742073656374696f6e20666f72206d6f726520696e666f726d6174696f6e2e>
+.1 E/F2 10.95/Times-Bold at 0 SF<4c495420494e465241535452>72 264 Q
+<554354555245>-.329 E F0 3.248
+<546869732073656374696f6e2064657363726962657320746865>108 276 R/F3 10
+/Times-Bold at 0 SF<6c6974>5.748 E F0 3.247<74657374696e672061726368697465
+637475726520666f7220757365727320696e746572657374656420696e20637265617469
+6e672061206e65>5.748 F<77>-.25 E F3<6c6974>5.747 E F0<74657374696e67>
+5.747 E<696d706c656d656e746174696f6e2c206f722065>108 288 Q
+<7874656e64696e6720616e2065>-.15 E<78697374696e67206f6e652e>-.15 E F3
+<6c6974>108 304.8 Q F0 .835<70726f706572206973207072696d6172696c7920616e
+20696e66726173747275637475726520666f7220646973636f>3.335 F -.15<7665>
+-.15 G .835<72696e6720616e642072756e6e696e672061726269747261727920746573
+74732c20616e6420746f2065>.15 F .835<78706f736520612073696e676c65>-.15 F
+<636f6e>108 316.8 Q -.15<7665>-.4 G .076<6e69656e7420696e74657266>.15 F
+.076<61636520746f2074686573652074657374732e>-.1 F F3<6c6974>2.576 E F0
+.075<697473656c6620646f65736e27>2.575 F 2.575<746b>-.18 G<6e6f>-2.575 E
+2.575<7768>-.25 G .575 -.25<6f772074>-2.575 H 2.575<6f72>.25 G .075<756e
+2074657374732c207261746865722074686973206c6f6769632069732064658c6e656420
+6279>-2.575 F/F4 10/Times-Italic at 0 SF<74657374>2.575 E<737569746573>108
+328.8 Q F0<2e>A F1 .25<5445535420535549544553>87 345.6 R F0 .203
+<41732064657363726962656420696e2060>108 357.6 R<60>-.74 E/F5 9
+/Times-Roman at 0 SF .454<5445535420444953434f>B<564552>-.45 E<59>-.585 E
+F0 -.74<2727>C 2.704<2c74>.74 G .204<657374732061726520616c>-2.704 F -.1
+<7761>-.1 G .204<7973206c6f636174656420696e736964652061>.1 F F4 .204
+<74657374207375697465>2.704 F F0 2.704<2e54>C .204
+<657374207375697465732073657276>-3.404 F 2.704<6574>-.15 G 2.704<6f64>
+-2.704 G<658c6e65>-2.704 E .562
+<74686520666f726d6174206f662074686520746573747320746865>108 369.6 R
+3.062<7963>-.15 G .562<6f6e7461696e2c20746865206c6f67696320666f72208c6e
+64696e672074686f73652074657374732c20616e6420616e>-3.062 F 3.061<7961>
+-.15 G .561<64646974696f6e616c20696e666f726d6174696f6e20746f2072756e>
+-3.061 F<7468652074657374732e>108 381.6 Q F3<6c6974>108 398.4 Q F0 .9<69
+64656e74698c6573207465737420737569746573206173206469726563746f7269657320
+636f6e7461696e696e67>3.4 F F4<6c69742e636667>3.401 E F0<6f72>3.401 E F4
+<6c69742e73697465>3.401 E<2e636667>-.15 E F0 .901
+<8c6c6573202873656520616c736f>3.401 F F3<adad636f6e8c67ad7072>3.401 E
+<658c78>-.18 E F0 .901<292e2054>B<657374>-.7 E 1.726
+<7375697465732061726520696e697469616c6c7920646973636f>108 410.4 R -.15
+<7665>-.15 G 1.726<7265642062792072656375727369>.15 F -.15<7665>-.25 G
+1.725<6c7920736561726368696e6720757020746865206469726563746f727920686965
+7261726368>.15 F 4.225<7966>-.05 G 1.725
+<6f7220616c6c2074686520696e707574208c6c6573>-4.225 F
+<706173736564206f6e2074686520636f6d6d616e64206c696e652e2059>108 422.4 Q
+<6f752063616e20757365>-1.1 E F3<adad73686f>2.5 E<77ad737569746573>-.1 E
+F0<746f20646973706c61792074686520646973636f>2.5 E -.15<7665>-.15 G
+<72656420746573742073756974657320617420737461727475702e>.15 E .521
+<4f6e63652061207465737420737569746520697320646973636f>108 439.2 R -.15
+<7665>-.15 G .521<7265642c2069747320636f6e8c67208c6c65206973206c6f616465
+642e20436f6e8c67208c6c6573207468656d73656c76>.15 F .522
+<65732061726520507974686f6e206d6f64756c6573207768696368>-.15 F
+<77696c6c2062652065>108 451.2 Q -.15<7865>-.15 G
+<63757465642e205768656e2074686520636f6e8c67208c6c652069732065>.15 E -.15
+<7865>-.15 G<63757465642c207477>.15 E 2.5<6f69>-.1 G
+<6d706f7274616e7420676c6f62616c2076>-2.5 E
+<61726961626c6573206172652070726564658c6e65643a>-.25 E F3<6c6974>108 468
+Q F0 .199<54686520676c6f62616c>11.11 F F3<6c6974>2.699 E F0 .199
+<636f6e8c6775726174696f6e206f626a656374202861>2.699 F F4
+<4c6974436f6e8c67>2.699 E F0 .198
+<696e7374616e6365292c2077686963682064658c6e6573207468652062>2.699 F .198
+<75696c74696e207465737420666f726d6174732c20676c6f62616c>-.2 F<636f6e8c67
+75726174696f6e20706172616d65746572732c20616e64206f746865722068656c706572
+20726f7574696e657320666f7220696d706c656d656e74696e67207465737420636f6e8c
+6775726174696f6e732e>128 480 Q F3<636f6e8c67>108 496.8 Q F0 .509
+<546869732069732074686520636f6e8c67206f626a656374202861>128 508.8 R F4
+-.92<5465>3.009 G<7374696e67436f6e8c67>.92 E F0 .51<696e7374616e63652920
+666f722074686520746573742073756974652c2077686963682074686520636f6e8c6720
+8c6c652069732065>3.009 F<78706563746564>-.15 E .194
+<746f20706f70756c6174652e2054686520666f6c6c6f>128 520.8 R .194
+<77696e672076>-.25 F .194<61726961626c65732061726520616c736f2061>-.25 F
+-.25<7661>-.2 G .194<696c61626c65206f6e20746865>.25 F F4<636f6e8c67>
+2.693 E F0 .193
+<6f626a6563742c20736f6d65206f66207768696368206d75737420626520736574>
+2.693 F<62792074686520636f6e8c6720616e64206f746865727320617265206f707469
+6f6e616c206f722070726564658c6e65643a>128 532.8 Q F3<6e616d65>128 550.8 Q
+F4<5b72>2.5 E<6571756972>-.37 E<65645d>-.37 E F0<546865206e616d65206f66
+2074686520746573742073756974652c20666f722075736520696e207265706f72747320
+616e6420646961676e6f73746963732e>2.5 E F3<746573745f66>128 568.8 Q
+<6f726d6174>-.25 E F4<5b72>3.072 E<6571756972>-.37 E<65645d>-.37 E F0
+.573<546865207465737420666f726d6174206f626a6563742077686963682077696c6c
+206265207573656420746f20646973636f>3.073 F -.15<7665>-.15 G 3.073<7261>
+.15 G .573<6e642072756e20746573747320696e207468652074657374>-3.073 F
+<73756974652e2047656e6572616c6c7920746869732077696c6c20626520612062>128
+580.8 Q<75696c74696e207465737420666f726d61742061>-.2 E -.25<7661>-.2 G
+<696c61626c652066726f6d20746865>.25 E F4<6c69742e666f726d617473>2.5 E F0
+<6d6f64756c652e>2.5 E F3<746573745f7372>128 598.8 Q<635f72>-.18 E
+<6f6f74>-.18 E F0 .675<546865208c6c6573797374656d207061746820746f207468
+65207465737420737569746520726f6f742e2046>3.175 F .675
+<6f72206f75742d6f662d6469722062>-.15 F .675
+<75696c6473207468697320697320746865206469726563746f72792074686174>-.2 F
+<77696c6c206265207363616e6e656420666f722074657374732e>128 610.8 Q F3
+<746573745f657865635f72>128 628.8 Q<6f6f74>-.18 E F0 -.15<466f>3.153 G
+3.153<726f>.15 G .653<75742d6f662d6469722062>-3.153 F .653<75696c64732c
+20746865207061746820746f20746865207465737420737569746520726f6f7420696e73
+69646520746865206f626a656374206469726563746f7279>-.2 F 3.154<2e54>-.65 G
+.654<686973206973>-3.154 F<77686572652074657374732077696c6c206265207275
+6e20616e642074656d706f72617279206f7574707574208c6c657320706c616365642e>
+128 640.8 Q F3<656e>128 658.8 Q<766972>-.4 E<6f6e6d656e74>-.18 E F0 2.5
+<4164>2.5 G<696374696f6e61727920726570726573656e74696e672074686520656e>
+-2.5 E<7669726f6e6d656e7420746f20757365207768656e2065>-.4 E -.15<7865>
+-.15 G<637574696e6720746573747320696e207468652073756974652e>.15 E F3
+<7375668c786573>128 676.8 Q F0 -.15<466f>2.735 G<72>.15 E F3<6c6974>
+2.735 E F0 .235<7465737420666f726d617473207768696368207363616e2064697265
+63746f7269657320666f722074657374732c20746869732076>2.735 F .234
+<61726961626c652069732061206c697374206f6620737566>-.25 F<8c78>-.25 E
+.234<657320746f206964656e74696679>-.15 F
+<74657374208c6c65732e20557365642062793a>128 688.8 Q F4<536854>2.5 E
+<657374>-.92 E F0<2c>A F4<54636c54>2.5 E<657374>-.92 E F0<2e>A F3
+<737562737469747574696f6e73>128 706.8 Q F0 -.15<466f>2.631 G<72>.15 E F3
+<6c6974>2.631 E F0 .131
+<7465737420666f726d61747320776869636820737562737469747574652076>2.631 F
+.131<61726961626c657320696e746f20612074657374207363726970742c2074686520
+6c697374206f6620737562737469747574696f6e7320746f>-.25 F
+<706572666f726d2e20557365642062793a>128 718.8 Q F4<536854>2.5 E<657374>
+-.92 E F0<2c>A F4<54636c54>2.5 E<657374>-.92 E F0<2e>A 188.72
+<43565320323031322d30332d3236>72 768 R<33>205.67 E 0 Cg EP
+%%Page: 4 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 155.07<4c4954283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<4c4954283129>157.57 E/F1 10
+/Times-Bold at 0 SF<756e737570706f72746564>128 84 Q F0 .43
+<4d61726b20616e20756e737570706f72746564206469726563746f7279>2.93 F 2.929
+<2c61>-.65 G .429<6c6c2074657374732077697468696e2069742077696c6c20626520
+7265706f7274656420617320756e737570706f727465642e2055736564>-2.929 F
+<62793a>128 96 Q/F2 10/Times-Italic at 0 SF<536854>2.5 E<657374>-.92 E F0
+<2c>A F2<54636c54>2.5 E<657374>-.92 E F0<2e>A F1<706172>128 114 Q
+<656e74>-.18 E F0 .417<54686520706172656e7420636f6e8c6775726174696f6e2c
+20746869732069732074686520636f6e8c67206f626a65637420666f7220746865206469
+726563746f727920636f6e7461696e696e672074686520746573742073756974652c206f
+72>2.916 F<4e6f6e652e>128 126 Q F1 -.18<726f>128 144 S<6f74>.18 E F0<54
+686520726f6f7420636f6e8c6775726174696f6e2e20546869732069732074686520746f
+702d6d6f7374>2.5 E F1<6c6974>2.5 E F0
+<636f6e8c6775726174696f6e20696e207468652070726f6a6563742e>2.5 E F1
+<6f6e5f636c6f6e65>128 162 Q F0 2.328
+<54686520636f6e8c672069732061637475616c6c7920636c6f6e656420666f722065>
+4.828 F -.15<7665>-.25 G 2.328<7279207375626469726563746f727920696e7369
+6465206120746573742073756974652c20746f20616c6c6f>.15 F 4.828<776c>-.25 G
+<6f63616c>-4.828 E 1.02<636f6e8c6775726174696f6e206f6e206120706572>128
+174 R 1.02<2d6469726563746f72792062617369732e20546865>-.2 F F2
+<6f6e5f636c6f6e65>3.52 E F0 -.25<7661>3.52 G 1.02<726961626c652063616e20
+62652073657420746f206120507974686f6e2066756e6374696f6e207768696368>.25 F
+.321<77696c6c2062652063616c6c6564207768656e65>128 186 R -.15<7665>-.25 G
+2.821<726163>.15 G .321<6f6e8c6775726174696f6e20697320636c6f6e6564202866
+6f722061207375626469726563746f7279292e205468652066756e6374696f6e2073686f
+756c642074616b>-2.821 F .32<6573207468726565>-.1 F<6172>128 198 Q .875<
+67756d656e74733a202831292074686520706172656e7420636f6e8c6775726174696f6e
+2c2028322920746865206e65>-.18 F 3.375<7763>-.25 G .876
+<6f6e8c6775726174696f6e2028776869636820746865>-3.375 F F2
+<6f6e5f636c6f6e65>3.376 E F0 .876<66756e6374696f6e2077696c6c>3.376 F<67
+656e6572616c6c79206d6f64696679292c20616e64202833292074686520746573742070
+61746820746f20746865206e65>128 210 Q 2.5<7764>-.25 G
+<69726563746f7279206265696e67207363616e6e65642e>-2.5 E/F3 9/Times-Bold at 0
+SF .25<5445535420444953434f>87 226.8 R<564552>-.45 E<59>-.315 E F0 .6
+<4f6e636520746573742073756974657320617265206c6f63617465642c>108 238.8 R
+F1<6c6974>3.099 E F0<72656375727369>3.099 E -.15<7665>-.25 G .599
+<6c7920747261>.15 F -.15<7665>-.2 G .599
+<727365732074686520736f75726365206469726563746f72792028666f6c6c6f>.15 F
+<77696e67>-.25 E F2<746573745f7372>3.099 E<635f72>-.37 E<6f6f74>-.45 E
+F0 3.099<296c>C<6f6f6b696e67>-3.099 E 1.857
+<666f722074657374732e205768656e>108 250.8 R F1<6c6974>4.357 E F0 1.857
+<656e746572732061207375622d6469726563746f7279>4.357 F 4.357<2c69>-.65 G
+4.357<748c>-4.357 G 1.858<72737420636865636b7320746f20736565206966206120
+6e657374656420746573742073756974652069732064658c6e656420696e2074686174>
+-4.357 F<6469726563746f7279>108 262.8 Q 4.682<2e49>-.65 G 4.682<6673>
+-4.682 G 2.181
+<6f2c206974206c6f616473207468617420746573742073756974652072656375727369>
+-4.682 F -.15<7665>-.25 G<6c79>.15 E 4.681<2c6f>-.65 G 2.181<7468657277
+69736520697420696e7374616e7469617465732061206c6f63616c207465737420636f6e
+8c6720666f7220746865>-4.681 F<6469726563746f727920287365652060>108 274.8
+Q<60>-.74 E/F4 9/Times-Roman at 0 SF .25<4c4f43414c20434f4e464947555241>B
+.25<54494f4e2046494c4553>-.999 F F0 -.74<2727>C<292e>.74 E -.7<5465>108
+291.6 S .677<73747320617265206964656e74698c6564206279207468652074657374
+20737569746520746865>.7 F 3.177<7961>-.15 G .677
+<726520636f6e7461696e65642077697468696e2c20616e64207468652072656c617469>
+-3.177 F .977 -.15<76652070>-.25 H .678
+<61746820696e7369646520746861742073756974652e204e6f7465>.15 F .52
+<74686174207468652072656c617469>108 303.6 R .82 -.15<76652070>-.25 H
+.519<617468206d6179206e6f7420726566657220746f20616e2061637475616c208c6c
+65206f6e206469736b3b20736f6d65207465737420666f726d6174732028737563682061
+73>.15 F F2<476f6f>3.019 E<676c6554>-.1 E<657374>-.92 E F0 3.019<2964>C
+<658c6e65>-3.019 E -.74<6060>108 315.6 S .333
+<7669727475616c20746573747327>.74 F 2.833<2777>-.74 G .333
+<68696368206861>-2.833 F .633 -.15<766520612070>-.2 H .333<617468207468
+617420636f6e7461696e7320626f746820746865207061746820746f2074686520616374
+75616c2074657374208c6c6520616e642061207375627061746820746f206964656e7469
+6679>.15 F<746865207669727475616c20746573742e>108 327.6 Q F3 .25
+<4c4f43414c20434f4e464947555241>87 344.4 R .25<54494f4e2046494c4553>
+-.855 F F0<5768656e>108 356.4 Q F1<6c6974>4.842 E F0 2.342<6c6f61647320
+61207375626469726563746f727920696e206120746573742073756974652c2069742069
+6e7374616e7469617465732061206c6f63616c207465737420636f6e8c6775726174696f
+6e20627920636c6f6e696e6720746865>4.842 F 1.178<636f6e8c6775726174696f6e
+20666f722074686520706172656e7420646972656374696f6e>108 368.4 R 5.344
+<8a74>5.344 G 1.178<686520726f6f74206f66207468697320636f6e8c677572617469
+6f6e20636861696e2077696c6c20616c>-5.344 F -.1<7761>-.1 G 1.178
+<7973206265206120746573742073756974652e>.1 F .305<4f6e636520746865207465
+737420636f6e8c6775726174696f6e20697320636c6f6e6564>108 380.4 R F1
+<6c6974>2.805 E F0 .305<636865636b7320666f722061>2.805 F F2
+<6c69742e6c6f63616c2e636667>2.804 E F0 .304
+<8c6c6520696e20746865207375626469726563746f7279>2.804 F 2.804<2e49>-.65
+G 2.804<6670>-2.804 G .304<726573656e742c2074686973208c6c65>-2.804 F .05
+<77696c6c206265206c6f6164656420616e642063616e206265207573656420746f2073
+70656369616c697a652074686520636f6e8c6775726174696f6e20666f72206561636820
+696e6469>108 392.4 R .051<76696475616c206469726563746f7279>-.25 F 2.551
+<2e54>-.65 G .051<6869732066>-2.551 F .051<6163696c6974792063616e>-.1 F
+1.99<6265207573656420746f2064658c6e65207375626469726563746f72696573206f
+66206f7074696f6e616c2074657374732c206f7220746f206368616e6765206f74686572
+20636f6e8c6775726174696f6e20706172616d6574657273>108 404.4 R 6.155<8a66>
+6.155 G<6f72>-6.155 E -.15<6578>108 416.4 S<616d706c652c20746f206368616e
+676520746865207465737420666f726d61742c206f722074686520737566>.15 E<8c78>
+-.25 E<6573207768696368206964656e746966792074657374208c6c65732e>-.15 E
+F3 .25<544553542052>87 433.2 R .25<554e204f555450555420464f524d41>-.27 F
+<54>-.855 E F0 2.029<54686520623c6c69743e206f757470757420666f7220612074
+6573742072756e20636f6e666f726d7320746f2074686520666f6c6c6f>108 445.2 R
+2.029<77696e6720736368656d612c20696e20626f74682073686f727420616e642076>
+-.25 F 2.029<6572626f7365206d6f646573>-.15 F .107
+<28616c74686f75676820696e2073686f7274206d6f6465206e6f>108 457.2 R F4
+-.828<5041>2.606 G<5353>.828 E F0 .106
+<6c696e65732077696c6c2062652073686f>2.606 F .106<776e292e20546869732073
+6368656d6120686173206265656e2063686f73656e20746f2062652072656c617469>
+-.25 F -.15<7665>-.25 G .106<6c79206561737920746f>.15 F
+<72656c6961626c792070617273652062792061206d616368696e652028666f722065>
+108 469.2 Q<78616d706c6520696e2062>-.15 E<75696c64626f74206c6f6720736372
+6170696e67292c20616e6420666f72206f7468657220746f6f6c7320746f2067656e6572
+6174652e>-.2 E<45616368207465737420726573756c742069732065>108 486 Q<7870
+656374656420746f20617070656172206f6e2061206c696e652074686174206d61746368
+65733a>-.15 E<3c726573756c7420636f64653e3a203c74657374206e616d653e20283c
+70726f677265737320696e666f3e29>108 502.8 Q 2.417<7768657265203c72657375
+6c74ad636f64653e2069732061207374616e64617264207465737420726573756c742073
+756368206173>108 519.6 R F4 -.828<5041>4.917 G<5353>.828 E F0<2c>A F4
+-.666<4641>4.917 G<494c>.666 E F0<2c>A F4<5846>4.918 E<41494c>-.666 E F0
+<2c>A F4<5850>4.918 E<415353>-.828 E F0<2c>A F4<554e5245534f4c>4.918 E
+<564544>-.9 E F0 4.918<2c6f>C<72>-4.918 E F4<554e535550504f52>108 531.6
+Q<544544>-.54 E F0 2.5<2e54>C
+<686520706572666f726d616e636520726573756c7420636f646573206f66>-2.5 E F4
+<494d5052>2.5 E -.45<4f56>-.36 G<4544>.45 E F0<616e64>2.5 E F4
+<524547524553534544>2.5 E F0<61726520616c736f20616c6c6f>2.5 E<7765642e>
+-.25 E<546865203c74657374206e616d653e208c656c642063616e20636f6e73697374
+206f6620616e2061726269747261727920737472696e6720636f6e7461696e696e67206e
+6f206e65>108 548.4 Q<776c696e652e>-.25 E .601<546865203c70726f6772657373
+20696e666f3e208c656c642063616e206265207573656420746f207265706f7274207072
+6f677265737320696e666f726d6174696f6e20737563682061732028312f33303029206f
+722063616e20626520656d707479>108 565.2 R 3.1<2c62>-.65 G<7574>-3.3 E
+-2.15 -.25<65762065>108 577.2 T 2.5<6e77>.25 G<68656e20656d707479207468
+6520706172656e746865736573206172652072657175697265642e>-2.5 E<4561636820
+7465737420726573756c74206d617920696e636c756465206164646974696f6e616c2028
+6d756c74696c696e6529206c6f6720696e666f726d6174696f6e20696e2074686520666f
+6c6c6f>108 594 Q<77696e6720666f726d61742e>-.25 E
+<3c6c6f672064656c696e6561746f723e>108 610.8 Q F4<54455354>2.5 E F0<2728
+3c74657374206e616d653e2927203c747261696c696e672064656c696e6561746f723e20
+2e2e2e206c6f67206d657373616765202e2e2e>2.5 E
+<3c6c6f672064656c696e6561746f723e>5 E 1.193<7768657265203c74657374206e61
+6d653e2073686f756c6420626520746865206e616d65206f662061207072656365656469
+6e67207265706f7274656420746573742c203c6c6f672064656c696e6561746f723e2069
+73206120737472696e67206f6620272a27>108 627.6 R<63686172616374657273>108
+639.6 Q F2 1.462<6174206c65617374>3.962 F F0 1.461<666f7572206368617261
+6374657273206c6f6e672028746865207265636f6d6d656e646564206c656e6774682069
+73203230292c20616e64203c747261696c696e672064656c696e6561746f723e20697320
+616e>3.962 F<6172626974726172792028756e7061727365642920737472696e672e>
+108 651.6 Q 1.12<54686520666f6c6c6f>108 668.4 R 1.121
+<77696e6720697320616e2065>-.25 F 1.121<78616d706c65206f6620612074657374
+2072756e206f757470757420776869636820636f6e7369737473206f6620666f75722074
+6573747320412c20422c20432c20616e6420442c20616e642061206c6f67>-.15 F
+<6d65737361676520666f72207468652066>108 680.4 Q
+<61696c696e67207465737420432e>-.1 E F2<4578616d706c652054>108 697.2 Q
+<6573742052756e204f7574707574204c697374696e67>-.92 E F4 -.828<5041>108
+714 S<53533a>.828 E F0 5.673<4128>5.673 G 5.673<316f>-5.673 G 5.673
+<6634>-5.673 G<29>-5.673 E F4 -.828<5041>5.673 G<53533a>.828 E F0 5.673
+<4228>5.673 G 5.673<326f>-5.673 G 5.673<6634>-5.673 G<29>-5.673 E F4
+-.666<4641>5.673 G<494c3a>.666 E F0 5.673<4328>5.673 G 5.672<336f>-5.673
+G 5.672<6634>-5.672 G 5.672<292a>-5.672 G
+<2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a>-5.672 E F4<54455354>5.672 E F0
+<274327>5.672 E F4 -.666<4641>5.672 G<494c4544>.666 E F0 .524
+<2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2054>108 726 R .524
+<657374202743272066>-.7 F .524
+<61696c6564206173206120726573756c74206f662065>-.1 F .524
+<78697420636f646520312e>-.15 F<2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a>
+5.525 E F4 -.828<5041>3.025 G<53533a>.828 E F0 3.025<4428>3.025 G 3.025
+<346f>-3.025 G<66>-3.025 E 188.72<43565320323031322d30332d3236>72 768 R
+<34>205.67 E 0 Cg EP
+%%Page: 5 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 155.07<4c4954283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<4c4954283129>157.57 E<3429>108 84
+Q/F1 9/Times-Bold at 0 SF .25<4c4954204558414d504c45205445535453>87 100.8 R
+F0<546865>108 112.8 Q/F2 10/Times-Bold at 0 SF<6c6974>2.5 E F0
+<64697374726962>2.5 E<7574696f6e20636f6e7461696e73207365>-.2 E -.15
+<7665>-.25 G<72616c2065>.15 E<78616d706c6520696d706c656d656e746174696f6e
+73206f6620746573742073756974657320696e20746865>-.15 E/F3 10
+/Times-Italic at 0 SF<4578616d706c6554>2.5 E<65737473>-.92 E F0
+<6469726563746f7279>2.5 E<2e>-.65 E/F4 10.95/Times-Bold at 0 SF
+<53454520414c534f>72 129.6 Q F3<76616c6772696e64>108 141.6 Q F0<283129>
+1.666 E F4 -.548<4155>72 158.4 S<54484f52>.548 E F0<5772697474656e206279
+2044616e69656c2044756e62617220616e64206d61696e7461696e656420627920746865>
+108 170.4 Q/F5 9/Times-Roman at 0 SF<4c4c>2.5 E<564d>-.9 E F0 -.7<5465>2.5
+G<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E<672f3e292e>-.18 E F4
+<504f4420455252>72 187.2 Q<4f5253>-.329 E F0<4865>108 199.2 Q<7921>-.15
+E F2<5468652061626f>2.5 E .2 -.1<76652064>-.1 H
+<6f63756d656e742068616420736f6d6520636f64696e6720657272>.1 E
+<6f72732c207768696368206172>-.18 E 2.5<6565>-.18 G
+<78706c61696e65642062656c6f>-2.5 E<773a>-.1 E F0
+<41726f756e64206c696e65203338393a>108 216 Q
+<3d6261636b20776974686f7574203d6f>128 228 Q -.15<7665>-.15 G<72>.15 E
+188.72<43565320323031322d30332d3236>72 768 R<35>205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llc.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llc.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llc.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llc.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,428 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 2
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic at 0 ENC0/Times-Italic RE/Times-Bold at 0 ENC0/Times-Bold RE
+/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 151.73<4c4c43283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<4c4c43283129>154.23 E/F1 10.95
+/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0<6c6c6320ad204c4c>108
+96 Q<564d2073746174696320636f6d70696c6572>-1 E F1<53594e4f50534953>72
+112.8 Q/F2 10/Times-Bold at 0 SF<6c6c63>108 124.8 Q F0<5b>2.5 E/F3 10
+/Times-Italic at 0 SF<6f7074696f6e73>A F0 2.5<5d5b>C F3<8c6c656e616d65>-2.5
+E F0<5d>A F1<4445534352495054494f4e>72 141.6 Q F0<546865>108 153.6 Q F2
+<6c6c63>3.391 E F0 .891<636f6d6d616e6420636f6d70696c6573>3.391 F/F4 9
+/Times-Roman at 0 SF<4c4c>3.391 E<564d>-.9 E F0 .891<736f7572636520696e7075
+747320696e746f20617373656d626c79206c616e677561676520666f7220612073706563
+698c6564206172636869746563747572652e>3.391 F<546865>5.89 E 1.159<617373
+656d626c79206c616e6775616765206f75747075742063616e207468656e206265207061
+73736564207468726f7567682061206e617469>108 165.6 R 1.459 -.15<76652061>
+-.25 H 1.159<7373656d626c657220616e64206c696e6b>.15 F 1.159
+<657220746f2067656e65726174652061206e617469>-.1 F -.15<7665>-.25 G -.15
+<657865>108 177.6 S<63757461626c652e>.15 E 1.212<5468652063686f69636520
+6f662061726368697465637475726520666f7220746865206f757470757420617373656d
+626c7920636f6465206973206175746f6d61746963616c6c792064657465726d696e6564
+2066726f6d2074686520696e707574208c6c652c>108 194.4 R
+<756e6c65737320746865>108 206.4 Q F2<ad6d6172>2.5 E<6368>-.18 E F0
+<6f7074696f6e206973207573656420746f206f>2.5 E -.15<7665>-.15 G
+<72726964652074686520646566>.15 E<61756c742e>-.1 E F1<4f5054494f4e53>72
+223.2 Q F0<4966>108 235.2 Q F3<8c6c656e616d65>2.56 E F0 .06
+<697320ad206f72206f6d69747465642c>2.56 F F2<6c6c63>2.56 E F0 .06
+<72656164732066726f6d207374616e6461726420696e7075742e>2.56 F .06
+<4f74686572776973652c2069742077696c6c2066726f6d>5.06 F F3
+<8c6c656e616d65>2.56 E F0 5.06<2e49>C .06
+<6e707574732063616e20626520696e>-5.06 F<65697468657220746865>108 247.2 Q
+F4<4c4c>2.5 E<564d>-.9 E F0<617373656d626c79206c616e677561676520666f726d
+617420282e6c6c29206f7220746865>2.5 E F4<4c4c>2.5 E<564d>-.9 E F0
+<626974636f646520666f726d617420282e6263292e>2.5 E 1.246<496620746865>108
+264 R F2<ad6f>3.746 E F0 1.246
+<6f7074696f6e206973206f6d69747465642c207468656e>3.746 F F2<6c6c63>3.746
+E F0 1.245<77696c6c2073656e6420697473206f757470757420746f207374616e6461
+7264206f75747075742069662074686520696e7075742069732066726f6d207374616e64
+617264>3.746 F 2.5<696e7075742e204966>108 276 R<746865>2.5 E F2<ad6f>2.5
+E F0<6f7074696f6e2073706563698c657320ad2c207468656e20746865206f75747075
+742077696c6c20616c736f2062652073656e7420746f207374616e64617264206f757470
+75742e>2.5 E .086<4966206e6f>108 292.8 R F2<ad6f>2.586 E F0 .086<6f7074
+696f6e2069732073706563698c656420616e6420616e20696e707574208c6c65206f7468
+6572207468616e20ad2069732073706563698c65642c207468656e>2.586 F F2
+<6c6c63>2.586 E F0 .087
+<6372656174657320746865206f7574707574208c6c656e616d65206279>2.586 F
+<74616b696e672074686520696e707574208c6c656e616d652c2072656d6f>108 304.8
+Q<76696e6720616e>-.15 E 2.5<7965>-.15 G<78697374696e67>-2.65 E F3
+<2e6263>2.5 E F0 -.15<6578>2.5 G
+<74656e73696f6e2c20616e6420616464696e672061>.15 E F3<2e73>2.5 E F0
+<737566>2.5 E<8c782e>-.25 E<4f74686572>108 321.6 Q F2<6c6c63>2.5 E F0
+<6f7074696f6e732061726520617320666f6c6c6f>2.5 E<77733a>-.25 E F2
+<456e642d75736572204f7074696f6e73>87 338.4 Q<ad68656c70>108 350.4 Q F0<
+5072696e7420612073756d6d617279206f6620636f6d6d616e64206c696e65206f707469
+6f6e732e>128 362.4 Q F2<ad4f>108 379.2 Q F0<3d>A F3<75696e74>A F0 1.323
+<47656e657261746520636f646520617420646966>128 391.2 R 1.322
+<666572656e74206f7074696d697a6174696f6e206c65>-.25 F -.15<7665>-.25 G
+1.322<6c732e20546865736520636f72726573706f6e6420746f20746865>.15 F F3
+<ad4f30>3.822 E F0<2c>A F3<ad4f31>3.822 E F0<2c>A F3<ad4f32>3.822 E F0
+3.822<2c61>C<6e64>-3.822 E F3<ad4f33>3.822 E F0
+<6f7074696d697a6174696f6e206c65>128 403.2 Q -.15<7665>-.25 G
+<6c732075736564206279>.15 E F2<6c6c766d2d676363>2.5 E F0<616e64>2.5 E F2
+<636c616e67>2.5 E F0<2e>A F2<ad6d747269706c65>108 420 Q F0<3d>A F3
+<746172>A -.1<6765>-.37 G 2.5<7474>.1 G<7269706c65>-2.5 E F0<4f76>128
+432 Q<6572726964652074686520746172>-.15 E<67657420747269706c652073706563
+698c656420696e2074686520696e707574208c6c65207769746820746865207370656369
+8c656420737472696e672e>-.18 E F2<ad6d6172>108 448.8 Q<6368>-.18 E F0<3d>
+A F3<6172>A -.15<6368>-.37 G F0 .158<5370656369667920746865206172636869
+7465637475726520666f7220776869636820746f2067656e657261746520617373656d62
+6c79>128 460.8 R 2.659<2c6f>-.65 G -.15<7665>-2.809 G .159
+<72726964696e672074686520746172>.15 F .159
+<67657420656e636f64656420696e2074686520696e707574208c6c652e>-.18 F .582
+<53656520746865206f7574707574206f66>128 472.8 R F2 .582
+<6c6c6320ad68656c70>3.082 F F0 .582<666f722061206c697374206f662076>3.082
+F .582<616c696420617263686974656374757265732e>-.25 F .581<427920646566>
+5.581 F .581
+<61756c74207468697320697320696e6665727265642066726f6d2074686520746172>
+-.1 F<676574>-.18 E<747269706c65206f72206175746f646574656374656420746f20
+7468652063757272656e74206172636869746563747572652e>128 484.8 Q F2
+<ad6d637075>108 501.6 Q F0<3d>A F3<6370756e616d65>A F0 .178<537065636966
+7920612073706563698c63206368697020696e207468652063757272656e742061726368
+697465637475726520746f2067656e657261746520636f646520666f72>128 513.6 R
+5.178<2e42>-.55 G 2.678<7964>-5.178 G<6566>-2.678 E .179
+<61756c74207468697320697320696e6665727265642066726f6d>-.1 F .196
+<74686520746172>128 525.6 R .196<67657420747269706c6520616e64206175746f
+646574656374656420746f207468652063757272656e7420617263686974656374757265
+2e>-.18 F -.15<466f>5.196 G 2.696<7261>.15 G .195<6c697374206f662061>
+-.001 F -.25<7661>-.2 G .195<696c61626c6520435055732c207573653a>.25 F F2
+<6c6c766d2d6173>2.695 E 2.5<3c2f>128 537.6 S<6465>-2.5 E
+<762f6e756c6c207c206c6c6320ad6d6172>-.15 E
+<63683d78797a20ad6d6370753d68656c70>-.18 E<ad6d61747472>108 554.4 Q F0
+<3d>A F3<61312c2b61322cad61332c2e2e2e>A F0<4f76>128 566.4 Q .971
+<657272696465206f7220636f6e74726f6c2073706563698c6320617474726962>-.15 F
+.971<75746573206f662074686520746172>-.2 F .971
+<6765742c20737563682061732077686574686572>-.18 F F4<53494d44>3.472 E F0
+.972<6f7065726174696f6e732061726520656e61626c6564206f72>3.472 F 2.71
+<6e6f742e20546865>128 578.4 R<646566>2.71 E .21
+<61756c7420736574206f6620617474726962>-.1 F .209
+<7574657320697320736574206279207468652063757272656e74>-.2 F F4<435055>
+2.709 E F0 5.209<2e46>C .209<6f722061206c697374206f662061>-5.359 F -.25
+<7661>-.2 G .209<696c61626c6520617474726962>.25 F .209
+<757465732c207573653a>-.2 F F2<6c6c766d2d>2.709 E<6173203c202f6465>128
+590.4 Q<762f6e756c6c207c206c6c6320ad6d6172>-.15 E
+<63683d78797a20ad6d617474723d68656c70>-.18 E
+<adad64697361626c65ad6670ad656c696d>108 607.2 Q F0<44697361626c65206672
+616d6520706f696e74657220656c696d696e6174696f6e206f7074696d697a6174696f6e
+2e>128 619.2 Q F2<adad64697361626c65ad657863657373ad6670ad7072>108 636 Q
+<65636973696f6e>-.18 E F0 .632<44697361626c65206f7074696d697a6174696f6e
+732074686174206d61792070726f647563652065>128 648 R .632
+<786365737320707265636973696f6e20666f72208d6f6174696e6720706f696e742e>
+-.15 F .632<4e6f746520746861742074686973206f7074696f6e2063616e>5.632 F
+<6472616d61746963616c6c7920736c6f>128 660 Q 2.5<7764>-.25 G -.25<6f77>
+-2.5 G 2.5<6e63>.25 G
+<6f6465206f6e20736f6d652073797374656d732028652e672e20583836292e>-2.5 E
+F2<adad656e61626c65ad6e6fad696e6673ad6670ad6d617468>108 676.8 Q F0<456e
+61626c65206f7074696d697a6174696f6e73207468617420617373756d65206e6f20496e
+662076>128 688.8 Q<616c7565732e>-.25 E F2
+<adad656e61626c65ad6e6fad6e616e73ad6670ad6d617468>108 705.6 Q F0
+<456e61626c65206f7074696d697a6174696f6e73207468617420617373756d65206e6f>
+128 717.6 Q F4 -.315<4e41>2.5 G<4e>.315 E F0 -.25<7661>2.5 G<6c7565732e>
+.25 E 188.72<43565320323031322d30332d3239>72 768 R<31>205.67 E 0 Cg EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 151.73<4c4c43283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<4c4c43283129>154.23 E/F1 10
+/Times-Bold at 0 SF<adad656e61626c65ad756e73616665ad6670ad6d617468>108 84 Q
+F0 .341<456e61626c65206f7074696d697a6174696f6e732074686174206d616b>128
+96 R 2.841<6575>-.1 G .341
+<6e7361666520617373756d7074696f6e732061626f7574>-2.841 F/F2 9
+/Times-Roman at 0 SF<49454545>2.84 E F0 .34<6d6174682028652e672e2074686174
+206164646974696f6e206973206173736f6369617469>2.84 F -.15<7665>-.25 G<29>
+.15 E 1.014<6f72206d6179206e6f742077>128 108 R 1.014
+<6f726b20666f7220616c6c20696e7075742072616e6765732e>-.1 F 1.014
+<5468657365206f7074696d697a6174696f6e7320616c6c6f>6.014 F 3.514<7774>
+-.25 G 1.014<686520636f64652067656e657261746f7220746f206d616b>-3.514 F
+3.515<6575>-.1 G 1.015<7365206f66>-3.515 F
+<736f6d6520696e737472756374696f6e732077686963682077>128 120 Q<6f756c6420
+6f7468657277697365206e6f7420626520757361626c6520287375636820617320667369
+6e206f6e20583836292e>-.1 E F1<adad656e61626c65ad636f7272>108 136.8 Q
+<656374ad6568ad737570706f7274>-.18 E F0 .327<496e73747275637420746865>
+128 148.8 R F1<6c6f>2.827 E<776572696e>-.1 E -.1<766f>-.4 G -.1<6b65>.1
+G F0 .327
+<7061737320746f20696e7365727420636f646520666f7220636f72726563742065>
+2.927 F .326<7863657074696f6e2068616e646c696e6720737570706f72742e>-.15 F
+.326<546869732069732065>5.326 F<7870656e7369>-.15 E -.15<7665>-.25 G
+<616e6420697320627920646566>128 160.8 Q
+<61756c74206f6d697474656420666f72206566>-.1 E<8c6369656e63>-.25 E -.65
+<792e>-.15 G F1<adad7374617473>108 177.6 Q F0<5072696e742073746174697374
+696373207265636f7264656420627920636f64652d67656e65726174696f6e2070617373
+65732e>128 189.6 Q F1<adad74696d65ad706173736573>108 206.4 Q F0<5265636f
+72642074686520616d6f756e74206f662074696d65206e656564656420666f7220656163
+68207061737320616e64207072696e742061207265706f727420746f207374616e646172
+64206572726f72>128 218.4 Q<2e>-.55 E F1<adad6c6f6164>108 235.2 Q F0<3d>A
+/F3 10/Times-Italic at 0 SF<64736f5f70617468>A F0 .723
+<44796e616d6963616c6c79206c6f6164>128 247.2 R F3<64736f5f70617468>3.223
+E F0 .724<2861207061746820746f20612064796e616d6963616c6c7920736861726564
+206f626a65637429207468617420696d706c656d656e747320616e>3.223 F F2<4c4c>
+3.224 E<564d>-.9 E F0<746172>3.224 E<6765742e>-.18 E .398
+<546869732077696c6c207065726d69742074686520746172>128 259.2 R .398
+<676574206e616d6520746f2062652075736564207769746820746865>-.18 F F1
+<ad6d6172>2.898 E<6368>-.18 E F0 .398<6f7074696f6e20736f207468617420636f
+64652063616e2062652067656e65726174656420666f72>2.898 F<7468617420746172>
+128 271.2 Q<6765742e>-.18 E F1 -.92<5475>87 288 S
+<6e696e672f436f6e8c6775726174696f6e204f7074696f6e73>.92 E
+<adad7072696e74ad6d616368696e65696e73747273>108 300 Q F0<5072696e742067
+656e657261746564206d616368696e6520636f6465206265747765656e20636f6d70696c
+6174696f6e20706861736573202875736566756c20666f7220646562>128 312 Q
+<756767696e67292e>-.2 E F1<adad72>108 328.8 Q<6567616c6c6f63>-.18 E F0
+<3d>A F3<616c6c6f6361746f72>A F0<5370656369667920746865207265>128 340.8
+Q<67697374657220616c6c6f6361746f7220746f207573652e2054686520646566>-.15
+E<61756c74>-.1 E F3<616c6c6f6361746f72>2.5 E F0<6973>2.5 E F3
+<6c6f63616c>2.5 E F0 5<2e56>C<616c6964207265>-6.11 E
+<67697374657220616c6c6f6361746f7273206172653a>-.15 E F3<73696d706c65>128
+357.6 Q F0 -1.11<5665>148 369.6 S<72792073696d706c652060>1.11 E<60616c>
+-.74 E -.1<7761>-.1 G<7973207370696c6c27>.1 E 2.5<2772>-.74 G -.15<6567>
+-2.5 G<697374657220616c6c6f6361746f72>.15 E F3<6c6f63616c>128 386.4 Q F0
+<4c6f63616c207265>148 398.4 Q<67697374657220616c6c6f6361746f72>-.15 E F3
+<6c696e656172>128 415.2 Q<7363616e>-.1 E F0
+<4c696e656172207363616e20676c6f62616c207265>148 427.2 Q
+<67697374657220616c6c6f6361746f72>-.15 E F3<69746572>128 444 Q
+<61746976657363616e>-.15 E F0<49746572617469>148 456 Q .3 -.15<76652073>
+-.25 H<63616e20676c6f62616c207265>.15 E
+<67697374657220616c6c6f6361746f72>-.15 E F1<adad7370696c6c6572>108 472.8
+Q F0<3d>A F3<7370696c6c6572>A F0 .797
+<5370656369667920746865207370696c6c657220746f2075736520666f72207265>128
+484.8 R .798
+<67697374657220616c6c6f6361746f7273207468617420737570706f72742069742e>
+-.15 F .798<43757272656e746c792074686973206f7074696f6e206973207573656420
+6f6e6c79206279>5.798 F<746865206c696e656172207363616e207265>128 496.8 Q
+<67697374657220616c6c6f6361746f72>-.15 E 2.5<2e54>-.55 G<686520646566>
+-2.5 E<61756c74>-.1 E F3<7370696c6c6572>2.5 E F0<6973>2.5 E F3
+<6c6f63616c>2.5 E F0 5<2e56>C<616c6964207370696c6c657273206172653a>-6.11
+E F3<73696d706c65>128 513.6 Q F0<53696d706c65207370696c6c6572>148 525.6
+Q F3<6c6f63616c>128 542.4 Q F0<4c6f63616c207370696c6c6572>148 554.4 Q F1
+<496e74656c204941ad3332ad73706563698c63204f7074696f6e73>87 571.2 Q
+<adad783836ad61736dad73796e7461783d6174747c696e74656c>108 583.2 Q F0<53
+706563696679207768657468657220746f20656d697420617373656d626c7920636f6465
+20696e>128 595.2 Q F2 -.999<4154>2.5 G<2654>.999 E F0
+<73796e746178202874686520646566>2.5 E
+<61756c7429206f7220696e74656c2073796e7461782e>-.1 E/F4 10.95
+/Times-Bold at 0 SF<45584954205354>72 612 Q -1.04<4154>-.986 G<5553>1.04 E
+F0<4966>108 624 Q F1<6c6c63>2.5 E F0
+<73756363656564732c2069742077696c6c2065>2.5 E<786974207769746820302e>
+-.15 E<4f74686572776973652c20696620616e206572726f72206f63637572732c2069
+742077696c6c2065>5 E<78697420776974682061206e6f6e2d7a65726f2076>-.15 E
+<616c75652e>-.25 E F4<53454520414c534f>72 640.8 Q F0<6c6c69>108 652.8 Q
+F4 -.548<4155>72 669.6 S<54484f5253>.548 E F0
+<4d61696e7461696e656420627920746865>108 681.6 Q F2<4c4c>2.5 E<564d>-.9 E
+F0 -.7<5465>2.5 G<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E
+<672f3e292e>-.18 E 188.72<43565320323031322d30332d3239>72 768 R<32>
+205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/lli.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/lli.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/lli.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/lli.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,450 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Courier
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 3
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Courier
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Courier at 0 ENC0/Courier RE/Times-Italic at 0 ENC0/Times-Italic RE
+/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 155.07<4c4c49283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<4c4c49283129>157.57 E/F1 10.95
+/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0
+<6c6c6920ad206469726563746c792065>108 96 Q -.15<7865>-.15 G
+<637574652070726f6772616d732066726f6d204c4c>.15 E<564d20626974636f6465>
+-1 E F1<53594e4f50534953>72 112.8 Q/F2 10/Times-Bold at 0 SF<6c6c69>108
+124.8 Q F0<5b>2.5 E/F3 10/Times-Italic at 0 SF<6f7074696f6e73>A F0 2.5
+<5d5b>C F3<8c6c656e616d65>-2.5 E F0 2.5<5d5b>C F3<7072>-2.5 E -.1<6f67>
+-.45 G -.15<7261>.1 G 2.5<6d61>.15 G -.37<7267>-2.5 G<73>.37 E F0<5d>A
+F1<4445534352495054494f4e>72 141.6 Q F2<6c6c69>108 153.6 Q F0 1.246
+<6469726563746c792065>3.746 F -.15<7865>-.15 G 1.246
+<63757465732070726f6772616d7320696e>.15 F/F4 9/Times-Roman at 0 SF<4c4c>
+3.746 E<564d>-.9 E F0 1.246<626974636f646520666f726d61742e>3.746 F 1.246
+<49742074616b>6.246 F 1.246<657320612070726f6772616d20696e>-.1 F F4
+<4c4c>3.746 E<564d>-.9 E F0 1.246<626974636f646520666f726d617420616e64>
+3.746 F -.15<657865>108 165.6 S .141<6375746573206974207573696e67206120
+6a7573742d696e2d74696d6520636f6d70696c6572>.15 F 2.641<2c69>-.4 G 2.641
+<666f>-2.641 G .141<6e652069732061>-2.641 F -.25<7661>-.2 G .141<696c61
+626c6520666f72207468652063757272656e74206172636869746563747572652c206f72
+20616e20696e746572707265746572>.25 F<2e>-.55 E F2<6c6c69>5.142 E F0
+<74616b>108 177.6 Q .506<657320616c6c206f66207468652073616d6520636f6465
+2067656e657261746f72206f7074696f6e73206173206c6c632c2062>-.1 F .505
+<757420746865>-.2 F 3.005<7961>-.15 G .505<7265206f6e6c79206566>-3.005 F
+<6665637469>-.25 E .805 -.15<76652077>-.25 H<68656e>.15 E F2<6c6c69>
+3.005 E F0 .505<6973207573696e6720746865206a7573742d696e2d>3.005 F
+<74696d6520636f6d70696c6572>108 189.6 Q<2e>-.55 E<4966>108 206.4 Q F3
+<8c6c656e616d65>2.5 E F0<6973206e6f742073706563698c65642c207468656e>2.5
+E F2<6c6c69>2.5 E F0<726561647320746865>2.5 E F4<4c4c>2.5 E<564d>-.9 E
+F0<626974636f646520666f72207468652070726f6772616d2066726f6d207374616e64
+61726420696e7075742e>2.5 E<546865206f7074696f6e616c>108 223.2 Q F3<6172>
+2.5 E<6773>-.37 E F0<73706563698c6564206f6e2074686520636f6d6d616e64206c
+696e65206172652070617373656420746f207468652070726f6772616d206173206172>
+2.5 E<67756d656e74732e>-.18 E F1<47454e4552414c204f5054494f4e53>72 240 Q
+F2<ad66616b>108 252 Q<65ad6172>-.1 E<677630>-.1 E F0<3d>A F3 -.2<6578>C
+<6563757461626c65>.2 E F0<4f76>128 264 Q<65727269646520746865>-.15 E/F5
+10/Courier at 0 SF<617267765b305d>2.5 E F0 -.25<7661>2.5 G
+<6c75652070617373656420696e746f207468652065>.25 E -.15<7865>-.15 G
+<637574696e672070726f6772616d2e>.15 E F2<ad66>108 280.8 Q<6f72>-.25 E
+<6365ad696e746572>-.18 E<7072>-.1 E<65746572>-.18 E F0<3d>A F3
+<7b66616c7365>A<2c747275657d>-.1 E F0 1.988<49662073657420746f2074727565
+2c207573652074686520696e7465727072657465722065>128 292.8 R -.15<7665>
+-.25 G 4.489<6e69>.15 G 4.489<66616a>-4.489 G 1.989
+<7573742d696e2d74696d6520636f6d70696c65722069732061>-4.489 F -.25<7661>
+-.2 G 1.989<696c61626c6520666f722074686973206172636869746563747572652e>
+.25 F<446566>128 304.8 Q<61756c747320746f2066>-.1 E<616c73652e>-.1 E F2
+<ad68656c70>108 321.6 Q F0<5072696e7420612073756d6d617279206f6620636f6d
+6d616e64206c696e65206f7074696f6e732e>128 333.6 Q F2<ad6c6f6164>108 350.4
+Q F0<3d>A F3<707567696e8c6c656e616d65>A F0<436175736573>128 362.4 Q F2
+<6c6c69>2.5 E F0<746f206c6f61642074686520706c7567696e202873686172656420
+6f626a65637429206e616d6564>2.5 E F3<706c7567696e8c6c656e616d65>2.5 E F0
+<616e642075736520697420666f72206f7074696d697a6174696f6e2e>2.5 E F2
+<ad7374617473>108 379.2 Q F0 .422<5072696e742073746174697374696373206672
+6f6d2074686520636f64652d67656e65726174696f6e207061737365732e205468697320
+6973206f6e6c79206d65616e696e6766756c20666f7220746865206a7573742d696e2d74
+696d6520636f6d70696c6572>128 391.2 R<2c>-.4 E<61742070726573656e742e>128
+403.2 Q F2<ad74696d65ad706173736573>108 420 Q F0<5265636f72642074686520
+616d6f756e74206f662074696d65206e656564656420666f72206561636820636f64652d
+67656e65726174696f6e207061737320616e64207072696e7420697420746f207374616e
+64617264206572726f72>128 432 Q<2e>-.55 E F2<ad76>108 448.8 Q
+<657273696f6e>-.1 E F0<5072696e74206f7574207468652076>128 460.8 Q
+<657273696f6e206f66>-.15 E F2<6c6c69>2.5 E F0<616e642065>2.5 E
+<78697420776974686f757420646f696e6720616e>-.15 E
+<797468696e6720656c73652e>-.15 E F1 -.986<5441>72 477.6 S
+<52474554204f5054494f4e53>.986 E F2<ad6d747269706c65>108 489.6 Q F0<3d>A
+F3<746172>A -.1<6765>-.37 G 2.5<7474>.1 G<7269706c65>-2.5 E F0<4f76>128
+501.6 Q .09<6572726964652074686520746172>-.15 F .09<67657420747269706c65
+2073706563698c656420696e2074686520696e70757420626974636f6465208c6c652077
+697468207468652073706563698c656420737472696e672e>-.18 F .09
+<54686973206d617920726573756c7420696e>5.09 F 2.5<6163>128 513.6 S<726173
+6820696620796f75207069636b20616e2061726368697465637475726520776869636820
+6973206e6f7420636f6d70617469626c652077697468207468652063757272656e742073
+797374656d2e>-2.5 E F2<ad6d6172>108 530.4 Q<6368>-.18 E F0<3d>A F3<6172>
+A -.15<6368>-.37 G F0 .806<53706563696679207468652061726368697465637475
+726520666f7220776869636820746f2067656e657261746520617373656d626c79>128
+542.4 R 3.306<2c6f>-.65 G -.15<7665>-3.456 G .806
+<72726964696e672074686520746172>.15 F .805
+<67657420656e636f64656420696e2074686520626974636f6465>-.18 F 3.334
+<8c6c652e20536565>128 554.4 R .834<746865206f7574707574206f66>3.334 F F2
+.835<6c6c6320ad68656c70>3.334 F F0 .835<666f722061206c697374206f662076>
+3.335 F .835<616c696420617263686974656374757265732e>-.25 F .835
+<427920646566>5.835 F .835
+<61756c74207468697320697320696e6665727265642066726f6d20746865>-.1 F
+<746172>128 566.4 Q<67657420747269706c65206f72206175746f6465746563746564
+20746f207468652063757272656e74206172636869746563747572652e>-.18 E F2
+<ad6d637075>108 583.2 Q F0<3d>A F3<6370756e616d65>A F0 .178<537065636966
+7920612073706563698c63206368697020696e207468652063757272656e742061726368
+697465637475726520746f2067656e657261746520636f646520666f72>128 595.2 R
+5.178<2e42>-.55 G 2.678<7964>-5.178 G<6566>-2.678 E .178
+<61756c74207468697320697320696e6665727265642066726f6d>-.1 F .195
+<74686520746172>128 607.2 R .195<67657420747269706c6520616e64206175746f
+646574656374656420746f207468652063757272656e7420617263686974656374757265
+2e>-.18 F -.15<466f>5.196 G 2.696<72616c>.15 G .196<697374206f662061>
+-2.696 F -.25<7661>-.2 G .196<696c61626c6520435055732c207573653a>.25 F
+F2<6c6c766d2d6173>2.696 E 2.5<3c2f>128 619.2 S<6465>-2.5 E
+<762f6e756c6c207c206c6c6320ad6d6172>-.15 E
+<63683d78797a20ad6d6370753d68656c70>-.18 E<ad6d61747472>108 636 Q F0<3d>
+A F3<61312c2b61322cad61332c2e2e2e>A F0<4f76>128 648 Q .972
+<657272696465206f7220636f6e74726f6c2073706563698c6320617474726962>-.15 F
+.971<75746573206f662074686520746172>-.2 F .971
+<6765742c20737563682061732077686574686572>-.18 F F4<53494d44>3.471 E F0
+.971<6f7065726174696f6e732061726520656e61626c6564206f72>3.471 F 2.709
+<6e6f742e20546865>128 660 R<646566>2.709 E .209
+<61756c7420736574206f6620617474726962>-.1 F .209
+<7574657320697320736574206279207468652063757272656e74>-.2 F F4<435055>
+2.709 E F0 5.209<2e46>C .209<6f722061206c697374206f662061>-5.359 F -.25
+<7661>-.2 G .21<696c61626c6520617474726962>.25 F .21
+<757465732c207573653a>-.2 F F2<6c6c766d2d>2.71 E<6173203c202f6465>128
+672 Q<762f6e756c6c207c206c6c6320ad6d6172>-.15 E
+<63683d78797a20ad6d617474723d68656c70>-.18 E F1<464c4f>72 688.8 Q -1.04
+<4154>-.438 G<494e4720504f494e54204f5054494f4e53>1.04 E F2
+<ad64697361626c65ad657863657373ad6670ad7072>108 700.8 Q<65636973696f6e>
+-.18 E F0<44697361626c65206f7074696d697a6174696f6e732074686174206d617920
+696e637265617365208d6f6174696e6720706f696e7420707265636973696f6e2e>128
+712.8 Q 188.72<43565320323031312d30342d3038>72 768 R<31>205.67 E 0 Cg EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 155.07<4c4c49283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<4c4c49283129>157.57 E/F1 10
+/Times-Bold at 0 SF<ad656e61626c65ad6e6fad696e6673ad6670ad6d617468>108 84 Q
+F0<456e61626c65206f7074696d697a6174696f6e73207468617420617373756d65206e
+6f20496e662076>128 96 Q<616c7565732e>-.25 E F1
+<ad656e61626c65ad6e6fad6e616e73ad6670ad6d617468>108 112.8 Q F0
+<456e61626c65206f7074696d697a6174696f6e73207468617420617373756d65206e6f>
+128 124.8 Q/F2 9/Times-Roman at 0 SF -.315<4e41>2.5 G<4e>.315 E F0 -.25
+<7661>2.5 G<6c7565732e>.25 E F1
+<ad656e61626c65ad756e73616665ad6670ad6d617468>108 141.6 Q F0
+<436175736573>128 153.6 Q F1<6c6c69>2.5 E F0<746f20656e61626c65206f7074
+696d697a6174696f6e732074686174206d6179206465637265617365208d6f6174696e67
+20706f696e7420707265636973696f6e2e>2.5 E F1<ad736f6674ad8d6f6174>108
+170.4 Q F0<436175736573>128 182.4 Q F1<6c6c69>2.5 E F0
+<746f2067656e657261746520736f667477>2.5 E<617265208d6f6174696e6720706f69
+6e74206c6962726172792063616c6c7320696e7374656164206f662065717569>-.1 E
+-.25<7661>-.25 G<6c656e74206861726477>.25 E
+<61726520696e737472756374696f6e732e>-.1 E/F3 10.95/Times-Bold at 0 SF
+<434f44452047454e455241>72 199.2 Q<54494f4e204f5054494f4e53>-1.04 E F1
+<ad636f6465ad6d6f64656c>108 211.2 Q F0<3d>A/F4 10/Times-Italic at 0 SF
+<6d6f64656c>A F0<43686f6f73652074686520636f6465206d6f64656c2066726f6d3a>
+128 223.2 Q/F5 10/Courier at 0 SF
+<64656661756c743a205461726765742064656661756c7420636f6465206d6f64656c>
+152 241.2 Q<736d616c6c3a20536d616c6c20636f6465206d6f64656c>152 253.2 Q
+<6b65726e656c3a204b65726e656c20636f6465206d6f64656c>152 265.2 Q
+<6d656469756d3a204d656469756d20636f6465206d6f64656c>152 277.2 Q
+<6c617267653a204c6172676520636f6465206d6f64656c>152 289.2 Q F1
+<ad64697361626c65ad706f7374ad5241ad7363686564756c6572>108 306 Q F0
+<44697361626c65207363686564756c696e67206166746572207265>128 318 Q
+<67697374657220616c6c6f636174696f6e2e>-.15 E F1
+<ad64697361626c65ad7370696c6cad667573696e67>108 334.8 Q F0<44697361626c
+6520667573696e67206f66207370696c6c20636f646520696e746f20696e737472756374
+696f6e732e>128 346.8 Q F1<ad656e61626c65ad636f7272>108 363.6 Q
+<656374ad6568ad737570706f7274>-.18 E F0<4d616b>128 375.6 Q 2.5<6574>-.1
+G<686520ad6c6f>-2.5 E<776572696e>-.25 E -.2<766f>-.4 G .2 -.1<6b652070>
+.2 H<61737320696e736572742065>.1 E<7870656e7369>-.15 E -.15<7665>-.25 G
+2.5<2c62>.15 G<757420636f72726563742c>-2.7 E F2<4548>2.5 E F0
+<636f64652e>2.5 E F1<ad6a6974ad656e61626c65ad6568>108 392.4 Q F0<457863
+657074696f6e2068616e646c696e672073686f756c6420626520656e61626c656420696e
+20746865206a7573742d696e2d74696d6520636f6d70696c6572>128 404.4 Q<2e>-.55
+E F1<ad6a6f696ead6c69>108 421.2 Q -.1<7665>-.1 G<696e746572>.1 E -.1
+<7661>-.1 G<6c73>.1 E F0<436f616c6573636520636f706965732028646566>128
+433.2 Q<61756c743d74727565292e>-.1 E F1<ad6e6f7a6572>108 450 Q
+<6fad696e697469616c697a6564ad696ead627373>-.18 E F0<446f6e27>2.5 E 2.5
+<7470>-.18 G<6c616365207a65726f2d696e697469616c697a65642073796d626f6c73
+20696e746f20746865>-2.5 E F2<425353>2.5 E F0<73656374696f6e2e>2.5 E F1
+<ad7072>108 462 Q<65ad5241ad7363686564>-.18 E F0<3d>A F4<7363>A
+<686564756c6572>-.15 E F0
+<496e737472756374696f6e207363686564756c6572732061>128 474 Q -.25<7661>
+-.2 G<696c61626c6520286265666f7265207265>.25 E
+<67697374657220616c6c6f636174696f6e293a>-.15 E F5<3d64656661756c743a2042
+657374207363686564756c657220666f722074686520746172676574>152 492 Q<3d6e
+6f6e653a204e6f207363686564756c696e673a2062726561647468206669727374207365
+7175656e63696e67>152 504 Q<3d73696d706c653a2053696d706c652074776f207061
+7373207363686564756c696e673a206d696e696d697a6520637269746963616c20706174
+6820616e64206d6178696d697a652070726f636573736f72207574696c697a6174696f6e>
+152 516 Q<3d73696d706c65ad6e6f6974696e3a2053696d706c652074776f2070617373
+207363686564756c696e673a2053616d652061732073696d706c65206578636570742075
+73696e672067656e65726963206c6174656e6379>152 528 Q<3d6c697374ad62757272
+3a20426f74746f6dad757020726567697374657220726564756374696f6e206c69737420
+7363686564756c696e67>152 540 Q<3d6c697374ad746472723a20546f70ad646f776e
+20726567697374657220726564756374696f6e206c697374207363686564756c696e67>
+152 552 Q<3d6c697374ad74643a20546f70ad646f776e206c697374207363686564756c
+657220ad7072696e74ad6d616368696e65696e7374727320ad205072696e742067656e65
+7261746564206d616368696e6520636f6465>152 564 Q F1<ad72>108 580.8 Q
+<6567616c6c6f63>-.18 E F0<3d>A F4<616c6c6f6361746f72>A F0<5265>128 592.8
+Q<67697374657220616c6c6f6361746f7220746f207573652028646566>-.15 E
+<61756c743d6c696e6561727363616e29>-.1 E F5<3d626967626c6f636b3a20426967
+ad626c6f636b20726567697374657220616c6c6f6361746f72>152 610.8 Q<3d6c696e
+6561727363616e3a206c696e656172207363616e20726567697374657220616c6c6f6361
+746f72203d6c6f63616c20ad>152 622.8 Q
+<6c6f63616c20726567697374657220616c6c6f6361746f72>18 E
+<3d73696d706c653a2073696d706c6520726567697374657220616c6c6f6361746f72>
+152 634.8 Q F1<ad72>108 651.6 Q<656c6f636174696f6ead6d6f64656c>-.18 E F0
+<3d>A F4<6d6f64656c>A F0
+<43686f6f73652072656c6f636174696f6e206d6f64656c2066726f6d3a>128 663.6 Q
+F5<3d64656661756c743a205461726765742064656661756c742072656c6f636174696f
+6e206d6f64656c>152 681.6 Q<3d7374617469633a204e6f6ead72656c6f6361746162
+6c6520636f6465203d70696320ad>152 693.6 Q<46756c6c792072656c6f6361746162
+6c652c20706f736974696f6e20696e646570656e64656e7420636f6465>18 E<3d64796e
+616d6963ad6e6fad7069633a2052656c6f63617461626c652065787465726e616c207265
+666572656e6365732c206e6f6ead72656c6f63617461626c6520636f6465>152 705.6 Q
+F0 188.72<43565320323031312d30342d3038>72 768 R<32>205.67 E 0 Cg EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 155.07<4c4c49283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<4c4c49283129>157.57 E/F1 10
+/Times-Bold at 0 SF<ad7370696c6c6572>108 84 Q F0
+<5370696c6c657220746f207573652028646566>128 96 Q<61756c743d6c6f63616c29>
+-.1 E/F2 10/Courier at 0 SF<3d73696d706c653a2073696d706c65207370696c6c6572>
+152 114 Q<3d6c6f63616c3a206c6f63616c207370696c6c6572>152 126 Q F1
+<ad783836ad61736dad73796e746178>108 142.8 Q F0<3d>A/F3 10/Times-Italic at 0
+SF<73796e746178>A F0<43686f6f7365207374796c65206f6620636f646520746f2065
+6d69742066726f6d20583836206261636b>128 154.8 Q<656e643a>-.1 E F2
+<3d6174743a20456d69742041542654ad7374796c6520617373656d626c79>152 172.8
+Q<3d696e74656c3a20456d697420496e74656cad7374796c6520617373656d626c79>152
+184.8 Q/F4 10.95/Times-Bold at 0 SF<45584954205354>72 201.6 Q -1.04<4154>
+-.986 G<5553>1.04 E F0<4966>108 213.6 Q F1<6c6c69>2.964 E F0 -.1<6661>
+2.963 G .463
+<696c7320746f206c6f6164207468652070726f6772616d2c2069742077696c6c2065>.1
+F .463<786974207769746820616e2065>-.15 F .463
+<78697420636f6465206f6620312e>-.15 F .463
+<4f74686572776973652c2069742077696c6c2072657475726e207468652065>5.463 F
+.463<78697420636f6465206f66>-.15 F<7468652070726f6772616d2069742065>108
+225.6 Q -.15<7865>-.15 G<63757465732e>.15 E F4<53454520414c534f>72 242.4
+Q F0<6c6c63>108 254.4 Q F4 -.548<4155>72 271.2 S<54484f52>.548 E F0
+<4d61696e7461696e656420627920746865>108 283.2 Q/F5 9/Times-Roman at 0 SF
+<4c4c>2.5 E<564d>-.9 E F0 -.7<5465>2.5 G
+<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E<672f3e292e>-.18 E 188.72
+<43565320323031312d30342d3038>72 768 R<33>205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-ar.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-ar.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-ar.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-ar.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,938 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Courier
+%%+ font Times-Italic
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 5
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Courier
+%%IncludeResource: font Times-Italic
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic at 0 ENC0/Times-Italic RE/Courier at 0 ENC0/Courier RE
+/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 126.07<564d2d4152283129204c4c>-1 F
+<564d20436f6d6d616e64204775696465>-1 E<4c4c>128.57 E<564d2d4152283129>-1
+E/F1 10.95/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0
+<6c6c766dad617220ad204c4c>108 96 Q<564d206172636869>-1 E -.15<7665>-.25
+G<72>.15 E F1<53594e4f50534953>72 112.8 Q/F2 10/Times-Bold at 0 SF
+<6c6c766d2d6172>108 124.8 Q F0<5bad5d7b646d70717274787d5b5261628c6b>2.5
+E<6f757a5d205b72656c706f735d205b636f756e745d203c6172636869>-.1 E -.15
+<7665>-.25 G 2.5<3e5b>.15 G<8c6c65732e2e2e5d>-2.5 E F1
+<4445534352495054494f4e>72 141.6 Q F0<546865>108 153.6 Q F2
+<6c6c766d2d6172>3.486 E F0 .986<636f6d6d616e642069732073696d696c61722074
+6f2074686520636f6d6d6f6e20556e6978207574696c697479>3.486 F<2c>-.65 E/F3
+10/Courier at 0 SF<6172>3.486 E F0 3.486<2e49>C 3.486<7461>-3.486 G
+<72636869>-3.486 E -.15<7665>-.25 G 3.486<7373>.15 G -2.15 -.25
+<65762065>-3.486 H .986
+<72616c208c6c657320746f67657468657220696e746f2061>.25 F 1.061<73696e676c
+65208c6c652e2054686520696e74656e7420666f72207468697320697320746f2070726f
+64756365206172636869>108 165.6 R 1.362 -.15<7665206c>-.25 H 1.062
+<6962726172696573206279>.15 F/F4 9/Times-Roman at 0 SF<4c4c>3.562 E<564d>
+-.9 E F0 1.062<626974636f646520746861742063616e206265206c696e6b>3.562 F
+1.062<656420696e746f20616e>-.1 F F4<4c4c>108 177.6 Q<564d>-.9 E F0 .471
+<70726f6772616d2e20486f>2.971 F<7765>-.25 E -.15<7665>-.25 G 1.271 -.4
+<722c2074>.15 H .47<6865206172636869>.4 F .77 -.15<76652063>-.25 H .47
+<616e20636f6e7461696e20616e>.15 F 2.97<796b>-.15 G .47
+<696e64206f66208c6c652e20427920646566>-2.97 F<61756c742c>-.1 E F2
+<6c6c766d2d6172>2.97 E F0 .47<67656e65726174657320612073796d626f6c>2.97
+F .212<7461626c652074686174206d616b>108 189.6 R .212
+<6573206c696e6b696e672066>-.1 F .212<61737465722062656361757365206f6e6c
+79207468652073796d626f6c207461626c65206e6565647320746f20626520636f6e7375
+6c7465642c206e6f74206561636820696e6469>-.1 F .213<76696475616c208c6c65>
+-.25 F<6d656d626572206f6620746865206172636869>108 201.6 Q -.15<7665>-.25
+G<2e>.15 E<546865>108 218.4 Q F2<6c6c766d2d6172>3.299 E F0 .799
+<636f6d6d616e642063616e206265207573656420746f>3.299 F/F5 10
+/Times-Italic at 0 SF -.37<7265>3.299 G<6164>.37 E F0<626f7468>3.299 E F4
+<53565234>3.299 E F0<616e64>3.299 E F4<425344>3.299 E F0 .799
+<7374796c65206172636869>3.299 F 1.099 -.15<7665208c>-.25 H .799
+<6c65732e20486f>.15 F<7765>-.25 E -.15<7665>-.25 G 1.599 -.4<722c2069>
+.15 H 3.298<7463>.4 G .798<616e6e6f74206265>-3.298 F .235
+<7573656420746f207772697465207468656d2e>108 230.4 R .235
+<5768696c6520746865>5.235 F F2<6c6c766d2d6172>2.735 E F0 .235
+<636f6d6d616e642070726f6475636573208c6c6573207468617420617265>2.735 F F5
+<616c6d6f7374>2.735 E F0 .236
+<6964656e746963616c20746f2074686520666f726d61742075736564>2.736 F .407
+<6279206f74686572>108 242.4 R F3<6172>2.907 E F0 .406
+<696d706c656d656e746174696f6e732c20697420686173207477>2.907 F 2.906
+<6f73>-.1 G .406<69676e698c63616e74206465706172747572657320696e206f7264
+657220746f206d616b>-2.906 F 2.906<6574>-.1 G .406<6865206172636869>
+-2.906 F .706 -.15<76652061>-.25 H .406<7070726f70726961746520666f72>.15
+F F4<4c4c>108 254.4 Q<564d>-.9 E F0 2.666<2e54>C .166
+<6865208c727374206465706172747572652069732074686174>-2.666 F F2
+<6c6c766d2d6172>2.667 E F0 .167<6f6e6c792075736573>2.667 F F4<42534434>
+2.667 E F0 .167<2e34207374796c65206c6f6e672070617468206e616d657320287374
+6f72656420696d6d6564696174656c79206166746572>B .401
+<746865206865616465722920616e64206e65>108 266.4 R -.15<7665>-.25 G 2.901
+<7263>.15 G .4<6f6e7461696e73206120737472696e67207461626c6520666f72206c
+6f6e67206e616d65732e20546865207365636f6e64206465706172747572652069732074
+686174207468652073796d626f6c207461626c65>-2.901 F 1.556
+<697320666f726d6174656420666f72206566>108 278.4 R 1.557<8c6369656e742063
+6f6e737472756374696f6e206f6620616e20696e2d6d656d6f7279206461746120737472
+7563747572652074686174207065726d69747320726170696420287265642d626c61636b
+207472656529>-.25 F .508<6c6f6f6b7570732e20436f6e73657175656e746c79>108
+290.4 R 3.008<2c61>-.65 G<72636869>-3.008 E -.15<7665>-.25 G 3.007<7370>
+.15 G .507<726f64756365642077697468>-3.007 F F2<6c6c766d2d6172>3.007 E
+F0 .507<757375616c6c792077>3.007 F<6f6e27>-.1 E 3.007<7462>-.18 G 3.007
+<6572>-3.007 G .507
+<65616461626c65206f72206564697461626c65207769746820616e>-3.007 F<79>-.15
+E F3<6172>3.007 E F0 1.623<696d706c656d656e746174696f6e206f722075736566
+756c20666f72206c696e6b696e672e>108 302.4 R 1.623<5573696e6720746865>
+6.623 F F3<66>4.123 E F0 1.623<6d6f64698c657220746f208d617474656e208c6c
+65206e616d65732077696c6c206d616b>4.123 F 4.124<6574>-.1 G 1.624
+<6865206172636869>-4.124 F -.15<7665>-.25 G 1.326
+<7265616461626c65206279206f74686572>108 314.4 R F3<6172>3.826 E F0 1.325
+<696d706c656d656e746174696f6e732062>3.825 F 1.325<7574206e6f7420666f7220
+6c696e6b696e672062656361757365207468652073796d626f6c207461626c6520666f72
+6d617420666f72>-.2 F F4<4c4c>3.825 E<564d>-.9 E F0<6973>3.825 E 1.06
+<756e697175652e20496620616e>108 326.4 R F4<53565234>3.56 E F0<6f72>3.56
+E F4<425344>3.56 E F0 1.06<7374796c65206172636869>3.56 F 1.36 -.15
+<76652069>-.25 H 3.56<7375>.15 G 1.06<736564207769746820746865>-3.56 F
+F3<72>3.56 E F0 1.06<287265706c61636529206f72>3.56 F F3<71>3.56 E F0
+1.06<28717569636b2075706461746529206f7065726174696f6e732c20746865>3.56 F
+<6172636869>108 338.4 Q 2.858 -.15<76652077>-.25 H 2.557
+<696c6c206265207265636f6e737472756374656420696e>.15 F F4<4c4c>5.057 E
+<564d>-.9 E F0 2.557<666f726d61742e2054686973206d65616e7320746861742074
+686520737472696e67207461626c652077696c6c2062652064726f707065642028696e>
+5.057 F 1.752<6465666572656e636520746f>108 350.4 R F4<425344>4.252 E F0
+1.752<342e34206c6f6e67206e616d65732920616e6420616e>4.252 F F4<4c4c>4.252
+E<564d>-.9 E F0 1.752
+<73796d626f6c207461626c652077696c6c2062652061646465642028627920646566>
+4.252 F 1.753<61756c74292e205468652073797374656d>-.1 F
+<73796d626f6c207461626c652077696c6c2062652072657461696e65642e>108 362.4
+Q<4865726527>108 379.2 Q 2.5<7377>-.55 G<68657265>-2.5 E F2
+<6c6c766d2d6172>2.5 E F0<646570617274732066726f6d20707265>2.5 E
+<76696f7573>-.25 E F3<6172>2.5 E F0<696d706c656d656e746174696f6e733a>2.5
+E F5<53796d626f6c2054>108 396 Q<61626c65>-.92 E F0<53696e6365>128 408 Q
+F2<6c6c766d2d6172>4.948 E F0 2.448
+<697320696e74656e64656420746f206172636869>4.948 F 2.747 -.15<76652062>
+-.25 H 2.447
+<6974636f6465208c6c65732c207468652073796d626f6c207461626c652077>.15 F
+<6f6e27>-.1 E 4.947<746d>-.18 G<616b>-4.947 E 4.947<656d>-.1 G 2.447
+<7563682073656e736520746f>-4.947 F<616e>128 420 Q .223<797468696e672062>
+-.15 F<7574>-.2 E F4<4c4c>2.723 E<564d>-.9 E F0 2.723<2e43>C
+<6f6e73657175656e746c79>-2.723 E 2.723<2c74>-.65 G .223
+<68652073796d626f6c207461626c6527>-2.723 F 2.723<7366>-.55 G .223<6f726d
+617420686173206265656e2073696d706c698c65642e20497420636f6e73697374732073
+696d706c79206f66>-2.723 F 3.974<6173>128 432 S 1.473<657175656e6365206f
+66207061697273206f662061208c6c65206d656d62657220696e6465>-3.974 F 3.973
+<786e>-.15 G 1.473<756d62657220617320616e>-3.973 F F4<4c5342>3.973 E F0
+1.473<346279746520696e7465>3.973 F 1.473
+<67657220616e642061206e756c6c2d7465726d696e61746564>-.15 F
+<737472696e672e>128 444 Q F5<4c6f6e672050>108 460.8 Q<61746873>-.8 E F0
+<536f6d65>128 472.8 Q F3<6172>4.864 E F0 2.364
+<696d706c656d656e746174696f6e732028>4.864 F F4<53565234>A F0 4.864<2975>
+C 2.364<73652061207365706172617465208c6c65206d656d62657220746f207265636f
+7264206c6f6e672070617468206e616d657320283e203135>-4.864 F
+<63686172616374657273292e>128 484.8 Q F2<6c6c766d2d6172>3.047 E F0
+<74616b>3.047 E .547<657320746865>-.1 F F4<425344>3.047 E F0 .546
+<342e3420616e64204d6163>3.047 F F4<4f53>3.046 E F0 3.046<5861>3.046 G
+.546<7070726f61636820776869636820697320746f2073696d706c792073746f726520
+7468652066756c6c2070617468>-3.046 F .771<6e616d6520696d6d6564696174656c
+7920707265636564696e6720746865206461746120666f7220746865208c6c652e205468
+652070617468206e616d65206973206e756c6c207465726d696e6174656420616e64206d
+617920636f6e7461696e>128 496.8 R
+<74686520736c61736820282f2920636861726163746572>128 508.8 Q<2e>-.55 E F5
+<436f6d7072>108 525.6 Q<657373696f6e>-.37 E F2<6c6c766d2d6172>128 537.6
+Q F0 1.227<63616e20636f6d707265737320746865206d656d62657273206f6620616e
+206172636869>3.727 F 1.527 -.15<76652074>-.25 H 3.727<6f73>.15 G -2.25
+-.2<61762065>-3.727 H 1.226<73706163652e2054686520636f6d7072657373696f6e
+207573656420646570656e6473206f6e>3.927 F<7768617427>128 549.6 Q 3.528
+<7361>-.55 G -.25<7661>-3.728 G 1.028<696c61626c65206f6e2074686520706c61
+74666f726d20616e6420776861742063686f6963657320746865>.25 F F4<4c4c>3.528
+E<564d>-.9 E F0 1.028<436f6d70726573736f72207574696c697479206d616b>3.528
+F 1.028<65732e2049742067656e6572616c6c79>-.1 F -.1<6661>128 561.6 S -.2
+<766f>-.1 G .717<727320627a6970322062>.2 F .717
+<75742077696c6c2073656c656374206265747765656e2060>-.2 F .717
+<606e6f20636f6d7072657373696f6e27>-.74 F 3.217<276f>-.74 G 3.217<7262>
+-3.217 G .716<7a69703220646570656e64696e67206f6e2077686174206d616b>
+-3.217 F .716<65732073656e736520666f72>-.1 F<746865208c6c6527>128 573.6
+Q 2.5<7363>-.55 G<6f6e74656e742e>-2.5 E F5<446972>108 590.4 Q
+<6563746f7279205265637572>-.37 E<73696f6e>-.1 E F0<4d6f7374>128 602.4 Q
+F3<6172>3.202 E F0 .703<696d706c656d656e746174696f6e7320646f206e6f742072
+656375727365207468726f756768206469726563746f726965732062>3.202 F .703
+<75742073696d706c792069676e6f7265206469726563746f7269657320696620746865>
+-.2 F 3.203<7961>-.15 G<7265>-3.203 E .125
+<70726573656e74656420746f207468652070726f6772616d20696e20746865>128
+614.4 R F5<8c6c6573>2.625 E F0<6f7074696f6e2e>2.625 E F2<6c6c766d2d6172>
+2.625 E F0 2.625<2c68>C -.25<6f77>-2.625 G -2.15 -.25<65762065>.25 H
+.925 -.4<722c2063>.25 H .125<616e2072656375727365207468726f756768206469
+726563746f72792073747275637475726573>.4 F<616e642061646420616c6c20746865
+208c6c657320756e6465722061206469726563746f7279>128 626.4 Q 2.5<2c69>-.65
+G 2.5<6672>-2.5 G<65717565737465642e>-2.5 E/F6 9/Times-Italic at 0 SF -.162
+<544f>108 643.2 S<43>.162 E F5 -1.11<5665>2.5 G
+<72626f7365204f7574707574>1.11 E F0<5768656e>128 655.2 Q F2
+<6c6c766d2d6172>2.838 E F0 .339<7072696e7473206f7574207468652076>2.838 F
+.339<6572626f7365207461626c65206f6620636f6e74656e74732028>-.15 F F3
+<7476>A F0 .339<6f7074696f6e292c2069742070726563656465732074686520757375
+616c206f757470757420776974682061>2.839 F .361<63686172616374657220696e64
+69636174696e6720746865206261736963206b696e64206f6620636f6e74656e7420696e
+20746865208c6c652e204120626c616e6b206d65616e7320746865208c6c652069732061
+207265>128 667.2 R .361<67756c6172208c6c652e204120275a27>-.15 F .103<6d
+65616e7320746865208c6c6520697320636f6d707265737365642e204120274227206d65
+616e7320746865208c6c6520697320616e>128 679.2 R F4<4c4c>2.603 E<564d>-.9
+E F0 .103<626974636f6465208c6c652e20416e20275327206d65616e7320746865208c
+6c6520697320746865>2.603 F<73796d626f6c207461626c652e>128 691.2 Q 188.72
+<43565320323031312d30342d3038>72 768 R<31>205.67 E 0 Cg EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 126.07<564d2d4152283129204c4c>-1 F
+<564d20436f6d6d616e64204775696465>-1 E<4c4c>128.57 E<564d2d4152283129>-1
+E/F1 10.95/Times-Bold at 0 SF<4f5054494f4e53>72 84 Q F0 .277
+<546865206f7074696f6e7320746f>108 96 R/F2 10/Times-Bold at 0 SF
+<6c6c766d2d6172>2.777 E F0 .277
+<61726520636f6d70617469626c652077697468206f74686572>2.777 F/F3 10
+/Courier at 0 SF<6172>2.777 E F0 2.777
+<696d706c656d656e746174696f6e732e20486f>2.777 F<7765>-.25 E -.15<7665>
+-.25 G 1.076 -.4<722c2074>.15 H .276<68657265206172652061206665>.4 F
+2.776<776d>-.25 G<6f64698c657273>-2.776 E<28>108 108 Q/F4 10
+/Times-Italic at 0 SF<7a52>A F0 2.912<2974>C .412
+<68617420617265206e6f7420666f756e6420696e206f74686572>-2.912 F F3<6172>
+2.912 E F0 .413<732e20546865206f7074696f6e7320746f>B F2<6c6c766d2d6172>
+2.913 E F0 .413<7370656369667920612073696e676c65206261736963206f70657261
+74696f6e20746f20706572666f726d206f6e>2.913 F .226<746865206172636869>108
+120 R -.15<7665>-.25 G 2.726<2c6176>.15 G .226<617269657479206f66206d6f
+64698c65727320666f722074686174206f7065726174696f6e2c20746865206e616d6520
+6f6620746865206172636869>-2.976 F .525 -.15<7665208c>-.25 H .225
+<6c652c20616e6420616e206f7074696f6e616c206c697374206f66208c6c65>.15 F<6e
+616d65732e205468657365206f7074696f6e7320617265207573656420746f2064657465
+726d696e6520686f>108 132 Q<77>-.25 E F2<6c6c766d2d6172>2.5 E F0
+<73686f756c642070726f6365737320746865206172636869>2.5 E .3 -.15
+<7665208c>-.25 H<6c652e>.15 E .033
+<546865204f7065726174696f6e7320616e64204d6f64698c657273206172652065>108
+148.8 R .033<78706c61696e656420696e207468652073656374696f6e732062656c6f>
+-.15 F 1.333 -.65<772e2054>-.25 H .034<6865206d696e696d616c20736574206f
+66206f7074696f6e73206973206174206c65617374206f6e65>.65 F .609
+<6f70657261746f7220616e6420746865206e616d65206f6620746865206172636869>
+108 160.8 R -.15<7665>-.25 G 3.109<2e54>.15 G .609
+<79706963616c6c79206172636869>-3.909 F .908 -.15<7665208c>-.25 H .608
+<6c657320656e6420776974682061>.15 F F3<2e61>3.108 E F0<737566>3.108 E
+.608<8c782c2062>-.25 F .608
+<75742074686973206973206e6f742072657175697265642e>-.2 F -.15<466f>108
+172.8 S<6c6c6f>.15 E .15<77696e6720746865>-.25 F F4<6172>2.65 E -.15
+<6368>-.37 G<6976652d6e616d65>.15 E F0 .15
+<636f6d65732061206c697374206f66>2.65 F F4<8c6c6573>2.65 E F0 .151<746861
+7420696e646963617465207468652073706563698c63206d656d62657273206f66207468
+65206172636869>2.651 F .451 -.15<76652074>-.25 H 2.651<6f6f>.15 G
+<706572617465>-2.651 E .049<6f6e2e20496620746865>108 184.8 R F4
+<8c6c6573>2.549 E F0 .048<6f7074696f6e206973206e6f742073706563698c65642c
+2069742067656e6572616c6c79206d65616e73206569746865722060>2.549 F
+<606e6f6e6527>-.74 E 2.548<276f>-.74 G 2.548<7260>-2.548 G<60616c6c27>
+-3.288 E 2.548<276d>-.74 G .048
+<656d626572732c20646570656e64696e67206f6e20746865>-2.548 F
+<6f7065726174696f6e2e>108 196.8 Q F2<4f7065726174696f6e73>87 213.6 Q F0
+15<6444>108 225.6 S .682
+<656c657465208c6c65732066726f6d20746865206172636869>-15 F -.15<7665>-.25
+G 3.182<2e4e>.15 G 3.183<6f6d>-3.182 G .683<6f64698c65727320617265206170
+706c696361626c6520746f2074686973206f7065726174696f6e2e>-3.183 F<546865>
+5.683 E F4<8c6c6573>3.183 E F0 .683<6f7074696f6e732073706563696679>3.183
+F 1.528<7768696368206d656d626572732073686f756c642062652072656d6f>128
+237.6 R -.15<7665>-.15 G 4.027<6466>.15 G 1.527
+<726f6d20746865206172636869>-4.027 F -.15<7665>-.25 G 4.027<2e49>.15 G
+4.027<7469>-4.027 G 4.027<736e>-4.027 G 1.527<6f7420616e206572726f722069
+6620612073706563698c6564208c6c6520646f6573206e6f74>-4.027 F
+<61707065617220696e20746865206172636869>128 249.6 Q -.15<7665>-.25 G 5
+<2e49>.15 G 2.5<666e>-5 G<6f>-2.5 E F4<8c6c6573>2.5 E F0
+<6172652073706563698c65642c20746865206172636869>2.5 E .3 -.15<76652069>
+-.25 H 2.5<736e>.15 G<6f74206d6f64698c65642e>-2.5 E<6d5b6162695d>108
+266.4 Q<4d6f>128 278.4 Q 2.658 -.15<7665208c>-.15 H 2.358
+<6c65732066726f6d206f6e65206c6f636174696f6e20696e20746865206172636869>
+.15 F 2.658 -.15<76652074>-.25 H 4.858<6f61>.15 G<6e6f74686572>-4.858 E
+4.858<2e54>-.55 G<6865>-4.858 E F4<61>4.858 E F0<2c>A F4<62>4.858 E F0
+4.859<2c61>C<6e64>-4.859 E F4<69>4.859 E F0 2.359
+<6d6f64698c657273206170706c7920746f2074686973>4.859 F .508
+<6f7065726174696f6e2e20546865>128 290.4 R F4<8c6c6573>3.008 E F0 .507
+<77696c6c20616c6c206265206d6f>3.008 F -.15<7665>-.15 G 3.007<6474>.15 G
+3.007<6f74>-3.007 G .507<6865206c6f636174696f6e206769>-3.007 F -.15
+<7665>-.25 G 3.007<6e62>.15 G 3.007<7974>-3.007 G .507<6865206d6f64698c
+6572732e204966206e6f206d6f64698c6572732061726520757365642c>-3.007 F
+<746865208c6c65732077696c6c206265206d6f>128 302.4 Q -.15<7665>-.15 G 2.5
+<6474>.15 G 2.5<6f74>-2.5 G<686520656e64206f6620746865206172636869>-2.5
+E -.15<7665>-.25 G 2.5<2e49>.15 G 2.5<666e>-2.5 G<6f>-2.5 E F4<8c6c6573>
+2.5 E F0<6172652073706563698c65642c20746865206172636869>2.5 E .3 -.15
+<76652069>-.25 H 2.5<736e>.15 G<6f74206d6f64698c65642e>-2.5 E<705b6b5d>
+108 319.2 Q .229<5072696e74208c6c657320746f20746865207374616e6461726420
+6f75747075742e20546865>128 331.2 R F4<6b>2.729 E F0 .23<6d6f64698c657220
+6170706c69657320746f2074686973206f7065726174696f6e2e2054686973206f706572
+6174696f6e2073696d706c79207072696e7473>2.729 F<746865>128 343.2 Q F4
+<8c6c6573>2.694 E F0 .194<696e6469636174656420746f20746865207374616e6461
+7264206f75747075742e204966206e6f>2.694 F F4<8c6c6573>2.694 E F0 .193
+<6172652073706563698c65642c2074686520656e74697265206172636869>2.693 F
+.493 -.15<76652069>-.25 H 2.693<7370>.15 G 2.693
+<72696e7465642e205072696e74696e67>-2.693 F .024
+<626974636f6465208c6c657320697320696c6c2d6164766973656420617320746865>
+128 355.2 R 2.524<796d>-.15 G .024<6967687420636f6e6675736520796f757220
+7465726d696e616c2073657474696e67732e20546865>-2.524 F F4<70>2.524 E F0
+.024<6f7065726174696f6e206e65>2.524 F -.15<7665>-.25 G 2.524<726d>.15 G
+<6f64698c6573>-2.524 E<746865206172636869>128 367.2 Q -.15<7665>-.25 G
+<2e>.15 E<715b52667a5d>108 384 Q .509<517569636b6c7920617070656e64208c6c
+657320746f2074686520656e64206f6620746865206172636869>128 396 R -.15
+<7665>-.25 G 3.008<2e54>.15 G<6865>-3.008 E F4<52>3.008 E F0<2c>A F4<66>
+3.008 E F0 3.008<2c61>C<6e64>-3.008 E F4<7a>3.008 E F0 .508
+<6d6f64698c657273206170706c7920746f2074686973206f7065726174696f6e2e>
+3.008 F<54686973>5.508 E .424
+<6f7065726174696f6e20717569636b6c79206164647320746865>128 408 R F4
+<8c6c6573>2.924 E F0 .425<746f20746865206172636869>2.924 F .725 -.15
+<76652077>-.25 H .425<6974686f757420636865636b696e6720666f72206475706c69
+636174657320746861742073686f756c642062652072656d6f>.15 F -.15<7665>-.15
+G<64>.15 E .56<8c7273742e204966206e6f>128 420 R F4<8c6c6573>3.06 E F0
+.56<6172652073706563698c65642c20746865206172636869>3.06 F .859 -.15
+<76652069>-.25 H 3.059<736e>.15 G .559<6f74206d6f64698c65642e>-3.059 F
+.559<42656361757365206f66207468652077>5.559 F .559<61792074686174>-.1 F
+F2<6c6c766d2d6172>3.059 E F0<636f6e73747275637473>3.059 E
+<746865206172636869>128 432 Q .3 -.15<7665208c>-.25 H
+<6c652c2069747320647562696f7573207768657468657220746865>.15 E F4<71>2.5
+E F0<6f7065726174696f6e20697320616e>2.5 E 2.5<7966>-.15 G
+<6173746572207468616e20746865>-2.6 E F4<72>2.5 E F0
+<6f7065726174696f6e2e>2.5 E<725b52616266757a5d>108 448.8 Q .078
+<5265706c616365206f7220696e73657274208c6c65206d656d626572732e20546865>
+128 460.8 R F4<52>2.578 E F0<2c>A F4<61>2.578 E F0<2c>A F4<62>2.578 E F0
+<2c>A F4<66>2.578 E F0<2c>A F4<75>2.578 E F0 2.578<2c61>C<6e64>-2.578 E
+F4<7a>2.578 E F0 .078<6d6f64698c657273206170706c7920746f2074686973206f70
+65726174696f6e2e2054686973206f7065726174696f6e>2.578 F 1.012
+<77696c6c207265706c6163652065>128 472.8 R<78697374696e67>-.15 E F4
+<8c6c6573>3.512 E F0 1.012<6f7220696e73657274207468656d2061742074686520
+656e64206f6620746865206172636869>3.512 F 1.312 -.15<76652069>-.25 H
+3.512<6674>.15 G<6865>-3.512 E 3.512<7964>-.15 G 3.512<6f6e>-3.512 G
+1.012<6f742065>-3.512 F 1.012<786973742e204966206e6f>-.15 F F4<8c6c6573>
+3.511 E F0<617265>3.511 E<73706563698c65642c20746865206172636869>128
+484.8 Q .3 -.15<76652069>-.25 H 2.5<736e>.15 G<6f74206d6f64698c65642e>
+-2.5 E 3.06<745b765d205072696e74>108 501.6 R .334
+<746865207461626c65206f6620636f6e74656e74732e2057>2.834 F .334
+<6974686f757420616e>-.4 F 2.834<796d>-.15 G .335<6f64698c6572732c207468
+6973206f7065726174696f6e206a757374207072696e747320746865206e616d6573206f
+6620746865206d656d62657273>-2.834 F 3.146
+<746f20746865207374616e64617264206f75747075742e2057>128 513.6 R 3.146
+<69746820746865>-.4 F F4<76>5.645 E F0<6d6f64698c6572>5.645 E<2c>-.4 E
+F2<6c6c766d2d6172>5.645 E F0 3.145<616c736f207072696e7473206f7574207468
+65208c6c6520747970652028423d626974636f64652c>5.645 F 1.085<5a3d636f6d70
+7265737365642c20533d73796d626f6c207461626c652c20626c616e6b3d7265>128
+525.6 R 1.086<67756c6172208c6c65292c20746865207065726d697373696f6e206d6f
+64652c20746865206f>-.15 F 1.086<776e657220616e642067726f75702c20746865>
+-.25 F .708<73697a652c20616e642074686520646174652e20496620616e>128 537.6
+R<79>-.15 E F4<8c6c6573>3.208 E F0 .708<6172652073706563698c65642c207468
+65206c697374696e67206973206f6e6c7920666f722074686f7365208c6c65732e204966
+206e6f>3.208 F F4<8c6c6573>3.208 E F0 .708<6172652073706563698c65642c>
+3.208 F<746865207461626c65206f6620636f6e74656e747320666f7220746865207768
+6f6c65206172636869>128 549.6 Q .3 -.15<76652069>-.25 H 2.5<7370>.15 G
+<72696e7465642e>-2.5 E<785b6f505d>108 566.4 Q 2.555
+<45787472616374206172636869>128 578.4 R 2.855 -.15<7665206d>-.25 H 2.555
+<656d62657273206261636b20746f208c6c65732e20546865>.15 F F4<6f>5.056 E F0
+2.556<6d6f64698c6572206170706c69657320746f2074686973206f7065726174696f6e
+2e2054686973206f7065726174696f6e>5.056 F<726574726965>128 590.4 Q -.15
+<7665>-.25 G 4.636<7374>.15 G 2.136<686520696e64696361746564>-4.636 F F4
+<8c6c6573>4.636 E F0 2.136<66726f6d20746865206172636869>4.636 F 2.435
+-.15<76652061>-.25 H 2.135<6e6420777269746573207468656d206261636b20746f
+20746865206f7065726174696e672073797374656d27>.15 F 4.635<738c>-.55 G
+<6c65>-4.635 E<73797374656d2e204966206e6f>128 602.4 Q F4<8c6c6573>2.5 E
+F0<6172652073706563698c65642c2074686520656e74697265206172636869>2.5 E .3
+-.15<76652069>-.25 H 2.5<7365>.15 G<7874726163742e>-2.65 E F2
+<4d6f64698c65727320286f7065726174696f6e2073706563698c6329>87 619.2 Q F0
+1.477<546865206d6f64698c6572732062656c6f>108 631.2 R 3.978<7761>-.25 G
+1.478<72652073706563698c6320746f206365727461696e206f7065726174696f6e732e
+2053656520746865204f7065726174696f6e732073656374696f6e202861626f>-3.978
+F -.15<7665>-.15 G 3.978<2974>.15 G 3.978<6f64>-3.978 G
+<657465726d696e65>-3.978 E<7768696368206d6f64698c6572732061726520617070
+6c696361626c6520746f207768696368206f7065726174696f6e732e>108 643.2 Q 6.4
+<5b615d205768656e>108 660 R .482<696e73657274696e67206f72206d6f>2.982 F
+.481<76696e67206d656d626572208c6c65732c2074686973206f7074696f6e20737065
+63698c6573207468652064657374696e6174696f6e206f6620746865206e65>-.15 F
+2.981<778c>-.25 G .481<6c6573206173206265696e67>-2.981 F F3<61>128 672 Q
+F0<6674657220746865>A F4 -.37<7265>2.5 G<6c706f73>.37 E F0<6d656d626572>
+2.5 E 2.5<2e49>-.55 G<66>-2.5 E F4 -.37<7265>2.5 G<6c706f73>.37 E F0<69
+73206e6f7420666f756e642c20746865208c6c65732061726520706c6163656420617420
+74686520656e64206f6620746865206172636869>2.5 E -.15<7665>-.25 G<2e>.15 E
+5.84<5b625d205768656e>108 688.8 R .481<696e73657274696e67206f72206d6f>
+2.981 F .481<76696e67206d656d626572208c6c65732c2074686973206f7074696f6e
+2073706563698c6573207468652064657374696e6174696f6e206f6620746865206e65>
+-.15 F 2.982<778c>-.25 G .482<6c6573206173206265696e67>-2.982 F F3<62>
+128 700.8 Q F0 .994<65666f726520746865>B F4 -.37<7265>3.494 G<6c706f73>
+.37 E F0<6d656d626572>3.494 E 3.494<2e49>-.55 G<66>-3.494 E F4 -.37
+<7265>3.494 G<6c706f73>.37 E F0 .994<6973206e6f7420666f756e642c20746865
+208c6c65732061726520706c616365642061742074686520656e64206f66207468652061
+72636869>3.494 F -.15<7665>-.25 G 3.493<2e54>.15 G<686973>-3.493 E
+<6d6f64698c6572206973206964656e746963616c20746f2074686520746865>128
+712.8 Q F4<69>2.5 E F0<6d6f64698c6572>2.5 E<2e>-.55 E 188.72
+<43565320323031312d30342d3038>72 768 R<32>205.67 E 0 Cg EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 126.07<564d2d4152283129204c4c>-1 F
+<564d20436f6d6d616e64204775696465>-1 E<4c4c>128.57 E<564d2d4152283129>-1
+E 7.51<5b665d204e6f726d616c6c79>108 84 R<2c>-.65 E/F1 10/Times-Bold at 0 SF
+<6c6c766d2d6172>2.823 E F0 .323<73746f726573207468652066756c6c2070617468
+206e616d6520746f2061208c6c652061732070726573656e74656420746f206974206f6e
+2074686520636f6d6d616e64206c696e652e2057>2.823 F .324<6974682074686973>
+-.4 F 1.548<6f7074696f6e2c207472756e636174656420283135206368617261637465
+7273206d617829206e616d65732061726520757365642e205468697320656e7375726573
+206e616d6520636f6d7061746962696c6974792077697468206f6c646572>128 96 R
+-.15<7665>128 108 S .773<7273696f6e73206f66>.15 F/F2 10/Courier at 0 SF
+<6172>3.273 E F0 -.2<6275>3.273 G 3.273<746d>.2 G .773
+<617920616c736f20746877>-3.273 F .773<61727420636f72726563742065>-.1 F
+.773<787472616374696f6e206f6620746865208c6c657320286475706c696361746573
+206d6179206f>-.15 F -.15<7665>-.15 G .774
+<727772697465292e2049662075736564>.15 F .394<7769746820746865>128 120 R
+/F3 10/Times-Italic at 0 SF<52>2.894 E F0 .393<6f7074696f6e2c20746865206469
+726563746f727920726563757273696f6e2077696c6c20626520706572666f726d656420
+62>2.894 F .393
+<757420746865208c6c65206e616d65732077696c6c20616c6c206265>-.2 F F2<66>
+2.893 E F0 .393<6c617474656e656420746f>B
+<73696d706c65208c6c65206e616d65732e>128 132 Q 8.06<5b695d2041>108 148.8
+R<73796e6f6e>2.5 E<796d20666f7220746865>-.15 E F3<62>2.5 E F0
+<6f7074696f6e2e>2.5 E 5.84<5b6b5d204e6f726d616c6c79>108 165.6 R<2c>-.65
+E F1<6c6c766d2d6172>4.438 E F0 1.938<77696c6c206e6f74207072696e74207468
+6520636f6e74656e7473206f6620626974636f6465208c6c6573207768656e20746865>
+4.438 F F3<70>4.438 E F0 1.939
+<6f7065726174696f6e20697320757365642e2054686973>4.438 F
+<6d6f64698c657220646566656174732074686520646566>128 177.6 Q
+<61756c7420616e6420616c6c6f>-.1 E<77732074686520626974636f6465206d656d62
+65727320746f206265207072696e7465642e>-.25 E 3.62<5b4e5d2054686973>108
+194.4 R<6f7074696f6e2069732069676e6f726564206279>2.5 E F1
+<6c6c766d2d6172>2.5 E F0 -.2<6275>2.5 G 2.5<7470>.2 G<726f>-2.5 E
+<766964656420666f7220636f6d7061746962696c697479>-.15 E<2e>-.65 E 5.84
+<5b6f5d205768656e>108 211.2 R -.15<6578>2.804 G .304<7472616374696e6720
+8c6c65732c2074686973206f7074696f6e2077696c6c206361757365>.15 F F1
+<6c6c766d2d6172>2.804 E F0 .304<746f2070726573657276>2.804 F 2.804<6574>
+-.15 G .304<6865206f726967696e616c206d6f64698c636174696f6e2074696d657320
+6f6620746865>-2.804 F<8c6c6573206974207772697465732e>128 223.2 Q 5.28
+<5b505d20757365>108 240 R
+<66756c6c2070617468206e616d6573207768656e206d61746368696e67>2.5 E 4.17
+<5b525d2054686973>108 256.8 R 1.159
+<6d6f64698c657220696e737472756374696f6e7320746865>3.659 F F3<72>3.659 E
+F0 1.159<6f7074696f6e20746f2072656375727369>3.659 F -.15<7665>-.25 G
+1.159<6c792070726f63657373206469726563746f726965732e>.15 F -.4<5769>
+6.159 G<74686f7574>.4 E F3<52>3.66 E F0 3.66<2c64>C 1.16
+<69726563746f7269657320617265>-3.66 F 1.79
+<69676e6f72656420616e64206f6e6c792074686f7365>128 268.8 R F3<8c6c6573>
+4.29 E F0 1.789<7468617420726566657220746f208c6c65732077696c6c2062652061
+6464656420746f20746865206172636869>4.29 F -.15<7665>-.25 G 4.289<2e57>
+.15 G<68656e>-4.289 E F3<52>4.289 E F0 1.789<697320757365642c20616e>
+4.289 F<79>-.15 E .014
+<6469726563746f726965732073706563698c65642077697468>128 280.8 R F3
+<8c6c6573>2.514 E F0 .014
+<77696c6c206265207363616e6e6564202872656375727369>2.514 F -.15<7665>-.25
+G .014<6c792920746f208c6e64208c6c657320746f20626520616464656420746f2074
+6865206172636869>.15 F -.15<7665>-.25 G 2.515<2e41>.15 G -.15<6e79>
+-2.515 G<8c6c652077686f7365206e616d65206265>128 292.8 Q
+<67696e732077697468206120646f742077696c6c206e6f742062652061646465642e>
+-.15 E 5.84<5b755d205768656e>108 309.6 R .893<7265706c6163696e672065>
+3.393 F .893<78697374696e67208c6c657320696e20746865206172636869>-.15 F
+-.15<7665>-.25 G 3.393<2c6f>.15 G .893
+<6e6c79207265706c6163652074686f7365208c6c65732074686174206861>-3.393 F
+1.193 -.15<766520612074>-.2 H .893<696d65207374616d70207468616e20746865>
+.15 F<74696d65207374616d70206f6620746865206d656d62657220696e207468652061
+72636869>128 321.6 Q -.15<7665>-.25 G<2e>.15 E 6.4<5b7a5d205768656e>108
+338.4 R .283<696e73657274696e67206f72207265706c6163696e6720616e>2.783 F
+2.783<798c>-.15 G .283<6c6520696e20746865206172636869>-2.783 F -.15
+<7665>-.25 G 2.783<2c63>.15 G .283
+<6f6d707265737320746865208c6c65208c7273742e>-2.783 F .284
+<54686973206d6f64698c6572206973207361666520746f20757365>5.284 F .314
+<7768656e2028707265>128 350.4 R .314<76696f75736c792920636f6d7072657373
+656420626974636f6465208c6c65732061726520616464656420746f2074686520617263
+6869>-.25 F -.15<7665>-.25 G 2.813<3b74>.15 G .313
+<686520636f6d7072657373656420626974636f6465208c6c65732077696c6c>-2.813 F
+<6e6f7420626520646f75626c7920636f6d707265737365642e>128 362.4 Q F1
+<4d6f64698c657273202867656e6572696329>87 379.2 Q F0
+<546865206d6f64698c6572732062656c6f>108 391.2 Q 2.5<776d>-.25 G
+<6179206265206170706c69656420746f20616e>-2.5 E 2.5<796f>-.15 G
+<7065726174696f6e2e>-2.5 E 6.4<5b635d2046>108 408 R 1.141
+<6f7220616c6c206f7065726174696f6e732c>-.15 F F1<6c6c766d2d6172>3.641 E
+F0 1.141<77696c6c20616c>3.641 F -.1<7761>-.1 G 1.141
+<79732063726561746520746865206172636869>.1 F 1.441 -.15<76652069>-.25 H
+3.641<6669>.15 G 3.642<7464>-3.641 G<6f65736e27>-3.642 E 3.642<7465>-.18
+G 1.142<786973742e204e6f726d616c6c79>-3.792 F<2c>-.65 E F1
+<6c6c766d2d6172>3.642 E F0<77696c6c>3.642 E .436<7072696e7420612077>128
+420 R .436<61726e696e67206d65737361676520696e6469636174696e672074686174
+20746865206172636869>-.1 F .736 -.15<76652069>-.25 H 2.936<7362>.15 G
+.435<65696e6720637265617465642e205573696e672074686973206d6f64698c657220
+7475726e73206f66>-2.936 F 2.935<6674>-.25 G<686174>-2.935 E -.1<7761>128
+432 S<726e696e672e>.1 E 6.95<5b735d2054686973>108 448.8 R 1.418
+<6d6f64698c6572207265717565737473207468617420616e206172636869>3.918 F
+1.719 -.15<76652069>-.25 H<6e6465>.15 E 3.919<7828>-.15 G 1.419<6f722073
+796d626f6c207461626c652920626520616464656420746f20746865206172636869>
+-3.919 F -.15<7665>-.25 G 3.919<2e54>.15 G 1.419<68697320697320746865>
+-3.919 F<646566>128 460.8 Q .079<61756c74206d6f6465206f66206f7065726174
+696f6e2e205468652073796d626f6c207461626c652077696c6c20636f6e7461696e2061
+6c6c207468652065>-.1 F .078<787465726e616c6c792076697369626c652066756e63
+74696f6e7320616e6420676c6f62616c>-.15 F -.25<7661>128 472.8 S .336<7269
+61626c65732064658c6e656420627920616c6c2074686520626974636f6465208c6c6573
+20696e20746865206172636869>.25 F -.15<7665>-.25 G 2.836<2e55>.15 G .336
+<73696e672074686973206d6f64698c6572206973206d6f7265206566>-2.836 F .336
+<8c6369656e742074686174207573696e67>-.25 F<6c6c766d2d72616e6c6962207768
+69636820616c736f2063726561746573207468652073796d626f6c207461626c652e>128
+484.8 Q 5.28<5b535d2054686973>108 501.6 R 1.079
+<6d6f64698c657220697320746865206f70706f73697465206f6620746865>3.579 F F3
+<73>3.579 E F0<6d6f64698c6572>3.579 E 3.579<2e49>-.55 G 3.579<7469>
+-3.579 G<6e73747275637473>-3.579 E F1<6c6c766d2d6172>3.579 E F0 1.079
+<746f206e6f742062>3.579 F 1.079
+<75696c64207468652073796d626f6c207461626c652e204966>-.2 F<626f7468>128
+513.6 Q F3<73>2.5 E F0<616e64>2.5 E F3<53>2.5 E F0<61726520757365642c20
+746865206c617374206d6f64698c657220746f206f6363757220696e20746865206f7074
+696f6e732077696c6c20707265>2.5 E -.25<7661>-.25 G<696c2e>.25 E 5.84
+<5b765d2054686973>108 530.4 R 1.522<6d6f64698c657220696e73747275637473>
+4.022 F F1<6c6c766d2d6172>4.022 E F0 1.522<746f2062652076>4.022 F 1.523<
+6572626f73652061626f7574207768617420697420697320646f696e672e204561636820
+65646974696e67206f7065726174696f6e2074616b>-.15 F<656e>-.1 E<6167>128
+542.4 Q<61696e737420746865206172636869>-.05 E .3 -.15<76652077>-.25 H<69
+6c6c2070726f647563652061206c696e65206f66206f757470757420736179696e672077
+686174206973206265696e6720646f6e652e>.15 E/F4 10.95/Times-Bold at 0 SF
+<5354>72 559.2 Q<414e44>-.986 E<41524453>-.383 E F0<546865>108 571.2 Q
+F1<6c6c766d2d6172>2.711 E F0 .211
+<7574696c69747920697320696e74656e64656420746f2070726f>2.711 F .21
+<766964652061207375706572736574206f6620746865>-.15 F/F5 9/Times-Roman at 0
+SF<49454545>2.71 E F0 .21<53746420313030332e322028>2.71 F F5<504f534958>
+A F0 .21<2e32292066756e6374696f6e616c69747920666f72>B F2<6172>2.71 E F0
+<2e>A F1<6c6c766d2d6172>108 583.2 Q F0 .728<63616e207265616420626f7468>
+3.228 F F5<53565234>3.228 E F0<616e64>3.228 E F5<42534434>3.228 E F0
+.728<2e3420286f72204d6163>B F5<4f53>3.228 E F0 .729<5829206172636869>
+3.228 F -.15<7665>-.25 G .729<732e20496620746865>.15 F F2<66>3.229 E F0
+.729<6d6f64698c6572206973206769>3.229 F -.15<7665>-.25 G 3.229<6e74>.15
+G 3.229<6f74>-3.229 G<6865>-3.229 E F2<78>3.229 E F0<6f72>3.229 E F2<72>
+3.229 E F0 1.569<6f7065726174696f6e73207468656e>108 595.2 R F1
+<6c6c766d2d6172>4.069 E F0 1.569<77696c6c207772697465>4.069 F F5
+<53565234>4.069 E F0 1.569<636f6d70617469626c65206172636869>4.069 F -.15
+<7665>-.25 G 1.569<732e2057>.15 F 1.569
+<6974686f75742074686973206d6f64698c6572>-.4 F<2c>-.4 E F1
+<6c6c766d2d6172>4.069 E F0 1.568<77696c6c207772697465>4.068 F F5
+<42534434>108 607.2 Q F0 1.506<2e3420636f6d70617469626c65206172636869>B
+-.15<7665>-.25 G 4.006<7374>.15 G 1.507<686174206861>-4.006 F 1.807 -.15
+<7665206c>-.2 H 1.507<6f6e67206e616d657320696d6d6564696174656c7920616674
+6572207468652068656164657220616e6420696e64696361746564207573696e67207468
+65>.15 F -.74<6060>108 619.2 S<23312f64646427>.74 E 2.5<276e>-.74 G
+<6f746174696f6e20666f7220746865206e616d6520696e2074686520686561646572>
+-2.5 E<2e>-.55 E F4<46494c4520464f524d41>72 636 Q<54>-1.04 E F0 .012
+<546865208c6c6520666f726d617420666f72>108 648 R F5<4c4c>2.512 E<564d>-.9
+E F0<4172636869>2.512 E .312 -.15<7665208c>-.25 H .011
+<6c65732069732073696d696c617220746f2074686174206f66>.15 F F5<425344>
+2.511 E F0 .011<342e34206f72204d6163>2.511 F F5<4f5358>2.511 E F0
+<6172636869>2.511 E .311 -.15<7665208c>-.25 H .011<6c65732e20496e2066>
+.15 F .011<6163742c2065>-.1 F<7863657074>-.15 E .867
+<666f72207468652073796d626f6c207461626c652c20746865>108 660 R F2<6172>
+3.367 E F0 .867<636f6d6d616e6473206f6e2074686f7365206f7065726174696e6720
+73797374656d732073686f756c642062652061626c6520746f2072656164>3.367 F F5
+<4c4c>3.368 E<564d>-.9 E F0<6172636869>3.368 E -.15<7665>-.25 G<8c6c6573
+2e205468652064657461696c73206f6620746865208c6c6520666f726d617420666f6c6c
+6f>108 672 Q -.65<772e>-.25 G 1.225<45616368206172636869>108 688.8 R
+1.525 -.15<76652062>-.25 H -.15<6567>.15 G 1.225
+<696e73207769746820746865206172636869>.15 F 1.525 -.15<7665206d>-.25 H
+1.225<61676963206e756d62657220776869636820697320746865206569676874207072
+696e7461626c6520636861726163746572732060>.15 F<60213c617263683e5c6e27>
+-.74 E<27>-.74 E 1.134
+<7768657265205c6e20726570726573656e747320746865206e65>108 700.8 R 1.134
+<776c696e6520636861726163746572202830783041292e>-.25 F -.15<466f>6.135 G
+<6c6c6f>.15 E 1.135<77696e6720746865206d61676963206e756d626572>-.25 F
+3.635<2c74>-.4 G 1.135<6865208c6c6520697320636f6d706f736564206f66>-3.635
+F -2.15 -.25<65762065>108 712.8 T 2.67<6e6c>.25 G .17
+<656e677468206d656d626572732074686174206265>-2.67 F .17
+<67696e207769746820616e206172636869>-.15 F .47 -.15<76652068>-.25 H .17<
+656164657220616e6420656e6420776974682061205c6e2070616464696e672063686172
+6163746572206966206e65636573736172792028746f>.15 F<6d616b>108 724.8 Q
+3.561<6574>-.1 G 1.061<6865206c656e6774682065>-3.561 F -.15<7665>-.25 G
+1.061<6e292e2045616368208c6c65206d656d62657220697320636f6d706f736564206f
+66206120686561646572202864658c6e65642062656c6f>.15 F 1.062
+<77292c20616e206f7074696f6e616c206e65>-.25 F<776c696e652d>-.25 E 188.72
+<43565320323031312d30342d3038>72 768 R<33>205.67 E 0 Cg EP
+%%Page: 4 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 126.07<564d2d4152283129204c4c>-1 F
+<564d20436f6d6d616e64204775696465>-1 E<4c4c>128.57 E<564d2d4152283129>-1
+E<7465726d696e617465642060>108 84 Q<606c6f6e67208c6c65206e616d6527>-.74
+E 2.5<2761>-.74 G
+<6e642074686520636f6e74656e7473206f6620746865208c6c652e>-2.5 E 1.776<54
+6865208c656c6473206f6620746865206865616465722061726520646573637269626564
+20696e20746865206974656d732062656c6f>108 100.8 R 3.076 -.65<772e2041>
+-.25 H 1.776
+<6c6c208c656c6473206f66207468652068656164657220636f6e7461696e206f6e6c79>
+.65 F/F1 9/Times-Roman at 0 SF<4153434949>4.276 E F0<636861726163746572732c
+20617265206c656674206a757374698c656420616e642061726520726967687420706164
+646564207769746820737061636520636861726163746572732e>108 112.8 Q
+<6e616d6520ad20636861725b31365d>108 129.6 Q 1.766
+<54686973208c656c64206f6620746865206865616465722070726f>128 141.6 R
+1.766<766964657320746865206e616d65206f6620746865206172636869>-.15 F
+2.066 -.15<7665206d>-.25 H<656d626572>.15 E 4.266<2e49>-.55 G 4.266
+<6674>-4.266 G 1.766<6865206e616d65206973206c6f6e676572207468616e203135>
+-4.266 F .798<63686172616374657273206f7220636f6e7461696e73206120736c6173
+6820282f2920636861726163746572>128 153.6 R 3.298<2c74>-.4 G .798
+<68656e2074686973208c656c6420636f6e7461696e73>-3.298 F/F2 10/Courier at 0
+SF<23312f6e6e6e>3.298 E F0<7768657265>3.298 E F2<6e6e6e>3.298 E F0
+<70726f>3.298 E .798<766964657320746865>-.15 F .808
+<6c656e677468206f6620746865206e616d6520616e6420746865>128 165.6 R F2
+<23312f>3.308 E F0 .808<6973206c69746572616c2e>3.308 F .809<496e20746869
+7320636173652c207468652061637475616c206e616d65206f6620746865208c6c652069
+732070726f>5.808 F .809<766964656420696e20746865>-.15 F F2<6e6e6e>128
+177.6 Q F0 1.797<627974657320696d6d6564696174656c7920666f6c6c6f>4.297 F
+1.797<77696e672074686520686561646572>-.25 F 4.297<2e49>-.55 G 4.297
+<6674>-4.297 G 1.797<6865206e616d65206973203135206368617261637465727320
+6f72206c6573732c20697420697320636f6e7461696e6564>-4.297 F<6469726563746c
+7920696e2074686973208c656c6420616e64207465726d696e6174656420776974682061
+20736c61736820282f2920636861726163746572>128 189.6 Q<2e>-.55 E
+<6461746520ad20636861725b31325d>108 206.4 Q .739
+<54686973208c656c642070726f>128 218.4 R .739<76696465732074686520646174
+65206f66206d6f64698c636174696f6e206f6620746865208c6c6520696e207468652066
+6f726d206f66206120646563696d616c20656e636f646564206e756d6265722074686174>
+-.15 F<70726f>128 230.4 Q<766964657320746865206e756d626572206f6620736563
+6f6e64732073696e6365207468652065706f6368202873696e63652030303a30303a3030
+204a616e20312c2031393730292070657220506f7369782073706563698c636174696f6e
+732e>-.15 E<75696420ad20636861725b365d>108 247.2 Q .126
+<54686973208c656c642070726f>128 259.2 R .126<76696465732074686520757365
+72206964206f6620746865208c6c6520656e636f646564206173206120646563696d616c>
+-.15 F F1<4153434949>2.626 E F0 2.626<737472696e672e2054686973>2.626 F
+.125<8c656c64206d69676874206e6f74206d616b>2.626 F<65>-.1 E .251<6d756368
+2073656e7365206f6e206e6f6e2d556e69782073797374656d732e204f6e20556e69782c
+206974206973207468652073616d652076>128 271.2 R .252<616c7565206173207468
+652073745f756964208c656c64206f6620746865207374617420737472756374757265>
+-.25 F<72657475726e656420627920746865>128 283.2 Q/F3 10/Times-Italic at 0
+SF<73746174>2.5 E F0
+<283229206f7065726174696e672073797374656d2063616c6c2e>1.666 E
+<67696420ad20636861725b365d>108 300 Q 1.099<54686973208c656c642070726f>
+128 312 R 1.099<7669646573207468652067726f7570206964206f6620746865208c6c
+6520656e636f646564206173206120646563696d616c>-.15 F F1<4153434949>3.599
+E F0 3.599<737472696e672e2054686973>3.599 F 1.099
+<8c656c64206d69676874206e6f74>3.599 F<6d616b>128 324 Q 3.458<656d>-.1 G
+.958<7563682073656e7365206f6e206e6f6e2d556e69782073797374656d732e204f6e
+20556e69782c206974206973207468652073616d652076>-3.458 F .959
+<616c7565206173207468652073745f676964208c656c64206f66207468652073746174>
+-.25 F<7374727563747572652072657475726e656420627920746865>128 336 Q F3
+<73746174>2.5 E F0<283229206f7065726174696e672073797374656d2063616c6c2e>
+1.666 E<6d6f646520ad20636861725b385d>108 352.8 Q .714
+<54686973208c656c642070726f>128 364.8 R .714<76696465732074686520616363
+657373206d6f6465206f6620746865208c6c6520656e636f64656420617320616e206f63
+74616c>-.15 F F1<4153434949>3.214 E F0 .714
+<737472696e672e2054686973208c656c64206d69676874206e6f74>3.214 F<6d616b>
+128 376.8 Q 2.961<656d>-.1 G .461<7563682073656e7365206f6e206e6f6e2d556e
+69782073797374656d732e204f6e20556e69782c206974206973207468652073616d6520
+76>-2.961 F .462<616c7565206173207468652073745f6d6f6465208c656c64206f66
+207468652073746174>-.25 F
+<7374727563747572652072657475726e656420627920746865>128 388.8 Q F3
+<73746174>2.5 E F0<283229206f7065726174696e672073797374656d2063616c6c2e>
+1.666 E<73697a6520ad20636861725b31305d>108 405.6 Q .588
+<54686973208c656c642070726f>128 417.6 R .588<7669646573207468652073697a
+65206f6620746865208c6c652c20696e2062797465732c20656e636f6465642061732061
+20646563696d616c>-.15 F F1<4153434949>3.087 E F0 .587
+<737472696e672e204966207468652073697a65208c656c64206973>3.087 F<6e65>128
+429.6 Q -.05<6761>-.15 G<7469>.05 E .335 -.15<76652028>-.25 H .035<7374
+6172747320776974682061206d696e7573207369676e2c203078303244292c207468656e
+20746865206172636869>.15 F .335 -.15<7665206d>-.25 H .035<656d6265722069
+732073746f72656420696e20636f6d7072657373656420666f726d2e20546865>.15 F
+1.785<8c7273742062797465206f6620746865206172636869>128 441.6 R 2.085
+-.15<7665206d>-.25 H<656d62657227>.15 E 4.285<7364>-.55 G 1.784<61746120
+696e646963617465732074686520636f6d7072657373696f6e207479706520757365642e
+20412076>-4.285 F 1.784<616c7565206f66203020283078333029>-.25 F 1.315
+<696e646963617465732074686174206e6f20636f6d7072657373696f6e2077>128
+453.6 R 1.315<617320757365642e20412076>-.1 F 1.316<616c7565206f66203220
+28307833322920696e64696361746573207468617420627a69703220636f6d7072657373
+696f6e2077>-.25 F<6173>-.1 E<757365642e>128 465.6 Q
+<666d616720ad20636861725b325d>108 482.4 Q .49
+<54686973208c656c6420697320746865206172636869>128 494.4 R .79 -.15
+<7665208c>-.25 H .49<6c65206d656d626572206d61676963206e756d626572>.15 F
+2.989<2e49>-.55 G .489<747320636f6e74656e7420697320616c>-2.989 F -.1
+<7761>-.1 G .489<797320746865207477>.1 F 2.989<6f63>-.1 G .489
+<686172616374657273206261636b207469636b>-2.989 F .843
+<28307836302920616e64206e65>128 506.4 R .843
+<776c696e65202830783041292e20546869732070726f>-.25 F .844<76696465732073
+6f6d65206d656173757265207574696c69747920696e206964656e74696679696e672061
+72636869>-.15 F 1.144 -.15<7665208c>-.25 H .844<6c65732074686174206861>
+.15 F -.15<7665>-.2 G<6265656e20636f727275707465642e>128 518.4 Q<546865>
+108 535.2 Q F1<4c4c>3.625 E<564d>-.9 E F0 1.125
+<73796d626f6c207461626c652068617320746865207370656369616c206e616d652060>
+3.625 F<60235f4c4c>-.74 E<564d5f53594d5f54>-1 E<41425f2327>-.93 E 1.124
+<272e2049742069732070726573756d65642074686174206e6f207265>-.74 F
+<67756c6172>-.15 E<6172636869>108 547.2 Q 1.486 -.15<7665206d>-.25 H
+1.186<656d626572208c6c652077696c6c2077>.15 F 1.186
+<616e742074686973206e616d652e20546865>-.1 F F1<4c4c>3.687 E<564d>-.9 E
+F0 1.187<73796d626f6c207461626c652069732073696d706c7920636f6d706f736564
+206f6620612073657175656e6365206f66>3.687 F .922
+<747269706c6574733a2062797465206f66>108 559.2 R .921<667365742c206c656e
+677468206f662073796d626f6c2c20616e64207468652073796d626f6c20697473656c66
+2e2053796d626f6c7320617265206e6f74206e756c6c206f72206e65>-.25 F .921
+<776c696e65207465726d696e617465642e>-.25 F<4865726520617265207468652064
+657461696c73206f6e2065616368206f66207468657365206974656d733a>108 571.2 Q
+<6f66>108 588 Q
+<6673657420ad2076627220656e636f646564203332ad62697420696e7465>-.25 E
+<676572>-.15 E 1.375<546865206f66>128 600 R 1.375
+<66736574206974656d2070726f>-.25 F 1.376<766964657320746865206f66>-.15 F
+1.376<6673657420696e746f20746865206172636869>-.25 F 1.676 -.15<7665208c>
+-.25 H 1.376<6c652077686572652074686520626974636f6465206d656d6265722069
+732073746f7265642074686174206973>.15 F .533
+<6173736f6369617465642077697468207468652073796d626f6c2e20546865206f66>
+128 612 R .533<667365742076>-.25 F .533<616c7565206973203020626173656420
+617420746865207374617274206f6620746865208c7273742060>-.25 F
+<606e6f726d616c27>-.74 E 3.032<278c>-.74 G .532<6c65206d656d626572>
+-3.032 F<2e>-.55 E 2.156 -.8<546f2064>128 624 T<657269>.8 E .856 -.15
+<76652074>-.25 H .557<68652061637475616c208c6c65206f66>.15 F .557
+<66736574206f6620746865206d656d626572>-.25 F 3.057<2c79>-.4 G .557<6f75
+206d7573742061646420746865206e756d626572206f66206279746573206f6363757069
+656420627920746865208c6c65>-3.057 F 1.261<7369676e6174757265202838206279
+7465732920616e64207468652073796d626f6c207461626c65732e205468652076>128
+636 R 1.261<616c7565206f662074686973206974656d20697320656e636f6465642075
+73696e672076>-.25 F 1.261<61726961626c65206269742072617465>-.25 F .3<65
+6e636f64696e6720746f20726564756365207468652073697a65206f6620746865207379
+6d626f6c207461626c652e>128 648 R -1.11<5661>5.3 G .3<726961626c65206269
+74207261746520656e636f64696e67207573657320746865206869676820626974202830
+78383029206f66>1.11 F 1.063<65616368206279746520746f20696e64696361746520
+696620746865726520617265206d6f726520627974657320746f20666f6c6c6f>128 660
+R 2.363 -.65<772e2054>-.25 H 1.063<68652072656d61696e696e67203720626974
+7320696e206561636820627974652063617272792062697473>.65 F
+<66726f6d207468652076>128 672 Q
+<616c75652e20546865208c6e616c206279746520646f6573206e6f74206861>-.25 E
+.3 -.15<76652074>-.2 H<6865206869676820626974207365742e>.15 E
+<6c656e67746820ad2076627220656e636f646564203332ad62697420696e7465>108
+688.8 Q<676572>-.15 E 1.415<546865206c656e677468206974656d2070726f>128
+700.8 R 1.416<766964657320746865206c656e677468206f66207468652073796d626f
+6c207468617420666f6c6c6f>-.15 F 1.416<77732e204c696b>-.25 F 3.916<6574>
+-.1 G<686973>-3.916 E F3<6f66>3.916 E<66736574>-.18 E F0 1.416
+<6974656d2c20746865206c656e677468206973>3.916 F -.25<7661>128 712.8 S
+<726961626c6520626974207261746520656e636f6465642e>.25 E 188.72
+<43565320323031312d30342d3038>72 768 R<34>205.67 E 0 Cg EP
+%%Page: 5 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 126.07<564d2d4152283129204c4c>-1 F
+<564d20436f6d6d616e64204775696465>-1 E<4c4c>128.57 E<564d2d4152283129>-1
+E<73796d626f6c20ad20636861726163746572206172726179>108 84 Q .648
+<5468652073796d626f6c206974656d2070726f>128 96 R .648
+<766964657320746865207465>-.15 F .647<7874206f66207468652073796d626f6c20
+74686174206973206173736f636961746564207769746820746865>-.15 F/F1 10
+/Times-Italic at 0 SF<6f66>3.147 E<66736574>-.18 E F0 3.147<2e54>C .647
+<68652073796d626f6c206973206e6f74>-3.147 F 2.084
+<7465726d696e6174656420627920616e>128 108 R 4.584<7963>-.15 G
+<6861726163746572>-4.584 E 4.584<2e49>-.55 G 2.084
+<7473206c656e6774682069732070726f>-4.584 F 2.084
+<766964656420627920746865>-.15 F F1<6c656e677468>4.584 E F0 2.085
+<8c656c642e204e6f7465207468617420697320616c6c6f>4.585 F 2.085
+<776564202862>-.25 F<7574>-.2 E .53<756e776973652920746f20757365206e6f6e
+2d7072696e74696e672063686172616374657273202865>128 120 R -.15<7665>-.25
+G 3.03<6e30>.15 G .53
+<7830302920696e207468652073796d626f6c2e205468697320616c6c6f>-3.03 F .53
+<777320666f72206d756c7469706c6520656e636f64696e6773>-.25 F
+<6f662073796d626f6c206e616d65732e>128 132 Q/F2 10.95/Times-Bold at 0 SF
+<45584954205354>72 148.8 Q -1.04<4154>-.986 G<5553>1.04 E F0<4966>108
+160.8 Q/F3 10/Times-Bold at 0 SF<6c6c766d2d6172>3.742 E F0 1.243
+<73756363656564732c2069742077696c6c2065>3.742 F 1.243
+<786974207769746820302e>-.15 F 3.743<4175>6.243 G 1.243
+<73616765206572726f72>-3.743 F 3.743<2c72>-.4 G 1.243
+<6573756c747320696e20616e2065>-3.743 F 1.243
+<78697420636f6465206f6620312e2041206861726420288c6c652073797374656d>-.15
+F<7479706963616c6c7929206572726f7220726573756c747320696e20616e2065>108
+172.8 Q<78697420636f6465206f6620322e204d697363656c6c616e656f7573206f7220
+756e6b6e6f>-.15 E<776e206572726f727320726573756c7420696e20616e2065>-.25
+E<78697420636f6465206f6620332e>-.15 E F2<53454520414c534f>72 189.6 Q F0
+<6c6c766d2d72616e6c69622c>108 201.6 Q F1<6172>2.5 E F0<283129>1.666 E F2
+-.548<4155>72 218.4 S<54484f5253>.548 E F0
+<4d61696e7461696e656420627920746865>108 230.4 Q/F4 9/Times-Roman at 0 SF
+<4c4c>2.5 E<564d>-.9 E F0 -.7<5465>2.5 G
+<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E<672f3e292e>-.18 E 188.72
+<43565320323031312d30342d3038>72 768 R<35>205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-as.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-as.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-as.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-as.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,286 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Courier
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 1
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Courier
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Courier at 0 ENC0/Courier RE/Times-Italic at 0 ENC0/Times-Italic RE
+/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 127.18<564d2d4153283129204c4c>-1 F
+<564d20436f6d6d616e64204775696465>-1 E<4c4c>129.68 E<564d2d4153283129>-1
+E/F1 10.95/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0
+<6c6c766dad617320ad204c4c>108 96 Q<564d20617373656d626c6572>-1 E F1
+<53594e4f50534953>72 112.8 Q/F2 10/Times-Bold at 0 SF<6c6c766d2d6173>108
+124.8 Q F0<5b>2.5 E/F3 10/Times-Italic at 0 SF<6f7074696f6e73>A F0 2.5
+<5d5b>C F3<8c6c656e616d65>-2.5 E F0<5d>A F1<4445534352495054494f4e>72
+141.6 Q F2<6c6c766d2d6173>108 153.6 Q F0 2.229<697320746865>4.729 F/F4 9
+/Times-Roman at 0 SF<4c4c>4.729 E<564d>-.9 E F0<617373656d626c6572>4.729 E
+7.229<2e49>-.55 G 4.729<7472>-7.229 G 2.229<656164732061208c6c6520636f6e
+7461696e696e672068756d616e2d7265616461626c65>-4.729 F F4<4c4c>4.729 E
+<564d>-.9 E F0 2.228<617373656d626c79206c616e67756167652c>4.729 F
+<7472616e736c6174657320697420746f>108 165.6 Q F4<4c4c>2.5 E<564d>-.9 E
+F0<626974636f64652c20616e64207772697465732074686520726573756c7420696e74
+6f2061208c6c65206f7220746f207374616e64617264206f75747075742e>2.5 E<4966>
+108 182.4 Q F3<8c6c656e616d65>2.5 E F0<6973206f6d6974746564206f72206973>
+2.5 E/F5 10/Courier at 0 SF<ad>2.5 E F0 2.5<2c74>C<68656e>-2.5 E F2
+<6c6c766d2d6173>2.5 E F0<72656164732069747320696e7075742066726f6d207374
+616e6461726420696e7075742e>2.5 E .141<496620616e206f7574707574208c6c6520
+6973206e6f742073706563698c6564207769746820746865>108 199.2 R F2<ad6f>
+2.641 E F0 .141<6f7074696f6e2c207468656e>2.641 F F2<6c6c766d2d6173>2.641
+E F0 .142<73656e647320697473206f757470757420746f2061208c6c65206f72207374
+616e64617264206f7574707574>2.642 F<627920666f6c6c6f>108 211.2 Q
+<77696e672074686573652072756c65733a>-.25 E 16.5<8349>108 228 S 2.5<6674>
+-16.5 G<686520696e707574206973207374616e6461726420696e7075742c207468656e
+20746865206f7574707574206973207374616e64617264206f75747075742e>-2.5 E
+16.5<8349>108 244.8 S 2.803<6674>-16.5 G .303
+<686520696e7075742069732061208c6c65207468617420656e64732077697468>-2.803
+F F5<2e6c6c>2.802 E F0 2.802<2c74>C .302<68656e20746865206f757470757420
+8c6c65206973206f66207468652073616d65206e616d652c2065>-2.802 F .302
+<786365707420746861742074686520737566>-.15 F<8c78>-.25 E
+<6973206368616e67656420746f>128 256.8 Q F5<2e6263>2.5 E F0<2e>A 16.5
+<8349>108 273.6 S 2.565<6674>-16.5 G .065<686520696e7075742069732061208c
+6c65207468617420646f6573206e6f7420656e64207769746820746865>-2.565 F F5
+<2e6c6c>2.565 E F0<737566>2.565 E .065<8c782c207468656e20746865206f7574
+707574208c6c6520686173207468652073616d65206e616d6520617320746865>-.25 F
+<696e707574208c6c652c2065>128 285.6 Q<7863657074207468617420746865>-.15
+E F5<2e6263>2.5 E F0<737566>2.5 E<8c7820697320617070656e6465642e>-.25 E
+F1<4f5054494f4e53>72 302.4 Q F2<ad66>108 314.4 Q F0 1.042
+<456e61626c652062696e617279206f7574707574206f6e207465726d696e616c732e>
+10.97 F<4e6f726d616c6c79>6.042 E<2c>-.65 E F2<6c6c766d2d6173>3.541 E F0
+1.041<77696c6c2072656675736520746f207772697465207261>3.541 F 3.541<7762>
+-.15 G 1.041<6974636f6465206f757470757420696620746865>-3.541 F .798
+<6f75747075742073747265616d2069732061207465726d696e616c2e2057>128 326.4
+R .799<6974682074686973206f7074696f6e2c>-.4 F F2<6c6c766d2d6173>3.299 E
+F0 .799<77696c6c207772697465207261>3.299 F 3.299<7762>-.15 G .799
+<6974636f6465207265>-3.299 F -.05<6761>-.15 G .799
+<72646c657373206f6620746865206f7574707574>.05 F<6465>128 338.4 Q
+<766963652e>-.25 E F2<ad68656c70>108 355.2 Q F0<5072696e7420612073756d6d
+617279206f6620636f6d6d616e64206c696e65206f7074696f6e732e>128 367.2 Q F2
+<ad6f>108 384 Q F3<8c6c656e616d65>2.5 E F0
+<5370656369667920746865206f7574707574208c6c65206e616d652e>128 396 Q
+<4966>5 E F3<8c6c656e616d65>2.5 E F0<6973>2.5 E F5<ad>2.5 E F0 2.5<2c74>
+C<68656e>-2.5 E F2<6c6c766d2d6173>2.5 E F0<73656e647320697473206f757470
+757420746f207374616e64617264206f75747075742e>2.5 E F1<45584954205354>72
+412.8 Q -1.04<4154>-.986 G<5553>1.04 E F0<4966>108 424.8 Q F2
+<6c6c766d2d6173>2.5 E F0<73756363656564732c2069742077696c6c2065>2.5 E
+<786974207769746820302e>-.15 E<4f74686572776973652c20696620616e20657272
+6f72206f63637572732c2069742077696c6c2065>5 E
+<78697420776974682061206e6f6e2d7a65726f2076>-.15 E<616c75652e>-.25 E F1
+<53454520414c534f>72 441.6 Q F0<6c6c766d2d6469732c206763636173>108 453.6
+Q F1 -.548<4155>72 470.4 S<54484f5253>.548 E F0
+<4d61696e7461696e656420627920746865>108 482.4 Q F4<4c4c>2.5 E<564d>-.9 E
+F0 -.7<5465>2.5 G<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E
+<672f3e292e>-.18 E 188.72<43565320323031312d30342d3038>72 768 R<31>
+205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-bcanalyzer.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-bcanalyzer.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-bcanalyzer.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-bcanalyzer.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,582 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Courier
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 4
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Courier
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Courier at 0 ENC0/Courier RE/Times-Italic at 0 ENC0/Times-Italic RE
+/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q<564d2d4243414e>-1 E<414c>-.35 E
+74.09<595a4552283129204c4c>-1 F<564d20436f6d6d616e64204775696465>-1 E
+<4c4c>76.59 E<564d2d4243414e>-1 E<414c>-.35 E<595a4552283129>-1 E/F1
+10.95/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0
+<6c6c766dad6263616e616c797a657220ad204c4c>108 96 Q
+<564d20626974636f646520616e616c797a6572>-1 E F1<53594e4f50534953>72
+112.8 Q/F2 10/Times-Bold at 0 SF<6c6c766d2d6263616e616c797a6572>108 124.8 Q
+F0<5b>2.5 E/F3 10/Times-Italic at 0 SF<6f7074696f6e73>A F0 2.5<5d5b>C F3
+<8c6c656e616d65>-2.5 E F0<5d>A F1<4445534352495054494f4e>72 141.6 Q F0
+<546865>108 153.6 Q F2<6c6c766d2d6263616e616c797a6572>3.184 E F0 .683<63
+6f6d6d616e64206973206120736d616c6c207574696c69747920666f7220616e616c797a
+696e6720626974636f6465208c6c65732e>3.184 F .683
+<54686520746f6f6c207265616473206120626974636f6465208c6c65>5.683 F .037
+<28737563682061732067656e657261746564207769746820746865>108 165.6 R F2
+<6c6c766d2d6173>2.538 E F0 .038<746f6f6c2920616e642070726f64756365732061
+20737461746973746963616c207265706f7274206f6e2074686520636f6e74656e747320
+6f662074686520626974636f6465208c6c652e>2.538 F .041
+<54686520746f6f6c2063616e20616c736f2064756d702061206c6f>108 177.6 R
+2.541<776c>-.25 G -2.15 -.25<65762065>-2.541 H 2.541<6c62>.25 G .041
+<75742068756d616e207265616461626c652076>-2.741 F .041
+<657273696f6e206f662074686520626974636f6465208c6c652e>-.15 F .041
+<5468697320746f6f6c2069732070726f6261626c79206e6f74>5.041 F .452
+<6f66206d75636820696e746572657374206f72207574696c6974792065>108 189.6 R
+.452<786365707420666f722074686f73652077>-.15 F .453<6f726b696e6720646972
+6563746c7920776974682074686520626974636f6465208c6c6520666f726d61742e204d
+6f7374>-.1 F/F4 9/Times-Roman at 0 SF<4c4c>2.953 E<564d>-.9 E F0
+<7573657273>2.953 E
+<63616e206a7573742069676e6f7265207468697320746f6f6c2e>108 201.6 Q<4966>
+108 218.4 Q F3<8c6c656e616d65>3.144 E F0 .644
+<6973206f6d6974746564206f72206973>3.144 F/F5 10/Courier at 0 SF<ad>3.144 E
+F0 3.144<2c74>C<68656e>-3.144 E F2<6c6c766d2d6263616e616c797a6572>3.144
+E F0 .644<72656164732069747320696e7075742066726f6d207374616e646172642069
+6e7075742e20546869732069732075736566756c20666f72>3.144 F
+<636f6d62696e696e672074686520746f6f6c20696e746f206120706970656c696e652e>
+108 230.4 Q<4f7574707574206973207772697474656e20746f20746865207374616e64
+617264206f75747075742e>5 E F1<4f5054494f4e53>72 247.2 Q F2
+<ad6e6f64657461696c73>108 259.2 Q F0<436175736573>128 271.2 Q F2
+<6c6c766d2d6263616e616c797a6572>3.789 E F0 1.289<746f206162627265>3.789
+F 1.289<766961746520697473206f75747075742062792077726974696e67206f757420
+6f6e6c792061206d6f64756c65206c65>-.25 F -.15<7665>-.25 G 3.79<6c73>.15 G
+<756d6d617279>-3.79 E 3.79<2e54>-.65 G<6865>-3.79 E
+<64657461696c7320666f7220696e6469>128 283.2 Q
+<76696475616c2066756e6374696f6e7320617265206e6f7420646973706c617965642e>
+-.25 E F2<ad64756d70>108 300 Q F0<436175736573>128 312 Q F2
+<6c6c766d2d6263616e616c797a6572>2.825 E F0 .324<746f2064756d702074686520
+626974636f646520696e20612068756d616e207265616461626c6520666f726d61742e20
+5468697320666f726d6174206973207369676e698c63616e746c79>2.825 F<646966>
+128 324 Q<666572656e742066726f6d>-.25 E F4<4c4c>2.5 E<564d>-.9 E F0
+<617373656d626c7920616e642070726f>2.5 E<76696465732064657461696c73206162
+6f75742074686520656e636f64696e67206f662074686520626974636f6465208c6c652e>
+-.15 E F2<ad76>108 340.8 Q<6572696679>-.1 E F0<436175736573>128 352.8 Q
+F2<6c6c766d2d6263616e616c797a6572>3.193 E F0 .693<746f2076>3.193 F .694<
+657269667920746865206d6f64756c652070726f64756365642062792072656164696e67
+2074686520626974636f64652e205468697320656e7375726573207468617420746865>
+-.15 F<737461746973746963732067656e65726174656420617265206261736564206f
+6e206120636f6e73697374656e74206d6f64756c652e>128 364.8 Q F2<ad68656c70>
+108 381.6 Q F0<5072696e7420612073756d6d617279206f6620636f6d6d616e64206c
+696e65206f7074696f6e732e>128 393.6 Q F1<45584954205354>72 410.4 Q -1.04
+<4154>-.986 G<5553>1.04 E F0<4966>108 422.4 Q F2
+<6c6c766d2d6263616e616c797a6572>2.987 E F0 .487
+<73756363656564732c2069742077696c6c2065>2.987 F .487
+<786974207769746820302e>-.15 F .487<4f74686572776973652c20696620616e2065
+72726f72206f63637572732c2069742077696c6c2065>5.487 F .486
+<78697420776974682061206e6f6e2d7a65726f>-.15 F -.25<7661>108 434.4 S
+<6c75652c20757375616c6c7920312e>.25 E F1<53554d4d4152>72 451.2 Q 2.738
+<594f>-.383 G<555450555420444546494e4954494f4e53>-2.738 E F0
+<54686520666f6c6c6f>108 463.2 Q<77696e67206974656d732061726520616c>-.25
+E -.1<7761>-.1 G
+<7973207072696e746564206279206c6c766d2d6263616e616c797a6572>.1 E 2.5
+<2e54>-.55 G<6865>-2.5 E 2.5<7963>-.15 G
+<6f6d7072697a65207468652073756d6d617279206f75747075742e>-2.5 E F2
+<426974636f646520416e616c79736973204f66204d6f64756c65>108 480 Q F0
+<54686973206a7573742070726f>128 492 Q<766964657320746865206e616d65206f66
+20746865206d6f64756c6520666f7220776869636820626974636f646520616e616c7973
+6973206973206265696e672067656e6572617465642e>-.15 E F2
+<426974636f64652056>108 508.8 Q<657273696f6e204e756d626572>-1 E F0
+<54686520626974636f64652076>128 520.8 Q<657273696f6e20286e6f74>-.15 E F4
+<4c4c>2.5 E<564d>-.9 E F0 -.15<7665>2.5 G<7273696f6e29206f6620746865208c
+6c6520726561642062792074686520616e616c797a6572>.15 E<2e>-.55 E F2
+<46696c652053697a65>108 537.6 Q F0<5468652073697a652c20696e206279746573
+2c206f662074686520656e7469726520626974636f6465208c6c652e>128 549.6 Q F2
+<4d6f64756c65204279746573>108 566.4 Q F0<5468652073697a652c20696e206279
+7465732c206f6620746865206d6f64756c6520626c6f636b2e2050657263656e74616765
+2069732072656c617469>128 578.4 Q .3 -.15<76652074>-.25 H 2.5<6f46>.15 G
+<696c652053697a652e>-2.5 E F2<46756e6374696f6e204279746573>108 595.2 Q
+F0<5468652073697a652c20696e2062797465732c206f6620616c6c207468652066756e
+6374696f6e20626c6f636b732e2050657263656e746167652069732072656c617469>128
+607.2 Q .3 -.15<76652074>-.25 H 2.5<6f46>.15 G<696c652053697a652e>-2.5 E
+F2<476c6f62616c2054>108 624 Q<79706573204279746573>-.74 E F0 .44
+<5468652073697a652c20696e2062797465732c206f662074686520476c6f62616c2054>
+128 636 R .44
+<7970657320506f6f6c2e2050657263656e746167652069732072656c617469>-.8 F
+.74 -.15<76652074>-.25 H 2.94<6f46>.15 G .44
+<696c652053697a652e2054686973206973207468652073697a65206f6620746865>
+-2.94 F<64658c6e6974696f6e73206f6620616c6c20747970657320696e207468652062
+6974636f6465208c6c652e>128 648 Q F2<436f6e7374616e742050>108 664.8 Q
+<6f6f6c204279746573>-.2 E F0<5468652073697a652c20696e2062797465732c206f
+662074686520436f6e7374616e7420506f6f6c20426c6f636b732050657263656e746167
+652069732072656c617469>128 676.8 Q .3 -.15<76652074>-.25 H 2.5<6f46>.15
+G<696c652053697a652e>-2.5 E F2<4d6f64756c6520476c6f62616c73204279746573>
+108 693.6 Q F0 1.108
+<5468732073697a652c20696e2062797465732c206f662074686520476c6f62616c2056>
+128 705.6 R 1.108<61726961626c652044658c6e6974696f6e7320616e642074686569
+7220696e697469616c697a6572732e>-1.11 F 1.108
+<50657263656e746167652069732072656c617469>6.108 F 1.408 -.15<76652074>
+-.25 H<6f>.15 E<46696c652053697a652e>128 717.6 Q 188.72
+<43565320323031312d30342d3135>72 768 R<31>205.67 E 0 Cg EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q<564d2d4243414e>-1 E<414c>-.35 E
+74.09<595a4552283129204c4c>-1 F<564d20436f6d6d616e64204775696465>-1 E
+<4c4c>76.59 E<564d2d4243414e>-1 E<414c>-.35 E<595a4552283129>-1 E/F1 10
+/Times-Bold at 0 SF<496e737472756374696f6e204c697374204279746573>108 84 Q
+F0 .953<5468652073697a652c20696e2062797465732c206f6620616c6c207468652069
+6e737472756374696f6e206c6973747320696e20616c6c207468652066756e6374696f6e
+732e>128 96 R .953<50657263656e746167652069732072656c617469>5.953 F
+1.253 -.15<76652074>-.25 H 3.453<6f46>.15 G .953<696c652053697a652e>
+-3.453 F<4e6f7465207468617420746869732076>128 108 Q<616c756520697320616c
+736f20696e636c7564656420696e207468652046756e6374696f6e2042797465732e>
+-.25 E F1<436f6d70616374696f6e2054>108 124.8 Q<61626c65204279746573>-.92
+E F0 .337<5468652073697a652c20696e2062797465732c206f6620616c6c2074686520
+636f6d70616374696f6e207461626c657320696e20616c6c207468652066756e6374696f
+6e732e>128 136.8 R .336<50657263656e746167652069732072656c617469>5.336 F
+.636 -.15<76652074>-.25 H 2.836<6f46>.15 G .336<696c652053697a652e>
+-2.836 F<4e6f7465207468617420746869732076>128 148.8 Q<616c75652069732061
+6c736f20696e636c7564656420696e207468652046756e6374696f6e2042797465732e>
+-.25 E F1<53796d626f6c2054>108 165.6 Q<61626c65204279746573>-.92 E F0
+.201<5468652073697a652c20696e2062797465732c206f6620616c6c20746865207379
+6d626f6c207461626c657320696e20616c6c207468652066756e6374696f6e732e205065
+7263656e746167652069732072656c617469>128 177.6 R .502 -.15<76652074>-.25
+H 2.702<6f46>.15 G .202<696c652053697a652e204e6f7465>-2.702 F
+<7468617420746869732076>128 189.6 Q<616c756520697320616c736f20696e636c75
+64656420696e207468652046756e6374696f6e2042797465732e>-.25 E F1
+<446570656e64656e74204c6962726172696573204279746573>108 206.4 Q F0 .63<
+5468652073697a652c20696e2062797465732c206f6620746865206c697374206f662064
+6570656e64656e74206c696272617269657320696e20746865206d6f64756c652e205065
+7263656e746167652069732072656c617469>128 218.4 R .93 -.15<76652074>-.25
+H 3.13<6f46>.15 G .63<696c652053697a652e>-3.13 F
+<4e6f7465207468617420746869732076>128 230.4 Q<616c756520697320616c736f20
+696e636c7564656420696e20746865204d6f64756c6520476c6f62616c2042797465732e>
+-.25 E F1<4e756d626572204f6620426974636f646520426c6f636b73>108 247.2 Q
+F0<54686520746f74616c206e756d626572206f6620626c6f636b73206f6620616e>128
+259.2 Q 2.5<796b>-.15 G<696e6420696e2074686520626974636f6465208c6c652e>
+-2.5 E F1<4e756d626572204f662046756e6374696f6e73>108 276 Q F0<5468652074
+6f74616c206e756d626572206f662066756e6374696f6e2064658c6e6974696f6e732069
+6e2074686520626974636f6465208c6c652e>128 288 Q F1
+<4e756d626572204f662054>108 304.8 Q<79706573>-.74 E F0<54686520746f7461
+6c206e756d626572206f662074797065732064658c6e656420696e2074686520476c6f62
+616c2054>128 316.8 Q<7970657320506f6f6c2e>-.8 E F1
+<4e756d626572204f6620436f6e7374616e7473>108 333.6 Q F0<54686520746f7461
+6c206e756d626572206f6620636f6e7374616e747320286f6620616e>128 345.6 Q 2.5
+<7974>-.15 G
+<797065292064658c6e656420696e2074686520436f6e7374616e7420506f6f6c2e>-2.5
+E F1<4e756d626572204f6620426173696320426c6f636b73>108 362.4 Q F0<546865
+20746f74616c206e756d626572206f6620626173696320626c6f636b732064658c6e6564
+20696e20616c6c2066756e6374696f6e7320696e2074686520626974636f6465208c6c65
+2e>128 374.4 Q F1<4e756d626572204f6620496e737472756374696f6e73>108 391.2
+Q F0<54686520746f74616c206e756d626572206f6620696e737472756374696f6e7320
+64658c6e656420696e20616c6c2066756e6374696f6e7320696e2074686520626974636f
+6465208c6c652e>128 403.2 Q F1
+<4e756d626572204f66204c6f6e6720496e737472756374696f6e73>108 420 Q F0
+.387<54686520746f74616c206e756d626572206f66206c6f6e6720696e737472756374
+696f6e732064658c6e656420696e20616c6c2066756e6374696f6e7320696e2074686520
+626974636f6465208c6c652e204c6f6e6720696e737472756374696f6e7320617265>128
+432 R .742<74686f73652074616b696e672067726561746572207468616e2034206279
+7465732e2054>128 444 R .741<79706963616c6c79206c6f6e6720696e737472756374
+696f6e732061726520476574456c656d656e745074722077697468207365>-.8 F -.15
+<7665>-.25 G .741<72616c20696e64696365732c>.15 F/F2 9/Times-Roman at 0 SF
+<504849>128 456 Q F0<6e6f6465732c20616e642063616c6c7320746f2066756e6374
+696f6e732077697468206c6172>2.5 E<6765206e756d62657273206f66206172>-.18 E
+<67756d656e74732e>-.18 E F1<4e756d626572204f66204f706572616e6473>108
+472.8 Q F0<54686520746f74616c206e756d626572206f66206f706572616e64732075
+73656420696e20616c6c20696e737472756374696f6e7320696e2074686520626974636f
+6465208c6c652e>128 484.8 Q F1
+<4e756d626572204f6620436f6d70616374696f6e2054>108 501.6 Q<61626c6573>
+-.92 E F0<54686520746f74616c206e756d626572206f6620636f6d70616374696f6e20
+7461626c657320696e20616c6c2066756e6374696f6e7320696e2074686520626974636f
+6465208c6c652e>128 513.6 Q F1<4e756d626572204f662053796d626f6c2054>108
+530.4 Q<61626c6573>-.92 E F0<54686520746f74616c206e756d626572206f662073
+796d626f6c207461626c657320696e20616c6c2066756e6374696f6e7320696e20746865
+20626974636f6465208c6c652e>128 542.4 Q F1
+<4e756d626572204f6620446570656e64656e74204c696273>108 559.2 Q F0<546865
+20746f74616c206e756d626572206f6620646570656e64656e74206c6962726172696573
+20666f756e6420696e2074686520626974636f6465208c6c652e>128 571.2 Q F1 -.92
+<546f>108 588 S<74616c20496e737472756374696f6e2053697a65>.92 E F0<546865
+20746f74616c2073697a65206f662074686520696e737472756374696f6e7320696e2061
+6c6c2066756e6374696f6e7320696e2074686520626974636f6465208c6c652e>128 600
+Q F1 -.6 -1<41762065>108 616.8 T
+<7261676520496e737472756374696f6e2053697a65>1 E F0 1.711<5468652061>128
+628.8 R -.15<7665>-.2 G 1.711<72616765206e756d626572206f6620627974657320
+70657220696e737472756374696f6e206163726f737320616c6c2066756e6374696f6e73
+20696e2074686520626974636f6465208c6c652e20546869732076>.15 F 1.712
+<616c7565206973>-.25 F<636f6d7075746564206279206469>128 640.8 Q
+<766964696e672054>-.25 E<6f74616c20496e737472756374696f6e2053697a652062
+79204e756d626572204f6620496e737472756374696f6e732e>-.8 E F1
+<4d6178696d756d2054>108 657.6 Q<79706520536c6f74204e756d626572>-.74 E F0
+1.653<546865206d6178696d756d2076>128 669.6 R 1.653
+<616c7565207573656420666f722061207479706527>-.25 F 4.153<7373>-.55 G
+1.653<6c6f74206e756d626572>-4.153 F 4.152<2e4c>-.55 G<6172>-4.152 E
+1.652<67657220736c6f74206e756d6265722076>-.18 F 1.652
+<616c7565732074616b>-.25 F 4.152<656d>-.1 G 1.652
+<6f726520627974657320746f>-4.152 F<656e636f64652e>128 681.6 Q F1
+<4d6178696d756d2056>108 698.4 Q<616c756520536c6f74204e756d626572>-.92 E
+F0 1.39<546865206d6178696d756d2076>128 710.4 R 1.39
+<616c7565207573656420666f7220612076>-.25 F<616c756527>-.25 E 3.891<7373>
+-.55 G 1.391<6c6f74206e756d626572>-3.891 F 3.891<2e4c>-.55 G<6172>-3.891
+E 1.391<67657220736c6f74206e756d6265722076>-.18 F 1.391
+<616c7565732074616b>-.25 F 3.891<656d>-.1 G 1.391
+<6f726520627974657320746f>-3.891 F<656e636f64652e>128 722.4 Q 188.72
+<43565320323031312d30342d3135>72 768 R<32>205.67 E 0 Cg EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q<564d2d4243414e>-1 E<414c>-.35 E
+74.09<595a4552283129204c4c>-1 F<564d20436f6d6d616e64204775696465>-1 E
+<4c4c>76.59 E<564d2d4243414e>-1 E<414c>-.35 E<595a4552283129>-1 E/F1 10
+/Times-Bold at 0 SF<42797465732050>108 84 Q<65722056>-.2 E<616c7565>-.92 E
+F0 .002<5468652061>128 96 R -.15<7665>-.2 G .001
+<726167652073697a65206f6620612056>.15 F .001
+<616c75652064658c6e6974696f6e20286f6620616e>-1.11 F 2.501<7974>-.15 G
+.001<797065292e205468697320697320636f6d7075746564206279206469>-2.501 F
+.001<766964696e672046696c652053697a652062792074686520746f74616c>-.25 F
+<6e756d626572206f662076>128 108 Q<616c756573206f6620616e>-.25 E 2.5
+<7974>-.15 G<7970652e>-2.5 E F1<42797465732050>108 124.8 Q
+<657220476c6f62616c>-.2 E F0<5468652061>128 136.8 Q -.15<7665>-.2 G<7261
+67652073697a65206f66206120676c6f62616c2064658c6e6974696f6e2028636f6e7374
+616e747320616e6420676c6f62616c2076>.15 E<61726961626c6573292e>-.25 E F1
+<42797465732050>108 153.6 Q<65722046756e6374696f6e>-.2 E F0 .397
+<5468652061>128 165.6 R -.15<7665>-.2 G .397<72616765206e756d626572206f
+66206279746573207065722066756e6374696f6e2064658c6e6974696f6e2e2054686973
+20697320636f6d7075746564206279206469>.15 F .398
+<766964696e672046756e6374696f6e204279746573206279>-.25 F
+<4e756d626572204f662046756e6374696f6e732e>128 177.6 Q F1 2.5<236f>108
+194.4 S<66>-2.5 E/F2 9/Times-Bold at 0 SF<564252>2.5 E F1
+<3332ad62697420496e746567657273>2.5 E F0
+<54686520746f74616c206e756d626572206f66203332ad62697420696e7465>128
+206.4 Q<6765727320656e636f646564207573696e67207468652056>-.15 E
+<61726961626c6520426974205261746520656e636f64696e6720736368656d652e>
+-1.11 E F1 2.5<236f>108 223.2 S<66>-2.5 E F2<564252>2.5 E F1
+<3634ad62697420496e746567657273>2.5 E F0
+<54686520746f74616c206e756d626572206f66203634ad62697420696e7465>128
+235.2 Q<6765727320656e636f646564207573696e67207468652056>-.15 E
+<61726961626c6520426974205261746520656e636f64696e6720736368656d652e>
+-1.11 E F1 2.5<236f>108 252 S<66>-2.5 E F2<564252>2.5 E F1<436f6d7072>
+2.5 E<6573736564204279746573>-.18 E F0 .625<54686520746f74616c206e756d62
+6572206f6620627974657320636f6e73756d656420627920746865203332ad6269742061
+6e64203634ad62697420696e7465>128 264 R .625
+<67657273207468617420757365207468652056>-.15 F .625
+<61726961626c65204269742052617465>-1.11 F
+<656e636f64696e6720736368656d652e>128 276 Q F1 2.5<236f>108 292.8 S<66>
+-2.5 E F2<564252>2.5 E F1<457870616e646564204279746573>2.5 E F0 .367
+<54686520746f74616c206e756d626572206f6620627974657320746861742077>128
+304.8 R .367<6f756c64206861>-.1 F .667 -.15<76652062>-.2 H .367<65656e20
+636f6e73756d656420627920746865203332ad62697420616e64203634ad62697420696e
+7465>.15 F .367<676572732068616420746865>-.15 F<79>-.15 E
+<6e6f74206265656e20636f6d707265737365642077697468207468652056>128 316.8
+Q<61726961626c6520426974205261676520656e636f64696e6720736368656d652e>
+-1.11 E F1<4279746573205361>108 333.6 Q -.1<7665>-.25 G 2.5<6457>.1 G
+<697468>-2.68 E F2<564252>2.5 E F0 .707
+<54686520746f74616c206e756d626572206f66206279746573207361>128 345.6 R
+-.15<7665>-.2 G 3.207<6462>.15 G 3.207<7975>-3.207 G .707
+<73696e67207468652056>-3.207 F .707
+<61726961626c6520426974205261746520656e636f64696e6720736368656d652e>
+-1.11 F .706<5468652070657263656e74616765206973>5.707 F<72656c617469>128
+357.6 Q .3 -.15<76652074>-.25 H 2.5<6f236f>.15 G<66>-2.5 E/F3 9
+/Times-Roman at 0 SF<564252>2.5 E F0<457870616e6465642042797465732e>2.5 E
+/F4 10.95/Times-Bold at 0 SF<444554>72 374.4 Q
+<41494c4544204f555450555420444546494e4954494f4e53>-.986 E F0 .689
+<54686520666f6c6c6f>108 386.4 R .689<77696e672064658c6e6974696f6e73206f
+63637572206f6e6c792069662074686520ad6e6f64657461696c73206f7074696f6e2077>
+-.25 F .689<6173206e6f74206769>-.1 F -.15<7665>-.25 G 3.19<6e2e20546865>
+.15 F .69<64657461696c6564206f75747075742070726f>3.19 F<7669646573>-.15
+E<6164646974696f6e616c20696e666f726d6174696f6e206f6e206120706572>108
+398.4 Q<2d66756e6374696f6e2062617369732e>-.2 E F1 -.74<5479>108 415.2 S
+<7065>.74 E F0
+<5468652074797065207369676e6174757265206f66207468652066756e6374696f6e2e>
+128 427.2 Q F1<427974652053697a65>108 444 Q F0<54686520746f74616c206e75
+6d626572206f6620627974657320696e207468652066756e6374696f6e27>128 456 Q
+2.5<7362>-.55 G<6c6f636b2e>-2.5 E F1<426173696320426c6f636b73>108 472.8
+Q F0<546865206e756d626572206f6620626173696320626c6f636b732064658c6e6564
+206279207468652066756e6374696f6e2e>128 484.8 Q F1
+<496e737472756374696f6e73>108 501.6 Q F0<546865206e756d626572206f662069
+6e737472756374696f6e732064658c6e6564206279207468652066756e6374696f6e2e>
+128 513.6 Q F1<4c6f6e6720496e737472756374696f6e73>108 530.4 Q F0<546865
+206e756d626572206f6620696e737472756374696f6e73207573696e6720746865206c6f
+6e6720696e737472756374696f6e20666f726d617420696e207468652066756e6374696f
+6e2e>128 542.4 Q F1<4f706572616e6473>108 559.2 Q F0<546865206e756d626572
+206f66206f706572616e6473207573656420627920616c6c20696e737472756374696f6e
+7320696e207468652066756e6374696f6e2e>128 571.2 Q F1
+<496e737472756374696f6e2053697a65>108 588 Q F0<546865206e756d626572206f
+6620627974657320636f6e73756d656420627920696e737472756374696f6e7320696e20
+7468652066756e6374696f6e2e>128 600 Q F1 -.6 -1<41762065>108 616.8 T
+<7261676520496e737472756374696f6e2053697a65>1 E F0 .322<5468652061>128
+628.8 R -.15<7665>-.2 G .322<72616765206e756d626572206f6620627974657320
+636f6e73756d65642062792074686520696e737472756374696f6e7320696e2074686520
+66756e6374696f6e2e20546869732076>.15 F .321
+<616c756520697320636f6d7075746564206279>-.25 F<6469>128 640.8 Q<76696469
+6e6720496e737472756374696f6e2053697a6520627920496e737472756374696f6e732e>
+-.25 E F1<42797465732050>108 657.6 Q<657220496e737472756374696f6e>-.2 E
+F0 .337<5468652061>128 669.6 R -.15<7665>-.2 G .337<72616765206e756d6265
+72206f662062797465732075736564206279207468652066756e6374696f6e2070657220
+696e737472756374696f6e2e20546869732076>.15 F .338
+<616c756520697320636f6d7075746564206279206469>-.25 F<766964696e67>-.25 E
+1.137<427974652053697a6520627920496e737472756374696f6e732e204e6f74652074
+6861742074686973206973206e6f74207468652073616d652061732041>128 681.6 R
+-.15<7665>-.74 G 1.136<7261676520496e737472756374696f6e2053697a652e2049
+7420636f6d70757465732061>.15 F<6e756d6265722072656c617469>128 693.6 Q .3
+-.15<76652074>-.25 H 2.5<6f74>.15 G<686520746f74616c2066756e6374696f6e20
+73697a65206e6f74206a757374207468652073697a65206f662074686520696e73747275
+6374696f6e206c6973742e>-2.5 E 188.72<43565320323031312d30342d3135>72 768
+R<33>205.67 E 0 Cg EP
+%%Page: 4 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q<564d2d4243414e>-1 E<414c>-.35 E
+74.09<595a4552283129204c4c>-1 F<564d20436f6d6d616e64204775696465>-1 E
+<4c4c>76.59 E<564d2d4243414e>-1 E<414c>-.35 E<595a4552283129>-1 E/F1 10
+/Times-Bold at 0 SF<4e756d626572206f66>108 84 Q/F2 9/Times-Bold at 0 SF
+<564252>2.5 E F1<3332ad62697420496e746567657273>2.5 E F0
+<54686520746f74616c206e756d626572206f66203332ad62697420696e7465>128 96 Q
+<6765727320666f756e6420696e20746869732066756e6374696f6e2028666f7220616e>
+-.15 E 2.5<7975>-.15 G<7365292e>-2.5 E F1<4e756d626572206f66>108 112.8 Q
+F2<564252>2.5 E F1<3634ad62697420496e746567657273>2.5 E F0
+<54686520746f74616c206e756d626572206f66203634ad62697420696e7465>128
+124.8 Q
+<6765727320666f756e6420696e20746869732066756e6374696f6e2028666f7220616e>
+-.15 E 2.5<7975>-.15 G<7365292e>-2.5 E F1<4e756d626572206f66>108 141.6 Q
+F2<564252>2.5 E F1<436f6d7072>2.5 E<6573736564204279746573>-.18 E F0
+1.115<54686520746f74616c206e756d626572206f6620627974657320696e2074686973
+2066756e6374696f6e20636f6e73756d656420627920746865203332ad62697420616e64
+203634ad62697420696e7465>128 153.6 R 1.115
+<6765727320746861742075736520746865>-.15 F -1.11<5661>128 165.6 S
+<726961626c6520426974205261746520656e636f64696e6720736368656d652e>1.11 E
+F1<4e756d626572206f66>108 182.4 Q F2<564252>2.5 E F1
+<457870616e646564204279746573>2.5 E F0 .806<54686520746f74616c206e756d62
+6572206f6620627974657320696e20746869732066756e6374696f6e20746861742077>
+128 194.4 R .806<6f756c64206861>-.1 F 1.106 -.15<76652062>-.2 H .806<65
+656e20636f6e73756d656420627920746865203332ad62697420616e64203634ad626974>
+.15 F<696e7465>128 206.4 Q<676572732068616420746865>-.15 E 2.5<796e>-.15
+G<6f74206265656e20636f6d707265737365642077697468207468652056>-2.5 E
+<61726961626c6520426974205261746520656e636f64696e6720736368656d652e>
+-1.11 E F1<4279746573205361>108 223.2 Q -.1<7665>-.25 G 2.5<6457>.1 G
+<697468>-2.68 E F2<564252>2.5 E F0 .337
+<54686520746f74616c206e756d626572206f66206279746573207361>128 235.2 R
+-.15<7665>-.2 G 2.837<6469>.15 G 2.837<6e74>-2.837 G .337
+<6869732066756e6374696f6e206279207573696e67207468652056>-2.837 F .337<61
+726961626c6520426974205261746520656e636f64696e6720736368656d652e20546865>
+-1.11 F<70657263656e746167652069732072656c617469>128 247.2 Q .3 -.15
+<76652074>-.25 H 2.5<6f236f>.15 G<66>-2.5 E/F3 9/Times-Roman at 0 SF
+<564252>2.5 E F0<457870616e6465642042797465732e>2.5 E/F4 10.95
+/Times-Bold at 0 SF<53454520414c534f>72 264 Q F0
+<6c6c766d2d6469732c203c687474703a2f2f6c6c766d2e6f72>108 276 Q
+<672f646f63732f426974436f646546>-.18 E<6f726d61742e68746d6c3e>-.15 E F4
+-.548<4155>72 292.8 S<54484f5253>.548 E F0
+<4d61696e7461696e656420627920746865>108 304.8 Q F3<4c4c>2.5 E<564d>-.9 E
+F0 -.7<5465>2.5 G<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E
+<672f3e292e>-.18 E 188.72<43565320323031312d30342d3135>72 768 R<34>
+205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-build.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-build.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-build.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-build.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,327 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 1
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic at 0 ENC0/Times-Italic RE/Times-Bold at 0 ENC0/Times-Bold RE
+/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q<564d2d42>-1 E 109.51
+<55494c44283129204c4c>-.1 F<564d20436f6d6d616e64204775696465>-1 E<4c4c>
+112.01 E<564d2d42>-1 E<55494c44283129>-.1 E/F1 10.95/Times-Bold at 0 SF
+-.219<4e41>72 84 S<4d45>.219 E F0<6c6c766dad62>108 96 Q
+<75696c6420ad204c4c>-.2 E
+<564d2050726f6a656374204275696c64205574696c697479>-1 E F1
+<53594e4f50534953>72 112.8 Q/F2 10/Times-Bold at 0 SF<6c6c766d2d62>108
+124.8 Q<75696c64>-.2 E F0<5b>2.5 E/F3 10/Times-Italic at 0 SF
+<6f7074696f6e73>A F0<5d>A F1<4445534352495054494f4e>72 141.6 Q F2
+<6c6c766d2d62>108 153.6 Q<75696c64>-.2 E F0 .788
+<6973206120746f6f6c20666f722077>3.288 F .788<6f726b696e672077697468>-.1
+F/F4 9/Times-Roman at 0 SF<4c4c>3.288 E<564d>-.9 E F0 .788
+<70726f6a6563747320746861742075736520746865204c4c>3.288 F .787
+<564d4275696c642073797374656d20666f722064657363726962696e67207468656972>
+-1 F<636f6d706f6e656e74732e>108 165.6 Q .76<41742068656172742c>108 182.4
+R F2<6c6c766d2d62>3.26 E<75696c64>-.2 E F0 .76
+<697320726573706f6e7369626c6520666f72206c6f6164696e672c2076>3.26 F .76<
+6572696679696e672c20616e64206d616e6970756c6174696e67207468652070726f6a65
+637427>-.15 F 3.26<7363>-.55 G .76<6f6d706f6e656e7420646174612e>-3.26 F
+.932<54686520746f6f6c206973207072696d6172696c792064657369676e656420666f
+722075736520696e20696d706c656d656e74696e672062>108 194.4 R .932<75696c64
+2073797374656d7320616e6420746f6f6c73207768696368206e65656420616363657373
+20746f20746865>-.2 F
+<70726f6a6563742073747275637475726520696e666f726d6174696f6e2e>108 206.4
+Q F1<4f5054494f4e53>72 223.2 Q F2<ad68>108 235.2 Q F0<2c>A F2
+<adad68656c70>2.5 E F0<5072696e74207468652062>128 247.2 Q
+<75696c74696e2070726f6772616d2068656c702e>-.2 E F2<adad736f7572>108 264
+Q<6365ad72>-.18 E<6f6f74>-.18 E F0<3d>A/F5 9/Times-Italic at 0 SF -.963
+-.81<50412054>D<48>.81 E F0 .759<4966206769>128 276 R -.15<7665>-.25 G
+.759<6e2c206c6f6164207468652070726f6a65637420617420746865206769>.15 F
+-.15<7665>-.25 G 3.259<6e73>.15 G .76<6f7572636520726f6f7420706174682e20
+49662074686973206f7074696f6e206973206e6f74206769>-3.259 F -.15<7665>-.25
+G .76<6e2c20746865206c6f636174696f6e206f6620746865>.15 F<70726f6a656374
+20736f75726365732077696c6c20626520696e6665727265642066726f6d20746865206c
+6f636174696f6e206f6620746865>128 288 Q F2<6c6c766d2d62>2.5 E<75696c64>
+-.2 E F0<73637269707420697473656c662e>2.5 E F2<adad7072696e74ad7472>108
+304.8 Q<6565>-.18 E F0<5072696e742074686520636f6d706f6e656e742074726565
+20666f72207468652070726f6a6563742e>128 316.8 Q F2
+<adad7772697465ad6c696272617279ad7461626c65>108 333.6 Q F0 .65
+<5772697465206f7574207468652043>128 345.6 R/F6 8/Times-Roman at 0 SF -1
+<2b2b>-1 -1.2 O F0 .65<667261676d656e742077686963682064658c6e6573207468
+6520636f6d706f6e656e74732c206c696272617279206e616d65732c20616e6420726571
+7569726564206c69627261726965732e2054686973>3.15 1.2 N<43>128 357.6 Q F6
+-1<2b2b>-1 -1.2 O F0 .716<667261676d656e742069732062>3.216 1.2 N .717<75
+696c7420696e746f206c6c766d2d636f6e8c6720696e206f7264657220746f2070726f>
+-.2 F .717<7669646520636c69656e7473207769746820746865206c697374206f6620
+7265717569726564206c696272617269657320666f72>-.15 F
+<61726269747261727920636f6d706f6e656e7420636f6d62696e6174696f6e732e>128
+369.6 Q F2<adad7772697465ad6c6c766d62>108 386.4 Q<75696c64>-.2 E F0 .362
+<5772697465206f7574206e65>128 398.4 R<77>-.25 E F3<4c4c>2.862 E
+<564d4275696c642e747874>-.55 E F0 .361<8c6c6573206261736564206f6e207468
+65206c6f6164656420636f6d706f6e656e74732e20546869732069732075736566756c20
+666f72206175746f2d757067726164696e67>2.862 F .77
+<74686520736368656d61206f6620746865208c6c65732e>128 410.4 R F2
+<6c6c766d2d62>3.27 E<75696c64>-.2 E F0 .77
+<77696c6c2074727920746f2061206c696d697465642065>3.27 F .77
+<7874656e7420746f2070726573657276>-.15 F 3.27<6574>-.15 G .77
+<686520636f6d6d656e74732077686963682077657265>-3.27 F .398<777269747465
+6e20696e20746865206f726967696e616c20736f75726365208c6c652c20616c74686f75
+676820617420746869732074696d65206974206f6e6c792070726573657276>128 422.4
+R .397<657320626c6f636b20636f6d6d656e747320746861742070726563656564>-.15
+F<7468652073656374696f6e206e616d657320696e20746865>128 434.4 Q F3<4c4c>
+2.5 E<564d4275696c64>-.55 E F0<8c6c65732e>2.5 E F2
+<adad7772697465ad636d616b>108 451.2 Q<65ad667261676d656e74>-.1 E F0
+1.425<5772697465206f757420746865204c4c>128 463.2 R 1.425
+<564d4275696c6420696e2074686520666f726d206f66206120434d616b>-1 F 3.925
+<6566>-.1 G 1.425<7261676d656e742c20736f2069742063616e20656173696c792062
+6520636f6e73756d656420627920746865>-3.925 F<434d616b>128 475.2 Q 5.155
+<6562>-.1 G 2.655<617365642062>-5.155 F 2.655
+<75696c642073797374656d2e205468652065>-.2 F 2.654<7861637420636f6e74656e
+747320616e6420666f726d6174206f662074686973208c6c652061726520636c6f73656c
+79207469656420746f20686f>-.15 F<77>-.25 E<4c4c>128 487.2 Q
+<564d4275696c6420697320696e7465>-1 E<677261746564207769746820434d616b>
+-.15 E<652c20736565>-.1 E F4<4c4c>2.5 E<564d>-.9 E F0 1.1 -.55<27732074>
+D<6f702d6c65>.55 E -.15<7665>-.25 G 2.5<6c43>.15 G<4d616b>-2.5 E
+<654c697374732e7478742e>-.1 E F2<adad7772697465ad6d616b>108 504 Q
+<65ad667261676d656e74>-.1 E F0 .113<5772697465206f757420746865204c4c>128
+516 R .113<564d4275696c6420696e2074686520666f726d206f662061204d616b>-1 F
+.113<658c6c6520667261676d656e742c20736f2069742063616e20656173696c792062
+6520636f6e73756d65642062792061204d616b>-.1 F<65>-.1 E .77
+<62617365642062>128 528 R .77<75696c642073797374656d2e205468652065>-.2 F
+.769<7861637420636f6e74656e747320616e6420666f726d6174206f66207468697320
+8c6c652061726520636c6f73656c79207469656420746f20686f>-.15 F 3.269<774c>
+-.25 G -1<4c56>-3.269 G .769<4d4275696c64206973>1 F<696e7465>128 540 Q
+<677261746564207769746820746865204d616b>-.15 E<658c6c65732c20736565>-.1
+E F4<4c4c>2.5 E<564d>-.9 E F0 1.1 -.55<2773204d>D<616b>.55 E
+<658c6c652e72756c65732e>-.1 E F2<adad6c6c766d62>108 556.8 Q
+<75696c64ad736f7572>-.2 E<6365ad72>-.18 E<6f6f74>-.18 E F0<3d>A F5 -.963
+-.81<50412054>D<48>.81 E F0 .201<4966206769>128 568.8 R -.15<7665>-.25 G
+.201<6e2c2065>.15 F .201<787065637420746865>-.15 F F3<4c4c>2.701 E
+<564d4275696c64>-.55 E F0 .202<8c6c657320666f72207468652070726f6a656374
+20746f20626520726f6f74656420617420746865206769>2.701 F -.15<7665>-.25 G
+2.702<6e70>.15 G .202
+<6174682c20696e7374656164206f6620696e7369646520746865>-2.702 F .346<736f
+75726365207472656520697473656c662e2054686973206f7074696f6e20697320707269
+6d6172696c792064657369676e656420666f722075736520696e20636f6e6a756e637469
+6f6e2077697468>128 580.8 R F2<adad7772697465ad6c6c766d62>2.845 E
+<75696c64>-.2 E F0<746f>2.845 E<74657374206368616e67657320746f>128 592.8
+Q F3<4c4c>2.5 E<564d4275696c64>-.55 E F0<736368656d612e>2.5 E F1
+<45584954205354>72 609.6 Q -1.04<4154>-.986 G<5553>1.04 E F2
+<6c6c766d2d62>108 621.6 Q<75696c64>-.2 E F0 -.15<6578>2.5 G
+<69747320776974682030206966206f7065726174696f6e2077>.15 E
+<6173207375636365737366756c2e204f74686572776973652c2069742077696c6c2065>
+-.1 E<7869737420776974682061206e6f6e2d7a65726f2076>-.15 E<616c75652e>
+-.25 E F1 -.548<4155>72 638.4 S<54484f52>.548 E F0
+<4d61696e7461696e656420627920746865>108 650.4 Q F4<4c4c>2.5 E<564d>-.9 E
+F0 -.7<5465>2.5 G<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E
+<672f3e292e>-.18 E 188.72<43565320323031312d31322d3132>72 768 R<31>
+205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-config.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-config.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-config.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-config.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,342 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Courier
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 2
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Courier
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Courier at 0 ENC0/Courier RE/Times-Italic at 0 ENC0/Times-Italic RE
+/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 102.74
+<564d2d434f4e464947283129204c4c>-1 F<564d20436f6d6d616e64204775696465>-1
+E<4c4c>105.24 E<564d2d434f4e464947283129>-1 E/F1 10.95/Times-Bold at 0 SF
+-.219<4e41>72 84 S<4d45>.219 E F0
+<6c6c766dad636f6e8c6720ad205072696e74204c4c>108 96 Q
+<564d20636f6d70696c6174696f6e206f7074696f6e73>-1 E F1<53594e4f50534953>
+72 112.8 Q/F2 10/Times-Bold at 0 SF<6c6c766d2d636f6e8c67>108 124.8 Q/F3 10
+/Times-Italic at 0 SF<6f7074696f6e>2.5 E F0<5b>2.5 E F3
+<636f6d706f6e656e7473>A F0<2e2e2e5d>A F1<4445534352495054494f4e>72 141.6
+Q F2<6c6c766d2d636f6e8c67>108 153.6 Q F0<6d616b>2.667 E .167
+<65732069742065617369657220746f2062>-.1 F .167
+<75696c64206170706c69636174696f6e73207468617420757365>-.2 F/F4 9
+/Times-Roman at 0 SF<4c4c>2.667 E<564d>-.9 E F0 5.167<2e49>C 2.667<7463>
+-5.167 G .166
+<616e207072696e742074686520636f6d70696c6572208d6167732c206c696e6b>-2.667
+F .166<6572208d616773>-.1 F<616e64206f626a656374206c6962726172696573206e
+656564656420746f206c696e6b206167>108 165.6 Q<61696e7374>-.05 E F4<4c4c>
+2.5 E<564d>-.9 E F0<2e>A F1<4558414d504c4553>72 182.4 Q F0 1.6 -.8
+<546f206c>108 194.4 T<696e6b206167>.8 E<61696e737420746865>-.05 E F4
+<4a4954>2.5 E<3a>-.45 E/F5 10/Courier at 0 SF<672b2b20926c6c766dad636f6e66
+696720adad637878666c6167739220ad6f20486f77546f5573654a49542e6f20ad632048
+6f77546f5573654a49542e637070>120 211.2 Q<672b2b20926c6c766dad636f6e6669
+6720adad6c64666c6167739220ad6f20486f77546f5573654a495420486f77546f557365
+4a49542e6f205c>120 223.2 Q<926c6c766dad636f6e66696720adad6c69627320656e
+67696e65206263726561646572207363616c61726f70747392>144 235.2 Q F1
+<4f5054494f4e53>72 252 Q F2<adad76>108 264 Q<657273696f6e>-.1 E F0
+<5072696e74207468652076>128 276 Q<657273696f6e206e756d626572206f66>-.15
+E F4<4c4c>2.5 E<564d>-.9 E F0<2e>A F2<ad68656c70>108 292.8 Q F0
+<5072696e7420612073756d6d617279206f66>128 304.8 Q F2
+<6c6c766d2d636f6e8c67>2.5 E F0<6172>2.5 E<67756d656e74732e>-.18 E F2
+<adad7072>108 321.6 Q<658c78>-.18 E F0
+<5072696e742074686520696e7374616c6c6174696f6e207072658c7820666f72>128
+333.6 Q F4<4c4c>2.5 E<564d>-.9 E F0<2e>A F2<adad7372>108 350.4 Q<63ad72>
+-.18 E<6f6f74>-.18 E F0
+<5072696e742074686520736f7572636520726f6f742066726f6d207768696368>128
+362.4 Q F4<4c4c>2.5 E<564d>-.9 E F0 -.1<7761>2.5 G 2.5<7362>.1 G
+<75696c742e>-2.7 E F2<adad6f626aad72>108 379.2 Q<6f6f74>-.18 E F0
+<5072696e7420746865206f626a65637420726f6f74207573656420746f2062>128
+391.2 Q<75696c64>-.2 E F4<4c4c>2.5 E<564d>-.9 E F0<2e>A F2
+<adad62696e646972>108 408 Q F0<5072696e742074686520696e7374616c6c617469
+6f6e206469726563746f727920666f72>128 420 Q F4<4c4c>2.5 E<564d>-.9 E F0
+<62696e61726965732e>2.5 E F2<adad696e636c756465646972>108 436.8 Q F0<50
+72696e742074686520696e7374616c6c6174696f6e206469726563746f727920666f72>
+128 448.8 Q F4<4c4c>2.5 E<564d>-.9 E F0<686561646572732e>2.5 E F2
+<adad6c6962646972>108 465.6 Q F0<5072696e742074686520696e7374616c6c6174
+696f6e206469726563746f727920666f72>128 477.6 Q F4<4c4c>2.5 E<564d>-.9 E
+F0<6c69627261726965732e>2.5 E F2<adad6378788d616773>108 494.4 Q F0
+<5072696e74207468652043>128 506.4 Q/F6 8/Times-Roman at 0 SF -1<2b2b>-1
+-1.2 O F0<636f6d70696c6572208d616773206e656564656420746f20757365>2.5 1.2
+M F4<4c4c>2.5 E<564d>-.9 E F0<686561646572732e>2.5 E F2
+<adad6c648d616773>108 523.2 Q F0
+<5072696e7420746865208d616773206e656564656420746f206c696e6b206167>128
+535.2 Q<61696e7374>-.05 E F4<4c4c>2.5 E<564d>-.9 E F0
+<6c69627261726965732e>2.5 E F2<adad6c696273>108 552 Q F0 3.878<5072696e
+7420616c6c20746865206c6962726172696573206e656564656420746f206c696e6b2061
+67>128 564 R 3.878<61696e7374207468652073706563698c6564>-.05 F F4<4c4c>
+6.378 E<564d>-.9 E F3<636f6d706f6e656e7473>6.378 E F0 6.378<2c69>C 3.878
+<6e636c7564696e6720616e>-6.378 F<79>-.15 E<646570656e64656e636965732e>
+128 576 Q F2<adad6c69626e616d6573>108 592.8 Q F0 .998
+<53696d696c617220746f>128 604.8 R F2<adad6c696273>3.498 E F0 3.498<2c62>
+C .998<7574207072696e7473207468652062617265208c6c656e616d6573206f662074
+6865206c696272617269657320776974686f7574>-3.698 F F2<ad6c>3.497 E F0
+.997<6f7220706174686e616d65732e>3.497 F .997<55736566756c20666f72>5.997
+F<6c696e6b696e67206167>128 616.8 Q
+<61696e73742061206e6f742d7965742d696e7374616c6c656420636f70>-.05 E 2.5
+<796f>-.1 G<66>-2.5 E F4<4c4c>2.5 E<564d>-.9 E F0<2e>A F2
+<adad6c69628c6c6573>108 633.6 Q F0 1.23<53696d696c617220746f>128 645.6 R
+F2<adad6c696273>3.73 E F0 3.73<2c62>C 1.23<7574207072696e74207468652066
+756c6c207061746820746f2065616368206c696272617279208c6c652e>-3.93 F 1.231
+<546869732069732075736566756c207768656e206372656174696e67206d616b>6.231
+F<658c6c65>-.1 E<646570656e64656e636965732c20746f20656e7375726520746861
+74206120746f6f6c2069732072656c696e6b>128 657.6 Q<656420696620616e>-.1 E
+2.5<796c>-.15 G<6962726172792069742075736573206368616e6765732e>-2.5 E F2
+<adad636f6d706f6e656e7473>108 674.4 Q F0<5072696e7420616c6c2076>128
+686.4 Q<616c696420636f6d706f6e656e74206e616d65732e>-.25 E F2<adad746172>
+108 703.2 Q<67657473ad62>-.1 E<75696c74>-.2 E F0<5072696e74207468652063
+6f6d706f6e656e74206e616d657320666f7220616c6c20746172>128 715.2 Q
+<6765747320737570706f72746564206279207468697320636f70>-.18 E 2.5<796f>
+-.1 G<66>-2.5 E F4<4c4c>2.5 E<564d>-.9 E F0<2e>A 188.72
+<43565320323031312d30342d3038>72 768 R<31>205.67 E 0 Cg EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 102.74
+<564d2d434f4e464947283129204c4c>-1 F<564d20436f6d6d616e64204775696465>-1
+E<4c4c>105.24 E<564d2d434f4e464947283129>-1 E/F1 10/Times-Bold at 0 SF
+<adad62>108 84 Q<75696c64ad6d6f6465>-.2 E F0<5072696e74207468652062>128
+96 Q<75696c64206d6f64652075736564207768656e>-.2 E/F2 9/Times-Roman at 0 SF
+<4c4c>2.5 E<564d>-.9 E F0 -.1<7761>2.5 G 2.5<7362>.1 G
+<75696c742028652e672e20446562>-2.7 E<7567206f722052656c6561736529>-.2 E
+/F3 10.95/Times-Bold at 0 SF<434f4d504f4e454e5453>72 112.8 Q F0 2.885 -.8
+<546f2070>108 124.8 T 1.285<72696e742061206c697374206f6620616c6c2061>.8
+F -.25<7661>-.2 G 1.285<696c61626c6520636f6d706f6e656e74732c2072756e>.25
+F F1 1.285<6c6c766d2d636f6e8c6720adad636f6d706f6e656e7473>3.785 F F0
+6.285<2e49>C 3.785<6e6d>-6.285 G 1.285
+<6f73742063617365732c20636f6d706f6e656e7473>-3.785 F
+<636f72726573706f6e64206469726563746c7920746f>108 136.8 Q F2<4c4c>2.5 E
+<564d>-.9 E F0 2.5<6c69627261726965732e2055736566756c>2.5 F -.74<6060>
+2.5 G<7669727475616c27>.74 E 2.5<2763>-.74 G
+<6f6d706f6e656e747320696e636c7564653a>-2.5 E F1<616c6c>108 153.6 Q F0
+<496e636c7564657320616c6c>9.44 E F2<4c4c>2.5 E<564d>-.9 E F0 2.5
+<6c696261726965732e20546865>2.5 F<646566>2.5 E
+<61756c74206966206e6f20636f6d706f6e656e7473206172652073706563698c65642e>
+-.1 E F1<6261636b>108 170.4 Q<656e64>-.1 E F0
+<496e636c75646573206569746865722061206e617469>128 182.4 Q .3 -.15
+<76652062>-.25 H<61636b>.15 E<656e64206f72207468652043206261636b>-.1 E
+<656e642e>-.1 E F1<656e67696e65>108 199.2 Q F0
+<496e636c75646573206569746865722061206e617469>128 211.2 Q -.15<7665>-.25
+G F2<4a4954>2.65 E F0
+<6f722074686520626974636f646520696e746572707265746572>2.5 E<2e>-.55 E F3
+<45584954205354>72 228 Q -1.04<4154>-.986 G<5553>1.04 E F0<4966>108 240
+Q F1<6c6c766d2d636f6e8c67>2.681 E F0 .181
+<73756363656564732c2069742077696c6c2065>2.681 F .181
+<786974207769746820302e>-.15 F .182<4f74686572776973652c20696620616e2065
+72726f72206f63637572732c2069742077696c6c2065>5.181 F .182
+<78697420776974682061206e6f6e2d7a65726f2076>-.15 F<616c75652e>-.25 E F3
+-.548<4155>72 256.8 S<54484f5253>.548 E F0
+<4d61696e7461696e656420627920746865>108 268.8 Q F2<4c4c>2.5 E<564d>-.9 E
+F0 -.7<5465>2.5 G<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E
+<672f3e292e>-.18 E 188.72<43565320323031312d30342d3038>72 768 R<32>
+205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-cov.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-cov.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-cov.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-cov.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,262 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 1
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q<564d2d434f>-1 E 119.35
+<56283129204c4c>-.5 F<564d20436f6d6d616e64204775696465>-1 E<4c4c>121.85
+E<564d2d434f>-1 E<56283129>-.5 E/F1 10.95/Times-Bold at 0 SF -.219<4e41>72
+84 S<4d45>.219 E F0<6c6c766dad636f>108 96 Q 2.5<76ad65>-.15 G
+<6d697420636f>-2.5 E -.15<7665>-.15 G<7261676520696e666f726d6174696f6e>
+.15 E F1<53594e4f50534953>72 112.8 Q/F2 10/Times-Bold at 0 SF
+<6c6c766d2d636f>108 124.8 Q<76>-.1 E F0<5bad67636e6f3d8c6c656e616d655d20
+5bad676364613d8c6c656e616d655d205b64756d705d>2.5 E F1
+<4445534352495054494f4e>72 141.6 Q F0 1.935<5468652065>108 153.6 R
+<78706572696d656e74616c>-.15 E F2<6c6c766d2d636f>4.435 E<76>-.1 E F0
+1.934<746f6f6c20726561647320696e206465736372697074696f6e208c6c652067656e
+65726174656420627920636f6d70696c657220616e6420636f>4.435 F -.15<7665>
+-.15 G 1.934<726167652064617461208c6c65>.15 F 1.516<67656e65726174656420
+627920696e737472756d656e7465642070726f6772616d2e20546869732070726f677261
+6d20617373756d6573207468617420746865206465736372697074696f6e20616e642064
+617461208c6c6520757365732073616d65>108 165.6 R
+<666f726d61742061732067636f>108 177.6 Q 2.5<768c>-.15 G<6c65732e>-2.5 E
+F1<4f5054494f4e53>72 194.4 Q F2<ad67636e6f3d8c6c656e616d655d>108 206.4 Q
+F0<54686973206f7074696f6e2073656c6563747320696e707574206465736372697074
+696f6e208c6c652067656e65726174656420627920636f6d70696c6572207768696c6520
+696e737472756d656e74696e672070726f6772616d2e>128 218.4 Q F2
+<ad676364613d8c6c656e616d655d>108 235.2 Q F0
+<54686973206f7074696f6e2073656c6563747320636f>128 247.2 Q -.15<7665>-.15
+G<726167652064617461208c6c652067656e65726174656420627920696e737472756d65
+6e74656420636f6d70696c6572>.15 E<2e>-.55 E F2<ad64756d70>108 264 Q F0<54
+686973206f7074696f6e7320656e61626c6573206f75747075742064756d702074686174
+206973207375697461626c6520666f722061206465>128 276 Q -.15<7665>-.25 G
+<6c6f70657220746f2068656c7020646562>.15 E<7567>-.2 E F2<6c6c766d2d636f>
+2.5 E<76>-.1 E F0<697473656c662e>2.5 E F1<45584954205354>72 292.8 Q
+-1.04<4154>-.986 G<5553>1.04 E F2<6c6c766d2d636f>108 304.8 Q<76>-.1 E F0
+<72657475726e7320312069662069742063616e6e6f74207265616420696e707574208c
+6c65732e204f74686572776973652c2069742065>2.5 E
+<786974732077697468207a65726f2e>-.15 E F1 -.548<4155>72 321.6 S
+<54484f52>.548 E F2<6c6c766d2d636f>108 333.6 Q<76>-.1 E F0
+<6973206d61696e7461696e656420627920746865>2.5 E/F3 9/Times-Roman at 0 SF
+<4c4c>2.5 E<564d>-.9 E F0 -.7<5465>2.5 G
+<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E<672f3e292e>-.18 E F1
+<504f4420455252>72 350.4 Q<4f5253>-.329 E F0<4865>108 362.4 Q<7921>-.15
+E F2<5468652061626f>2.5 E .2 -.1<76652064>-.1 H
+<6f63756d656e742068616420736f6d6520636f64696e6720657272>.1 E
+<6f72732c207768696368206172>-.18 E 2.5<6565>-.18 G
+<78706c61696e65642062656c6f>-2.5 E<773a>-.1 E F0
+<41726f756e64206c696e652032313a>108 379.2 Q
+<556e7465726d696e6174656420423c2e2e2e3e2073657175656e6365>128 391.2 Q
+<41726f756e64206c696e652032363a>108 408 Q
+<556e7465726d696e6174656420423c2e2e2e3e2073657175656e6365>128 420 Q
+188.72<43565320323031312d31312d3238>72 768 R<31>205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-diff.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-diff.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-diff.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-diff.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,290 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 1
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic at 0 ENC0/Times-Italic RE/Times-Bold at 0 ENC0/Times-Bold RE
+/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 118.29<564d2d44494646283129204c4c>
+-1 F<564d20436f6d6d616e64204775696465>-1 E<4c4c>120.79 E
+<564d2d44494646283129>-1 E/F1 10.95/Times-Bold at 0 SF -.219<4e41>72 84 S
+<4d45>.219 E F0<6c6c766dad646966>108 96 Q 2.5<66ad4c>-.25 G -1<4c56>-2.5
+G 2.5<4d73>1 G<74727563747572616c2027>-2.5 E<646966>-.5 E .55<6627>-.25
+G F1<53594e4f50534953>72 112.8 Q/F2 10/Times-Bold at 0 SF
+<6c6c766d2d64696666>108 124.8 Q F0<5b>2.5 E/F3 10/Times-Italic at 0 SF
+<6f7074696f6e73>A F0<5d>A F3<6d6f64756c652031206d6f64756c652032>2.5 E F0
+<5b>2.5 E F3<676c6f62616c206e616d65202e2e2e>A F0<5d>A F1
+<4445534352495054494f4e>72 141.6 Q F2<6c6c766d2d64696666>108 153.6 Q F0
+1.969<636f6d70617265732074686520737472756374757265206f66207477>4.469 F
+<6f>-.1 E/F4 9/Times-Roman at 0 SF<4c4c>4.469 E<564d>-.9 E F0 1.969
+<6d6f64756c65732c207072696d6172696c7920666f637573696e67206f6e20646966>
+4.469 F 1.968<666572656e63657320696e2066756e6374696f6e>-.25 F 3.53
+<64658c6e6974696f6e732e20496e7369676e698c63616e74>108 165.6 R<646966>
+3.53 E 1.03<666572656e6365732c2073756368206173206368616e67657320696e2074
+6865206f72646572696e67206f6620676c6f62616c73206f7220696e20746865206e616d
+6573206f66206c6f63616c>-.25 F -.25<7661>108 177.6 S
+<6c7565732c206172652069676e6f7265642e>.25 E .137<416e20696e707574206d6f
+64756c652077696c6c20626520696e74657270726574656420617320616e20617373656d
+626c79208c6c6520696620697473206e616d6520656e647320696e20272e6c6c273b>108
+194.4 R .136<6f74686572776973652069742077696c6c206265207265616420696e>
+5.136 F<6173206120626974636f6465208c6c652e>108 206.4 Q 1.477
+<49662061206c697374206f6620676c6f62616c206e616d6573206973206769>108
+223.2 R -.15<7665>-.25 G 1.477<6e2c206a757374207468652076>.15 F 1.477<61
+6c75657320776974682074686f7365206e616d65732061726520636f6d70617265643b20
+6f74686572776973652c20616c6c20676c6f62616c>-.25 F -.25<7661>108 235.2 S
+1.344<6c7565732061726520636f6d70617265642c20616e6420646961676e6f73746963
+73206172652070726f647563656420666f7220676c6f62616c73207768696368206f6e6c
+792061707065617220696e206f6e65206d6f64756c65206f7220746865>.25 F
+<6f74686572>108 247.2 Q<2e>-.55 E F2<6c6c766d2d64696666>108 264 Q F0
+.412<636f6d7061726573207477>2.912 F 2.912<6f66>-.1 G .413<756e6374696f6e
+7320627920636f6d706172696e6720746865697220626173696320626c6f636b732c2062
+65>-2.912 F .413
+<67696e6e696e6720776974682074686520656e74727920626c6f636b732e>-.15 F
+.413<496620746865>5.413 F 1.092<7465726d696e61746f7273207365656d20746f20
+6d617463682c207468656e2074686520636f72726573706f6e64696e6720737563636573
+736f72732061726520636f6d70617265643b206f746865727769736520746865>108 276
+R 3.591<7961>-.15 G 1.091<72652069676e6f7265642e>-3.591 F 1.232
+<5468697320616c676f726974686d2069732076>108 288 R 1.232
+<6572792073656e73697469>-.15 F 1.532 -.15<76652074>-.25 H 3.732<6f63>.15
+G 1.232<68616e67657320696e20636f6e74726f6c208d6f>-3.732 F 2.533 -.65
+<772c2077>-.25 H 1.233<686963682074656e6420746f2073746f7020616e>.65 F
+3.733<7964>-.15 G -.25<6f77>-3.733 G 1.233
+<6e73747265616d206368616e676573>.25 F
+<66726f6d206265696e672064657465637465642e>108 300 Q F2
+<6c6c766d2d64696666>108 316.8 Q F0 1.279
+<697320696e74656e646564206173206120646562>3.779 F 1.279
+<756767696e6720746f6f6c20666f722077726974657273206f66>-.2 F F4<4c4c>
+3.778 E<564d>-.9 E F0 1.278<70617373657320616e642066726f6e74656e64732e>
+3.778 F 1.278<497420646f6573206e6f74206861>6.278 F 1.578 -.15<76652061>
+-.2 H<737461626c65206f757470757420666f726d61742e>108 328.8 Q F1
+<45584954205354>72 345.6 Q -1.04<4154>-.986 G<5553>1.04 E F0<4966>108
+357.6 Q F2<6c6c766d2d64696666>2.677 E F0 .177<8c6e6473206e6f20646966>
+2.677 F .177<666572656e636573206265747765656e20746865206d6f64756c65732c
+2069742077696c6c2065>-.25 F .177
+<7869742077697468203020616e642070726f64756365206e6f206f75747075742e>-.15
+F<4f7468657277697365>5.178 E<69742077696c6c2065>108 369.6 Q
+<78697420776974682061206e6f6e2d7a65726f2076>-.15 E<616c75652e>-.25 E F1
+-.11<4255>72 386.4 S<4753>.11 E F0<4d616e>108 398.4 Q 2.5<7969>-.15 G
+<6d706f7274616e7420646966>-2.5 E<666572656e6365732c206c696b>-.25 E 2.5
+<6563>-.1 G<68616e67657320696e206c696e6b616765206f722066756e6374696f6e20
+617474726962>-2.5 E<757465732c20617265206e6f7420646961676e6f7365642e>-.2
+E 1.393<4368616e67657320696e206d656d6f72792062656861>108 415.2 R 1.393
+<76696f722028666f722065>-.2 F 1.393<78616d706c652c20636f616c657363696e67
+206c6f616473292063616e206361757365206d61737369>-.15 F 1.693 -.15
+<76652064>-.25 H 1.393<6574656374656420646966>.15 F 1.393
+<666572656e63657320696e>-.25 F<626c6f636b732e>108 427.2 Q F1 -.548<4155>
+72 444 S<54484f5253>.548 E F0<4d61696e7461696e656420627920746865>108 456
+Q F4<4c4c>2.5 E<564d>-.9 E F0 -.7<5465>2.5 G
+<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E<672f3e292e>-.18 E 188.72
+<43565320323031312d30342d3038>72 768 R<31>205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-dis.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-dis.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-dis.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-dis.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,279 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Courier
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 1
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Courier
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Courier at 0 ENC0/Courier RE/Times-Italic at 0 ENC0/Times-Italic RE
+/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 123.85<564d2d444953283129204c4c>-1
+F<564d20436f6d6d616e64204775696465>-1 E<4c4c>126.35 E
+<564d2d444953283129>-1 E/F1 10.95/Times-Bold at 0 SF -.219<4e41>72 84 S
+<4d45>.219 E F0<6c6c766dad64697320ad204c4c>108 96 Q
+<564d20646973617373656d626c6572>-1 E F1<53594e4f50534953>72 112.8 Q/F2
+10/Times-Bold at 0 SF<6c6c766d2d646973>108 124.8 Q F0<5b>2.5 E/F3 10
+/Times-Italic at 0 SF<6f7074696f6e73>A F0 2.5<5d5b>C F3<8c6c656e616d65>-2.5
+E F0<5d>A F1<4445534352495054494f4e>72 141.6 Q F0<546865>108 153.6 Q F2
+<6c6c766d2d646973>4.454 E F0 1.954<636f6d6d616e6420697320746865>4.454 F
+/F4 9/Times-Roman at 0 SF<4c4c>4.454 E<564d>-.9 E F0
+<646973617373656d626c6572>4.454 E 6.954<2e49>-.55 G 4.454<7474>-6.954 G
+<616b>-4.454 E 1.953<657320616e>-.1 F F4<4c4c>4.453 E<564d>-.9 E F0
+1.953<626974636f6465208c6c6520616e6420636f6e>4.453 F -.15<7665>-.4 G
+1.953<72747320697420696e746f>.15 F<68756d616e2d7265616461626c65>108
+165.6 Q F4<4c4c>2.5 E<564d>-.9 E F0
+<617373656d626c79206c616e67756167652e>2.5 E<4966208c6c656e616d6520697320
+6f6d6974746564206f722073706563698c6564206173>108 182.4 Q/F5 10/Courier at 0
+SF<ad>2.5 E F0<2c>A F2<6c6c766d2d646973>2.5 E F0<7265616473206974732069
+6e7075742066726f6d207374616e6461726420696e7075742e>2.5 E 1.516<49662074
+686520696e707574206973206265696e6720726561642066726f6d207374616e64617264
+20696e7075742c207468656e>108 199.2 R F2<6c6c766d2d646973>4.016 E F0
+1.516<77696c6c2073656e6420697473206f757470757420746f207374616e6461726420
+6f7574707574206279>4.016 F<646566>108 211.2 Q 3.156
+<61756c742e204f74686572776973652c>-.1 F .655<746865206f7574707574207769
+6c6c206265207772697474656e20746f2061208c6c65206e616d65642061667465722074
+686520696e707574208c6c652c20776974682061>3.156 F F5<2e6c6c>3.155 E F0
+<737566>3.155 E .655<8c78206164646564>-.25 F<28616e>108 223.2 Q 3.675
+<7965>-.15 G<78697374696e67>-3.825 E F5<2e6263>3.675 E F0<737566>3.675 E
+1.175<8c782077696c6c208c7273742062652072656d6f>-.25 F -.15<7665>-.15 G
+3.675<64292e2059>.15 F 1.175<6f752063616e206f>-1.1 F -.15<7665>-.15 G
+1.175<7272696465207468652063686f696365206f66206f7574707574208c6c65207573
+696e6720746865>.15 F F2<ad6f>3.675 E F0<6f7074696f6e2e>108 235.2 Q F1
+<4f5054494f4e53>72 252 Q F2<ad66>108 264 Q F0 .819
+<456e61626c652062696e617279206f7574707574206f6e207465726d696e616c732e>
+10.97 F<4e6f726d616c6c79>5.819 E<2c>-.65 E F2<6c6c766d2d646973>3.319 E
+F0 .819<77696c6c2072656675736520746f207772697465207261>3.319 F 3.318
+<7762>-.15 G .818<6974636f6465206f757470757420696620746865>-3.318 F .59
+<6f75747075742073747265616d2069732061207465726d696e616c2e2057>128 276 R
+.59<6974682074686973206f7074696f6e2c>-.4 F F2<6c6c766d2d646973>3.09 E F0
+.59<77696c6c207772697465207261>3.09 F 3.09<7762>-.15 G .59
+<6974636f6465207265>-3.09 F -.05<6761>-.15 G .59
+<72646c657373206f6620746865206f7574707574>.05 F<6465>128 288 Q
+<766963652e>-.25 E F2<ad68656c70>108 304.8 Q F0<5072696e7420612073756d6d
+617279206f6620636f6d6d616e64206c696e65206f7074696f6e732e>128 316.8 Q F2
+<ad6f>108 333.6 Q F3<8c6c656e616d65>2.5 E F0
+<5370656369667920746865206f7574707574208c6c65206e616d652e>128 345.6 Q
+<4966>5 E F3<8c6c656e616d65>2.5 E F0<697320ad2c207468656e20746865206f75
+747075742069732073656e7420746f207374616e64617264206f75747075742e>2.5 E
+F1<45584954205354>72 362.4 Q -1.04<4154>-.986 G<5553>1.04 E F0<4966>108
+374.4 Q F2<6c6c766d2d646973>2.5 E F0
+<73756363656564732c2069742077696c6c2065>2.5 E<786974207769746820302e>
+-.15 E<4f74686572776973652c20696620616e206572726f72206f63637572732c2069
+742077696c6c2065>5 E<78697420776974682061206e6f6e2d7a65726f2076>-.15 E
+<616c75652e>-.25 E F1<53454520414c534f>72 391.2 Q F0<6c6c766d2d6173>108
+403.2 Q F1 -.548<4155>72 420 S<54484f5253>.548 E F0
+<4d61696e7461696e656420627920746865>108 432 Q F4<4c4c>2.5 E<564d>-.9 E
+F0 -.7<5465>2.5 G<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E
+<672f3e292e>-.18 E 188.72<43565320323031312d30342d3038>72 768 R<31>
+205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-extract.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-extract.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-extract.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-extract.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,321 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 1
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic at 0 ENC0/Times-Italic RE/Times-Bold at 0 ENC0/Times-Bold RE
+/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q<564d2d4558545241>-1 E 94.25
+<4354283129204c4c>-.4 F<564d20436f6d6d616e64204775696465>-1 E<4c4c>96.75
+E<564d2d4558545241>-1 E<4354283129>-.4 E/F1 10.95/Times-Bold at 0 SF -.219
+<4e41>72 84 S<4d45>.219 E F0<6c6c766dad65>108 96 Q<78747261637420ad2065>
+-.15 E<78747261637420612066756e6374696f6e2066726f6d20616e204c4c>-.15 E
+<564d206d6f64756c65>-1 E F1<53594e4f50534953>72 112.8 Q/F2 10
+/Times-Bold at 0 SF<6c6c766d2d65787472616374>108 124.8 Q F0<5b>2.5 E/F3 10
+/Times-Italic at 0 SF<6f7074696f6e73>A F0<5d>A F2<adad66756e63>2.5 E F3
+<66756e6374696f6e2d6e616d65>2.5 E F0<5b>2.5 E F3<8c6c656e616d65>A F0<5d>
+A F1<4445534352495054494f4e>72 141.6 Q F0<546865>108 153.6 Q F2
+<6c6c766d2d65787472616374>3.262 E F0 .762<636f6d6d616e642074616b>3.262 F
+.762<657320746865206e616d65206f6620612066756e6374696f6e20616e642065>-.1
+F .761<787472616374732069742066726f6d207468652073706563698c6564>-.15 F
+/F4 9/Times-Roman at 0 SF<4c4c>3.261 E<564d>-.9 E F0<626974636f6465>3.261 E
+2.877<8c6c652e204974>108 165.6 R .378
+<6973207072696d6172696c792075736564206173206120646562>2.877 F .378<7567
+67696e6720746f6f6c20746f2072656475636520746573742063617365732066726f6d20
+6c6172>-.2 F .378
+<6765722070726f6772616d732074686174206172652074726967676572696e672061>
+-.18 F -.2<6275>108 177.6 S<672e>.2 E .915
+<496e206164646974696f6e20746f2065>108 194.4 R .915<787472616374696e6720
+74686520626974636f6465206f66207468652073706563698c65642066756e6374696f6e
+2c>-.15 F F2<6c6c766d2d65787472616374>3.415 E F0 .915
+<77696c6c20616c736f2072656d6f>3.415 F 1.215 -.15<76652075>-.15 H
+<6e726561636861626c65>.15 E<676c6f62616c2076>108 206.4 Q<61726961626c65
+732c2070726f746f74797065732c20616e6420756e757365642074797065732e>-.25 E
+<546865>108 223.2 Q F2<6c6c766d2d65787472616374>3.432 E F0 .932<636f6d6d
+616e642072656164732069747320696e7075742066726f6d207374616e6461726420696e
+707574206966208c6c656e616d65206973206f6d6974746564206f72206966208c6c656e
+616d6520697320ad2e>3.432 F<546865206f757470757420697320616c>108 235.2 Q
+-.1<7761>-.1 G<7973207772697474656e20746f207374616e64617264206f75747075
+742c20756e6c65737320746865>.1 E F2<ad6f>2.5 E F0
+<6f7074696f6e2069732073706563698c656420287365652062656c6f>2.5 E<77292e>
+-.25 E F1<4f5054494f4e53>72 252 Q F2<ad66>108 264 Q F0 .661
+<456e61626c652062696e617279206f7574707574206f6e207465726d696e616c732e>
+10.97 F<4e6f726d616c6c79>5.661 E<2c>-.65 E F2<6c6c766d2d65787472616374>
+3.161 E F0 .661<77696c6c2072656675736520746f207772697465207261>3.161 F
+3.16<7762>-.15 G .66<6974636f6465206f7574707574206966>-3.16 F .314
+<746865206f75747075742073747265616d2069732061207465726d696e616c2e2057>
+128 276 R .314<6974682074686973206f7074696f6e2c>-.4 F F2
+<6c6c766d2d65787472616374>2.814 E F0 .315<77696c6c207772697465207261>
+2.814 F 2.815<7762>-.15 G .315<6974636f6465207265>-2.815 F -.05<6761>
+-.15 G .315<72646c657373206f6620746865>.05 F<6f7574707574206465>128 288
+Q<766963652e>-.25 E F2<adad66756e63>108 304.8 Q F3
+<66756e6374696f6e2d6e616d65>2.5 E F0 .274
+<45787472616374207468652066756e6374696f6e206e616d6564>128 316.8 R F3
+<66756e6374696f6e2d6e616d65>2.774 E F0 .274<66726f6d20746865>2.774 F F4
+<4c4c>2.774 E<564d>-.9 E F0 .274<626974636f64652e204d617920626520737065
+63698c6564206d756c7469706c652074696d657320746f>2.774 F -.15<6578>128
+328.8 S
+<7472616374206d756c7469706c652066756e6374696f6e73206174206f6e63652e>.15
+E F2<adad7266756e63>108 345.6 Q F3<66756e6374696f6e2d72>2.5 E -.4<6567>
+-.37 G<756c6172>.4 E<2d65>-.2 E<787072>-.2 E F0 3.806
+<45787472616374207468652066756e6374696f6e287329206d61746368696e67>128
+357.6 R F3<66756e6374696f6e2d72>6.306 E -.4<6567>-.37 G<756c6172>.4 E
+<2d65>-.2 E<787072>-.2 E F0 3.806<66726f6d20746865>6.306 F F4<4c4c>6.306
+E<564d>-.9 E F0 6.307<626974636f64652e20416c6c>6.307 F
+<66756e6374696f6e73>6.307 E<6d61746368696e6720746865207265>128 369.6 Q
+<67756c61722065>-.15 E<787072657373696f6e2077696c6c2062652065>-.15 E 2.5
+<78747261637465642e204d6179>-.15 F
+<62652073706563698c6564206d756c7469706c652074696d65732e>2.5 E F2
+<adad676c6f62>108 386.4 Q F3<676c6f62616c2d6e616d65>2.5 E F0 1.491
+<457874726163742074686520676c6f62616c2076>128 398.4 R 1.49
+<61726961626c65206e616d6564>-.25 F F3<676c6f62616c2d6e616d65>3.99 E F0
+1.49<66726f6d20746865>3.99 F F4<4c4c>3.99 E<564d>-.9 E F0 1.49
+<626974636f64652e204d61792062652073706563698c6564206d756c7469706c65>3.99
+F<74696d657320746f2065>128 410.4 Q
+<787472616374206d756c7469706c6520676c6f62616c2076>-.15 E
+<61726961626c6573206174206f6e63652e>-.25 E F2<adad72>108 427.2 Q
+<676c6f62>-.1 E F3<676c6f622d72>2.5 E -.4<6567>-.37 G<756c6172>.4 E
+<2d65>-.2 E<787072>-.2 E F0 3.079
+<457874726163742074686520676c6f62616c2076>128 439.2 R 3.079
+<61726961626c65287329206d61746368696e67>-.25 F F3<676c6f62616c2d72>5.579
+E -.4<6567>-.37 G<756c6172>.4 E<2d65>-.2 E<787072>-.2 E F0 3.079
+<66726f6d20746865>5.579 F F4<4c4c>5.58 E<564d>-.9 E F0 3.08
+<626974636f64652e20416c6c20676c6f62616c>5.58 F -.25<7661>128 451.2 S
+<726961626c6573206d61746368696e6720746865207265>.25 E<67756c61722065>
+-.15 E<787072657373696f6e2077696c6c2062652065>-.15 E 2.5
+<78747261637465642e204d6179>-.15 F
+<62652073706563698c6564206d756c7469706c652074696d65732e>2.5 E F2
+<ad68656c70>108 468 Q F0<5072696e7420612073756d6d617279206f6620636f6d6d
+616e64206c696e65206f7074696f6e732e>128 480 Q F2<ad6f>108 496.8 Q F3
+<8c6c656e616d65>2.5 E F0 1.2
+<5370656369667920746865206f7574707574208c6c656e616d652e>128 508.8 R 1.2
+<4966208c6c656e616d652069732060>6.2 F<60ad27>-.74 E 3.7<2728>-.74 G 1.2
+<74686520646566>-3.7 F 1.2<61756c74292c207468656e>-.1 F F2
+<6c6c766d2d65787472616374>3.7 E F0 1.2
+<73656e647320697473206f757470757420746f>3.7 F
+<7374616e64617264206f75747075742e>128 520.8 Q F2<ad53>108 537.6 Q F0
+<5772697465206f757470757420696e>8.74 E F4<4c4c>2.5 E<564d>-.9 E F0<696e
+7465726d656469617465206c616e67756167652028696e7374656164206f662062697463
+6f6465292e>2.5 E F1<45584954205354>72 554.4 Q -1.04<4154>-.986 G<5553>
+1.04 E F0<4966>108 566.4 Q F2<6c6c766d2d65787472616374>3.913 E F0 1.413
+<73756363656564732c2069742077696c6c2065>3.913 F 1.413
+<786974207769746820302e>-.15 F 1.413<4f74686572776973652c20696620616e20
+6572726f72206f63637572732c2069742077696c6c2065>6.413 F 1.414
+<78697420776974682061206e6f6e2d7a65726f>-.15 F -.25<7661>108 578.4 S
+<6c75652e>.25 E F1<53454520414c534f>72 595.2 Q F0 -.2<6275>108 607.2 S
+<67706f696e74>.2 E F1 -.548<4155>72 624 S<54484f5253>.548 E F0
+<4d61696e7461696e656420627920746865>108 636 Q F4<4c4c>2.5 E<564d>-.9 E
+F0 -.7<5465>2.5 G<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E
+<672f3e292e>-.18 E 188.72<43565320323031312d30392d3136>72 768 R<31>
+205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-ld.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-ld.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-ld.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-ld.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,518 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Courier
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 3
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Courier
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Courier at 0 ENC0/Courier RE/Times-Italic at 0 ENC0/Times-Italic RE
+/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 126.63<564d2d4c44283129204c4c>-1 F
+<564d20436f6d6d616e64204775696465>-1 E<4c4c>129.13 E<564d2d4c44283129>-1
+E/F1 10.95/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0
+<6c6c766dad6c6420ad204c4c>108 96 Q<564d206c696e6b>-1 E<6572>-.1 E F1
+<53594e4f50534953>72 112.8 Q/F2 10/Times-Bold at 0 SF<6c6c766d2d6c64>108
+124.8 Q F0<3c6f7074696f6e733e203c8c6c65733e>2.5 E F1
+<4445534352495054494f4e>72 141.6 Q F0<546865>108 153.6 Q F2
+<6c6c766d2d6c64>2.918 E F0 .418<746f6f6c2074616b>2.918 F .417
+<6573206120736574206f66>-.1 F/F3 9/Times-Roman at 0 SF<4c4c>2.917 E<564d>
+-.9 E F0 .417<626974636f6465208c6c657320616e64206c696e6b73207468656d2074
+6f67657468657220696e746f20612073696e676c65>2.917 F F3<4c4c>2.917 E<564d>
+-.9 E F0 .417<626974636f6465208c6c652e>2.917 F 1.547<546865206f75747075
+7420626974636f6465208c6c652063616e20626520616e6f7468657220626974636f6465
+208c6c65206f7220616e2065>108 165.6 R -.15<7865>-.15 G 1.547
+<63757461626c6520626974636f64652070726f6772616d2e>.15 F 1.547
+<5573696e67206164646974696f6e616c>6.547 F<6f7074696f6e732c>108 177.6 Q
+F2<6c6c766d2d6c64>2.5 E F0
+<69732061626c6520746f2070726f64756365206e617469>2.5 E .3 -.15<76652063>
+-.25 H<6f64652065>.15 E -.15<7865>-.15 G<63757461626c65732e>.15 E
+<546865>108 194.4 Q F2<6c6c766d2d6c64>3.912 E F0 1.412
+<746f6f6c20697320746865206d61696e206c696e6b>3.912 F 1.412<657220666f72>
+-.1 F F3<4c4c>3.911 E<564d>-.9 E F0 3.911<2e49>C 3.911<7469>-3.911 G
+3.911<7375>-3.911 G 1.411
+<73656420746f206c696e6b20746f67657468657220746865206f7574707574206f66>
+-3.911 F F3<4c4c>3.911 E<564d>-.9 E F0<66726f6e742d656e64>3.911 E
+<636f6d70696c65727320616e642072756e2060>108 206.4 Q
+<606c696e6b2074696d6527>-.74 E 2.5<276f>-.74 G
+<7074696d697a6174696f6e7320286d6f73746c792074686520696e746572>-2.5 E
+<2d70726f6365647572616c206b696e64292e>-.2 E<546865>108 223.2 Q F2
+<6c6c766d2d6c64>2.762 E F0 .262
+<746f6f6c7320617474656d70747320746f206d696d69632074686520696e74657266>
+2.762 F .263<6163652070726f>-.1 F .263<76696465642062792074686520646566>
+-.15 F .263<61756c742073797374656d206c696e6b>-.1 F .263
+<657220736f20746861742069742063616e20616374206173>-.1 F<61>108 235.2 Q
+/F4 10/Times-Italic at 0 SF<6472>2.5 E<6f702d696e>-.45 E F0
+<7265706c6163656d656e742e>2.5 E F2<53656172>87 252 Q<6368204f72646572>
+-.18 E F0 1.46<5768656e206c6f6f6b696e6720666f72206f626a6563747320737065
+63698c6564206f6e2074686520636f6d6d616e64206c696e652c>108 264 R F2
+<6c6c766d2d6c64>3.96 E F0 1.46<77696c6c2073656172636820666f722074686520
+6f626a656374208c72737420696e20746865>3.96 F 2.567<63757272656e7420646972
+6563746f727920616e64207468656e20696e20746865206469726563746f727920737065
+63698c656420627920746865>108 276 R/F5 9/Times-Bold at 0 SF<4c4c>5.067 E
+<564d5f4c49425f5345415243485f50>-.828 E -.855<4154>-.666 G<48>.855 E F0
+<656e>5.067 E<7669726f6e6d656e74>-.4 E -.25<7661>108 288 S 2.5
+<726961626c652e204966>.25 F
+<69742063616e6e6f74208c6e6420746865206f626a6563742c2069742066>2.5 E
+<61696c732e>-.1 E .45<5768656e206c6f6f6b696e6720666f722061206c6962726172
+792073706563698c6564207769746820746865>108 304.8 R F2<ad6c>2.95 E F0
+<6f7074696f6e2c>2.95 E F2<6c6c766d2d6c64>2.949 E F0 .449<8c727374206174
+74656d70747320746f206c6f61642061208c6c6520776974682074686174206e616d65>
+2.949 F .902<66726f6d207468652063757272656e74206469726563746f7279>108
+316.8 R 5.903<2e49>-.65 G 3.403<6674>-5.903 G .903<6861742066>-3.403 F
+.903<61696c732c206974206c6f6f6b7320666f72206c6962>-.1 F F4<6c696272>A
+<617279>-.15 E F0 .903<2e62632c206c6962>B F4<6c696272>A<617279>-.15 E F0
+.903<2e612c206f72206c6962>B F4<6c696272>A<617279>-.15 E F0<2e>A F4
+<73686172>A .903<6564206c696272>-.37 F<617279>-.15 E -.2<6578>108 328.8
+S<74656e73696f6e>.2 E F0 4.332<2c69>C 4.332<6e74>-4.332 G 1.832
+<686174206f72646572>-4.332 F 4.332<2c69>-.4 G 4.332<6e65>-4.332 G 1.832<
+616368206469726563746f727920616464656420746f20746865206c6962726172792073
+65617263682070617468207769746820746865>-4.332 F F2<ad4c>4.331 E F0 4.331
+<6f7074696f6e2e205468657365>4.331 F .394<6469726563746f7269657320617265
+20736561726368656420696e20746865206f7264657220746865>108 340.8 R 2.894
+<7961>-.15 G .394<72652073706563698c65642e>-2.894 F .394<49662074686520
+6c6962726172792063616e6e6f74206265206c6f63617465642c207468656e>5.394 F
+F2<6c6c766d2d6c64>2.895 E F0<6c6f6f6b73>2.895 E 1.181
+<696e20746865206469726563746f72792073706563698c656420627920746865>108
+352.8 R F5<4c4c>3.681 E<564d5f4c49425f5345415243485f50>-.828 E -.855
+<4154>-.666 G<48>.855 E F0<656e>3.681 E 1.18<7669726f6e6d656e742076>-.4
+F 3.68<61726961626c652e204966>-.25 F 1.18
+<697420646f6573206e6f74208c6e642061>3.68 F
+<6c6962726172792074686572652c2069742066>108 364.8 Q<61696c732e>-.1 E
+<546865>108 381.6 Q F4<73686172>2.5 E<6564206c696272>-.37 E<6172792065>
+-.15 E<7874656e73696f6e>-.2 E F0<6d6179206265>2.5 E F4<2e736f>2.5 E F0
+<2c>A F4<2e64796c64>2.5 E F0<2c>A F4<2e646c6c>2.5 E F0 2.5<2c6f>C 2.5
+<7273>-2.5 G<6f6d657468696e6720646966>-2.5 E
+<666572656e742c20646570656e64696e672075706f6e207468652073797374656d2e>
+-.25 E<546865>108 398.4 Q F2<ad4c>2.769 E F0 .269
+<6f7074696f6e20697320676c6f62616c2e>2.769 F .27<497420646f6573206e6f7420
+6d61747465722077686572652069742069732073706563698c656420696e20746865206c
+697374206f6620636f6d6d616e64206c696e65206172>5.269 F .27
+<67756d656e74733b20746865>-.18 F .671<6469726563746f72792069732073696d70
+6c7920616464656420746f2074686520736561726368207061746820616e642069732061
+70706c69656420746f20616c6c206c69627261726965732c20707265636564696e67206f
+722073756363656564696e672c20696e20746865>108 410.4 R
+<636f6d6d616e64206c696e652e>108 422.4 Q F2<4c696e6b206f72646572>87 439.2
+Q F0 1.609<416c6c206f626a65637420616e6420626974636f6465208c6c6573206172
+65206c696e6b>108 451.2 R 1.609
+<6564208c72737420696e20746865206f7264657220746865>-.1 F 4.11<7977>-.15 G
+1.61<6572652073706563698c6564206f6e2074686520636f6d6d616e64206c696e652e>
+-4.11 F<416c6c>6.61 E<6c696272617279208c6c657320617265206c696e6b>108
+463.2 Q<6564206e65>-.1 E 2.5<78742e20536f6d65>-.15 F
+<6c6962726172696573206d6179206e6f74206265206c696e6b>2.5 E<656420696e746f
+20746865206f626a6563742070726f6772616d3b207365652062656c6f>-.1 E -.65
+<772e>-.25 G F2<4c696272617279204c696e6b616765>87 480 Q F0 .391<4f626a65
+6374208c6c657320616e642073746174696320626974636f6465206f626a656374732061
+726520616c>108 492 R -.1<7761>-.1 G .391<7973206c696e6b>.1 F .391
+<656420696e746f20746865206f7574707574208c6c652e>-.1 F .391
+<4c696272617279206172636869>5.391 F -.15<7665>-.25 G 2.891<7328>.15 G
+.391<2e61208c6c657329206c6f6164>-2.891 F .046
+<6f6e6c7920746865206f626a656374732077697468696e20746865206172636869>108
+504 R .346 -.15<76652074>-.25 H .046<6861742064658c6e652073796d626f6c73
+206e656564656420627920746865206f7574707574208c6c652e>.15 F .046
+<48656e63652c206c69627261726965732073686f756c64206265>5.046 F .614<6c69
+7374656420616674657220746865206f626a656374208c6c657320616e64206c69627261
+72696573207768696368206e656564207468656d3b206f74686572776973652c20746865
+206c696272617279206d6179206e6f74206265206c696e6b>108 516 R .613
+<656420696e2c20616e64>-.1 F
+<74686520646570656e64656e74206c6962726172792077696c6c206e6f74206861>108
+528 Q .3 -.15<76652069>-.2 H
+<747320756e64658c6e65642073796d626f6c732064658c6e65642e>.15 E F2
+<4e617469>87 544.8 Q .2 -.1<76652063>-.1 H<6f64652067656e65726174696f6e>
+.1 E F0<546865>108 556.8 Q F2<6c6c766d2d6c64>6.111 E F0 3.611<70726f6772
+616d20686173206c696d6974656420737570706f727420666f72206e617469>6.111 F
+3.911 -.15<76652063>-.25 H 3.612
+<6f64652067656e65726174696f6e2c207768656e207573696e6720746865>.15 F F2
+<ad6e617469>6.112 E -.1<7665>-.1 G F0<6f72>6.212 E F2<ad6e617469>108
+568.8 Q -.1<7665>-.1 G<ad636265>.1 E F0 1.673
+<6f7074696f6e732e204e617469>4.174 F 1.973 -.15<76652063>-.25 H 1.673
+<6f64652067656e65726174696f6e20697320706572666f726d656420627920636f6e>
+.15 F -.15<7665>-.4 G 1.673<7274696e6720746865206c696e6b>.15 F 1.673
+<656420626974636f646520696e746f206e617469>-.1 F -.15<7665>-.25 G<617373
+656d626c7920282e7329206f72204320636f646520616e642072756e6e696e6720746865
+2073797374656d20636f6d70696c657220287479706963616c6c792067636329206f6e20
+74686520726573756c742e>108 580.8 Q F1<4f5054494f4e53>72 597.6 Q F2
+<47656e6572616c204f7074696f6e73>87 609.6 Q<ad68656c70>108 621.6 Q F0<50
+72696e7420612073756d6d617279206f6620636f6d6d616e64206c696e65206f7074696f
+6e732e>128 633.6 Q F2<ad76>108 650.4 Q F0 .818<53706563698c65732076>9.3
+F .818
+<6572626f7365206d6f64652e20496e2074686973206d6f646520746865206c696e6b>
+-.15 F .818<65722077696c6c207072696e74206164646974696f6e616c20696e666f72
+6d6174696f6e2061626f75742074686520616374696f6e73206974>-.1 F<74616b>128
+662.4 Q<65732c2070726f6772616d732069742065>-.1 E -.15<7865>-.15 G
+<63757465732c206574632e>.15 E F2<ad7374617473>108 679.2 Q F0
+<5072696e7420737461746973746963732e>128 691.2 Q 188.72
+<43565320323031312d30342d3038>72 768 R<31>205.67 E 0 Cg EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 126.63<564d2d4c44283129204c4c>-1 F
+<564d20436f6d6d616e64204775696465>-1 E<4c4c>129.13 E<564d2d4c44283129>-1
+E/F1 10/Times-Bold at 0 SF<ad74696d65ad706173736573>108 84 Q F0<5265636f72
+642074686520616d6f756e74206f662074696d65206e656564656420666f722065616368
+207061737320616e64207072696e7420697420746f207374616e64617264206572726f72>
+128 96 Q<2e>-.55 E F1<496e7075742f4f7574707574204f7074696f6e73>87 112.8
+Q<ad6f>108 124.8 Q/F2 10/Times-Italic at 0 SF<8c6c656e616d65>2.5 E F0 .322
+<54686973206f>128 136.8 R -.15<7665>-.15 G .322
+<7272696465732074686520646566>.15 F .322<61756c74206f7574707574208c6c65
+20616e642073706563698c657320746865206e616d65206f6620746865208c6c65207468
+61742073686f756c642062652067656e65726174656420627920746865>-.1 F
+<6c696e6b>128 148.8 Q<6572>-.1 E 3.298<2e42>-.55 G 3.298<7964>-3.298 G
+<6566>-3.298 E<61756c742c>-.1 E F1<6c6c766d2d6c64>3.298 E F0 .798
+<67656e6572617465732061208c6c65206e616d6564>3.298 F F2<612e6f7574>3.298
+E F0 .798<666f7220636f6d7061746962696c6974792077697468>3.298 F F1<6c64>
+3.298 E F0 3.298<2e54>C .799<6865206f75747075742077696c6c206265>-3.298 F
+<7772697474656e20746f>128 160.8 Q F2<8c6c656e616d65>2.5 E F0<2e>A F1
+<ad62>108 177.6 Q F2<8c6c656e616d65>2.5 E F0 .63
+<54686973206f7074696f6e2063616e206265207573656420746f206f>128 189.6 R
+-.15<7665>-.15 G .63<727269646520746865206f757470757420626974636f646520
+8c6c65206e616d652e20427920646566>.15 F .63
+<61756c742c20746865206e616d65206f662074686520626974636f6465>-.1 F
+<6f7574707574208c6c65206973206f6e65206d6f72652060>128 201.6 Q
+<602e626327>-.74 E 2.5<2773>-.74 G<7566>-2.5 E
+<8c7820616464656420746f20746865206e616d652073706563698c6564206279>-.25 E
+F1<ad6f208c6c656e616d65>2.5 E F0<6f7074696f6e2e>2.5 E F1<ad6c>108 218.4
+Q F2<6e616d65>A F0 .023
+<54686973206f7074696f6e2073706563698c657320746865>128 230.4 R F2
+<6e616d65>2.523 E F0 .023<6f662061206c69627261727920746f2073656172636820
+7768656e207265736f6c76696e672073796d626f6c7320666f72207468652070726f6772
+616d2e204f6e6c7920746865>2.523 F
+<62617365206e616d652073686f756c642062652073706563698c6564206173>128
+242.4 Q F2<6e616d65>2.5 E F0 2.5<2c77>C<6974686f75742061>-2.5 E F2
+<6c6962>2.5 E F0<7072658c78206f7220616e>2.5 E 2.5<7973>-.15 G<7566>-2.5
+E<8c782e>-.25 E F1<ad4c>108 259.2 Q F2 -.8<5061>C<7468>.8 E F0 .524
+<54686973206f7074696f6e2074656c6c73>128 271.2 R F1<6c6c766d2d6c64>3.024
+E F0 .524<746f206c6f6f6b20696e>3.024 F F2 -.8<5061>3.024 G<7468>.8 E F0
+.524<746f208c6e6420616e>3.024 F 3.023<796c>-.15 G .523<6962726172792073
+756273657175656e746c792073706563698c6564207769746820746865>-3.023 F F1
+<ad6c>3.023 E F0<6f7074696f6e2e>3.023 E .263<5468652070617468732077696c
+6c20626520736561726368656420696e20746865206f7264657220696e20776869636820
+746865>128 283.2 R 2.764<7961>-.15 G .264<72652073706563698c6564206f6e20
+74686520636f6d6d616e64206c696e652e20496620746865206c696272617279>-2.764
+F 1.019<6973207374696c6c206e6f7420666f756e642c206120736d616c6c2073657420
+6f662073797374656d2073706563698c63206469726563746f726965732077696c6c2061
+6c736f2062652073656172636865642e204e6f74652074686174206c6962726172696573>
+128 295.2 R .146<73706563698c6564207769746820746865>128 307.2 R F1<ad6c>
+2.646 E F0 .147<6f7074696f6e2074686174206f63637572>2.647 F F2
+<6265666f72>2.647 E<65>-.37 E F0<616e>2.647 E<79>-.15 E F1<ad4c>2.647 E
+F0 .147<6f7074696f6e732077696c6c206e6f7420736561726368207468652070617468
+73206769>2.647 F -.15<7665>-.25 G 2.647<6e62>.15 G 2.647<7974>-2.647 G
+<6865>-2.647 E F1<ad4c>2.647 E F0<6f7074696f6e7320666f6c6c6f>128 319.2 Q
+<77696e672069742e>-.25 E F1<ad6c696e6bad6173ad6c696272617279>108 336 Q
+F0 .34<4c696e6b2074686520626974636f6465208c6c657320746f6765746865722061
+732061206c696272617279>128 348 R 2.839<2c6e>-.65 G .339<6f7420616e2065>
+-2.839 F -.15<7865>-.15 G .339<63757461626c652e20496e2074686973206d6f64
+652c20756e64658c6e65642073796d626f6c732077696c6c206265>.15 F
+<7065726d69747465642e>128 360 Q F1<ad72>108 376.8 Q F0
+<416e20616c69617320666f7220ad6c696e6bad6173ad6c696272617279>9.86 E<2e>
+-.65 E F1<ad6e617469>108 393.6 Q -.1<7665>-.1 G F0
+<47656e65726174652061206e617469>128 405.6 Q .3 -.15<7665206d>-.25 H
+<616368696e6520636f64652065>.15 E -.15<7865>-.15 G<63757461626c652e>.15
+E .417<5768656e2067656e65726174696e67206e617469>128 423.6 R .717 -.15
+<766520657865>-.25 H<63757461626c65732c>.15 E F1<6c6c766d2d6c64>2.917 E
+F0 .417<8c72737420636865636b7320666f72206120626974636f64652076>2.917 F
+.418<657273696f6e206f6620746865206c69627261727920616e64206c696e6b73>-.15
+F .442<697420696e2c206966206e6563657373617279>128 435.6 R 5.441<2e49>
+-.65 G 2.941<6674>-5.441 G .441
+<6865206c696272617279206973206d697373696e672c>-2.941 F F1
+<6c6c766d2d6c64>2.941 E F0 .441<736b6970732069742e>2.941 F<5468656e2c>
+5.441 E F1<6c6c766d2d6c64>2.941 E F0 .441
+<6c696e6b7320696e207468652073616d65206c6962726172696573>2.941 F
+<6173206e617469>128 447.6 Q .3 -.15<76652063>-.25 H<6f64652e>.15 E .457
+<496e20746869732077>128 465.6 R<6179>-.1 E<2c>-.65 E F1<6c6c766d2d6c64>
+2.957 E F0 .457<73686f756c642062652061626c6520746f206c696e6b20696e206f70
+74696d697a656420626974636f64652073756273657473206f6620636f6d6d6f6e206c69
+6272617269657320616e64207468656e>2.957 F<6c696e6b20696e20616e>128 477.6
+Q 2.5<7970>-.15 G
+<617274206f6620746865206c6962726172792074686174206861736e27>-2.5 E 2.5
+<7462>-.18 G<65656e20636f6e>-2.5 E -.15<7665>-.4 G
+<7274656420746f20626974636f64652e>.15 E F1<ad6e617469>108 494.4 Q -.1
+<7665>-.1 G<ad636265>.1 E F0<47656e65726174652061206e617469>128 506.4 Q
+.3 -.15<7665206d>-.25 H<616368696e6520636f64652065>.15 E -.15<7865>-.15
+G<63757461626c65207769746820746865>.15 E/F3 9/Times-Roman at 0 SF<4c4c>2.5
+E<564d>-.9 E F0 2.5<4362>2.5 G<61636b>-2.5 E<656e642e>-.1 E .149
+<54686973206f7074696f6e206973206964656e746963616c20746f20746865>128
+524.4 R F1<ad6e617469>2.649 E -.1<7665>-.1 G F0 .149<6f7074696f6e2c2062>
+2.749 F .149<75742075736573207468652043206261636b>-.2 F .149<656e642074
+6f2067656e657261746520636f646520666f72207468652070726f6772616d>-.1 F
+<696e7374656164206f6620616e>128 536.4 Q F3<4c4c>2.5 E<564d>-.9 E F0
+<6e617469>2.5 E .3 -.15<76652063>-.25 H<6f64652067656e657261746f72>.15 E
+<2e>-.55 E F1<4f7074696d697a6174696f6e204f7074696f6e73>87 553.2 Q
+<ad64697361626c65ad696e6c696e696e67>108 565.2 Q F0<446f206e6f742072756e
+2074686520696e6c696e696e6720706173732e2046756e6374696f6e732077696c6c206e
+6f7420626520696e6c696e656420696e746f206f746865722066756e6374696f6e732e>
+128 577.2 Q F1<ad64697361626c65ad6f7074>108 594 Q F0
+<436f6d706c6574656c792064697361626c65206f7074696d697a6174696f6e2e>128
+606 Q F1<ad64697361626c65ad696e746572>108 622.8 Q<6e616c697a65>-.15 E F0
+<446f206e6f74206d61726b20616c6c2073796d626f6c7320617320696e7465726e616c
+2e>128 634.8 Q F1<ad76>108 651.6 Q<6572696679ad65616368>-.1 E F0
+<52756e207468652076>128 663.6 Q<6572698c636174696f6e20706173732061667465
+722065616368206f66207468652070617373657320746f2076>-.15 E
+<657269667920696e7465726d65646961746520726573756c74732e>-.15 E F1
+<ad7374726970ad616c6c>108 680.4 Q F0<537472697020616c6c20646562>128
+692.4 Q<756720616e642073796d626f6c20696e666f726d6174696f6e2066726f6d2074
+68652065>-.2 E -.15<7865>-.15 G<63757461626c6520746f206d616b>.15 E 2.5
+<6569>-.1 G 2.5<7473>-2.5 G<6d616c6c6572>-2.5 E<2e>-.55 E 188.72
+<43565320323031312d30342d3038>72 768 R<32>205.67 E 0 Cg EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 126.63<564d2d4c44283129204c4c>-1 F
+<564d20436f6d6d616e64204775696465>-1 E<4c4c>129.13 E<564d2d4c44283129>-1
+E/F1 10/Times-Bold at 0 SF<ad7374726970ad646562>108 84 Q<7567>-.2 E F0
+<537472697020616c6c20646562>128 96 Q
+<756720696e666f726d6174696f6e2066726f6d207468652065>-.2 E -.15<7865>-.15
+G<63757461626c6520746f206d616b>.15 E 2.5<6569>-.1 G 2.5<7473>-2.5 G
+<6d616c6c6572>-2.5 E<2e>-.55 E F1<ad73>108 112.8 Q F0
+<416e20616c69617320666f72>10.41 E F1<ad7374726970ad616c6c>2.5 E F0<2e>A
+F1<ad53>108 129.6 Q F0<416e20616c69617320666f72>8.74 E F1
+<ad7374726970ad646562>2.5 E<7567>-.2 E F0<2e>A F1
+<ad6578706f7274ad64796e616d6963>108 146.4 Q F0<416e20616c69617320666f72>
+128 158.4 Q F1<ad64697361626c65ad696e746572>2.5 E<6e616c697a65>-.15 E
+<ad706f7374ad6c696e6bad6f7074>108 175.2 Q/F2 10/Times-Italic at 0 SF -.8
+<5061>C<7468>.8 E F0 .191<52756e20706f73742d6c696e6b206f7074696d697a6174
+696f6e2070726f6772616d2e204166746572206c696e6b696e6720697320636f6d706c65
+746564206120626974636f6465208c6c652077696c6c2062652067656e6572617465642e
+2049742077696c6c>128 187.2 R .288<62652070617373656420746f20746865207072
+6f6772616d2073706563698c6564206279>128 199.2 R F2 -.8<5061>2.788 G<7468>
+.8 E F0 .288<617320746865208c727374206172>2.788 F .287
+<67756d656e742e20546865207365636f6e64206172>-.18 F .287
+<67756d656e7420746f207468652070726f6772616d>-.18 F 1.109<77696c6c206265
+20746865206e616d65206f6620612074656d706f72617279208c6c6520696e746f207768
+696368207468652070726f6772616d2073686f756c6420706c61636520697473206f7074
+696d697a6564206f75747075742e2046>128 211.2 R<6f72>-.15 E -.15<6578>128
+223.2 S<616d706c652c207468652060>.15 E
+<606e6f2d6f70206f7074696d697a6174696f6e27>-.74 E 2.5<2777>-.74 G
+<6f756c6420626520612073696d706c65207368656c6c207363726970743a>-2.6 E/F3
+10/Courier at 0 SF<23212f62696e2f62617368>152 241.2 Q<6370202431202432>152
+253.2 Q/F4 10.95/Times-Bold at 0 SF<45584954205354>72 270 Q -1.04<4154>
+-.986 G<5553>1.04 E F0<4966>108 282 Q F1<6c6c766d2d6c64>3.425 E F0 .925
+<73756363656564732c2069742077696c6c2065>3.425 F .925
+<786974207769746820302072657475726e20636f64652e>-.15 F .924
+<496620616e206572726f72206f63637572732c2069742077696c6c2065>5.925 F .924
+<78697420776974682061206e6f6e2d7a65726f2072657475726e>-.15 F<636f64652e>
+108 294 Q F4<454e564952>72 310.8 Q<4f4e4d454e54>-.329 E F0<546865>108
+322.8 Q F3<4c4c564d5f4c49425f5345415243485f50415448>5.737 E F0<656e>
+5.737 E 3.237<7669726f6e6d656e742076>-.4 F 3.237<61726961626c6520697320
+7573656420746f208c6e6420626974636f6465206c69627261726965732e20416e>-.25
+F 5.738<7970>-.15 G<61746873>-5.738 E
+<73706563698c656420696e20746869732076>108 334.8 Q
+<61726961626c652077696c6c20626520736561726368656420616674657220746865>
+-.25 E F3<ad4c>2.5 E F0<6f7074696f6e732e>2.5 E F4<53454520414c534f>72
+351.6 Q F0<6c6c766d2d6c696e6b>108 363.6 Q F4 -.548<4155>72 380.4 S
+<54484f5253>.548 E F0<4d61696e7461696e656420627920746865>108 392.4 Q/F5
+9/Times-Roman at 0 SF<4c4c>2.5 E<564d>-.9 E F0 -.7<5465>2.5 G
+<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E<672f3e292e>-.18 E 188.72
+<43565320323031312d30342d3038>72 768 R<33>205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-link.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-link.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-link.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-link.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,304 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Courier
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 1
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Courier
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Courier at 0 ENC0/Courier RE/Times-Italic at 0 ENC0/Times-Italic RE
+/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 116.08<564d2d4c494e4b283129204c4c>
+-1 F<564d20436f6d6d616e64204775696465>-1 E<4c4c>118.58 E
+<564d2d4c494e4b283129>-1 E/F1 10.95/Times-Bold at 0 SF -.219<4e41>72 84 S
+<4d45>.219 E F0<6c6c766dad6c696e6b20ad204c4c>108 96 Q<564d206c696e6b>-1
+E<6572>-.1 E F1<53594e4f50534953>72 112.8 Q/F2 10/Times-Bold at 0 SF
+<6c6c766d2d6c696e6b>108 124.8 Q F0<5b>2.5 E/F3 10/Times-Italic at 0 SF
+<6f7074696f6e73>A F0<5d>A F3<8c6c656e616d65202e2e2e>2.5 E F1
+<4445534352495054494f4e>72 141.6 Q F2<6c6c766d2d6c696e6b>108 153.6 Q F0
+<74616b>4.097 E 1.597<6573207365>-.1 F -.15<7665>-.25 G<72616c>.15 E/F4
+9/Times-Roman at 0 SF<4c4c>4.097 E<564d>-.9 E F0 1.597<626974636f6465208c6c
+657320616e64206c696e6b73207468656d20746f67657468657220696e746f2061207369
+6e676c65>4.097 F F4<4c4c>4.096 E<564d>-.9 E F0 1.596
+<626974636f6465208c6c652e>4.096 F<4974>6.596 E<77726974657320746865206f
+7574707574208c6c6520746f207374616e64617264206f75747075742c20756e6c657373
+20746865>108 165.6 Q F2<ad6f>2.5 E F0<6f7074696f6e206973207573656420746f
+20737065636966792061208c6c656e616d652e>2.5 E F2<6c6c766d2d6c696e6b>108
+182.4 Q F0 .936<617474656d70747320746f206c6f61642074686520696e707574208c
+6c65732066726f6d207468652063757272656e74206469726563746f7279>3.435 F
+5.936<2e49>-.65 G 3.436<6674>-5.936 G .936<6861742066>-3.436 F .936
+<61696c732c206974206c6f6f6b7320666f722065616368208c6c6520696e>-.1 F
+1.536<65616368206f6620746865206469726563746f726965732073706563698c656420
+627920746865>108 194.4 R F2<ad4c>4.035 E F0 1.535
+<6f7074696f6e73206f6e2074686520636f6d6d616e64206c696e652e>4.035 F 1.535
+<546865206c6962726172792073656172636820706174687320617265>6.535 F .308
+<676c6f62616c3b2065616368206f6e6520697320736561726368656420666f722065>
+108 206.4 R -.15<7665>-.25 G .308
+<727920696e707574208c6c65206966206e6563657373617279>.15 F 5.308<2e54>
+-.65 G .309<6865206469726563746f726965732061726520736561726368656420696e
+20746865206f7264657220746865>-5.308 F<79>-.15 E
+<776572652073706563698c6564206f6e2074686520636f6d6d616e64206c696e652e>
+108 218.4 Q F1<4f5054494f4e53>72 235.2 Q F2<ad4c>108 247.2 Q F3<646972>
+2.5 E<6563746f7279>-.37 E F0 .346<416464207468652073706563698c6564>128
+259.2 R F3<646972>2.846 E<6563746f7279>-.37 E F0 .346
+<746f20746865206c6962726172792073656172636820706174682e>2.846 F .346
+<5768656e206c6f6f6b696e6720666f72206c69627261726965732c>5.346 F F2
+<6c6c766d2d6c696e6b>2.846 E F0 .346<77696c6c206c6f6f6b>2.846 F .968
+<696e2070617468206e616d6520666f72206c69627261726965732e>128 271.2 R .968
+<54686973206f7074696f6e2063616e2062652073706563698c6564206d756c7469706c
+652074696d65733b>5.968 F F2<6c6c766d2d6c696e6b>3.468 E F0 .968
+<77696c6c2073656172636820696e73696465>3.468 F<7468657365206469726563746f
+7269657320696e20746865206f7264657220696e20776869636820746865>128 283.2 Q
+2.5<7977>-.15 G
+<6572652073706563698c6564206f6e2074686520636f6d6d616e64206c696e652e>-2.5
+E F2<ad66>108 300 Q F0 .522
+<456e61626c652062696e617279206f7574707574206f6e207465726d696e616c732e>
+10.97 F<4e6f726d616c6c79>5.522 E<2c>-.65 E F2<6c6c766d2d6c696e6b>3.022 E
+F0 .522<77696c6c2072656675736520746f207772697465207261>3.022 F 3.022
+<7762>-.15 G .522<6974636f6465206f757470757420696620746865>-3.022 F .312
+<6f75747075742073747265616d2069732061207465726d696e616c2e2057>128 312 R
+.312<6974682074686973206f7074696f6e2c>-.4 F F2<6c6c766d2d6c696e6b>2.812
+E F0 .312<77696c6c207772697465207261>2.812 F 2.812<7762>-.15 G .312
+<6974636f6465207265>-2.812 F -.05<6761>-.15 G .312
+<72646c657373206f6620746865206f7574707574>.05 F<6465>128 324 Q
+<766963652e>-.25 E F2<ad6f>108 340.8 Q F3<8c6c656e616d65>2.5 E F0
+<5370656369667920746865206f7574707574208c6c65206e616d652e>128 352.8 Q
+<4966>5 E F3<8c6c656e616d65>2.5 E F0<6973>2.5 E/F5 10/Courier at 0 SF<ad>
+2.5 E F0 2.5<2c74>C<68656e>-2.5 E F2<6c6c766d2d6c696e6b>2.5 E F0<77696c
+6c20777269746520697473206f757470757420746f207374616e64617264206f75747075
+742e>2.5 E F2<ad53>108 369.6 Q F0<5772697465206f757470757420696e>8.74 E
+F4<4c4c>2.5 E<564d>-.9 E F0<696e7465726d656469617465206c616e677561676520
+28696e7374656164206f6620626974636f6465292e>2.5 E F2<ad64>108 386.4 Q F0
+<49662073706563698c65642c>8.74 E F2<6c6c766d2d6c696e6b>2.5 E F0
+<7072696e747320612068756d616e2d7265616461626c652076>2.5 E<657273696f6e20
+6f6620746865206f757470757420626974636f6465208c6c6520746f207374616e646172
+64206572726f72>-.15 E<2e>-.55 E F2<ad68656c70>108 403.2 Q F0<5072696e74
+20612073756d6d617279206f6620636f6d6d616e64206c696e65206f7074696f6e732e>
+128 415.2 Q F2<ad76>108 432 Q F0 -1.11<5665>9.3 G 1.074
+<72626f7365206d6f64652e>1.11 F 1.074
+<5072696e7420696e666f726d6174696f6e2061626f75742077686174>6.074 F F2
+<6c6c766d2d6c696e6b>3.574 E F0 1.074<697320646f696e672e>3.574 F 1.074
+<54686973207479706963616c6c7920696e636c756465732061206d657373616765>
+6.074 F<666f72206561636820626974636f6465208c6c65206c696e6b>128 444 Q
+<656420696e20616e6420666f722065616368206c69627261727920666f756e642e>-.1
+E F1<45584954205354>72 460.8 Q -1.04<4154>-.986 G<5553>1.04 E F0<4966>
+108 472.8 Q F2<6c6c766d2d6c696e6b>2.5 E F0
+<73756363656564732c2069742077696c6c2065>2.5 E<786974207769746820302e>
+-.15 E<4f74686572776973652c20696620616e206572726f72206f63637572732c2069
+742077696c6c2065>5 E<78697420776974682061206e6f6e2d7a65726f2076>-.15 E
+<616c75652e>-.25 E F1<53454520414c534f>72 489.6 Q F0<6763636c64>108
+501.6 Q F1 -.548<4155>72 518.4 S<54484f5253>.548 E F0
+<4d61696e7461696e656420627920746865>108 530.4 Q F4<4c4c>2.5 E<564d>-.9 E
+F0 -.7<5465>2.5 G<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E
+<672f3e292e>-.18 E 188.72<43565320323031312d30342d3038>72 768 R<31>
+205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-nm.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-nm.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-nm.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-nm.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,331 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 2
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic at 0 ENC0/Times-Italic RE/Times-Bold at 0 ENC0/Times-Bold RE
+/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 123.85<564d2d4e4d283129204c4c>-1 F
+<564d20436f6d6d616e64204775696465>-1 E<4c4c>126.35 E<564d2d4e4d283129>-1
+E/F1 10.95/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0
+<6c6c766dad6e6d20ad206c697374204c4c>108 96 Q
+<564d20626974636f6465208c6c6527>-1 E 2.5<7373>-.55 G
+<796d626f6c207461626c65>-2.5 E F1<53594e4f50534953>72 112.8 Q/F2 10
+/Times-Bold at 0 SF<6c6c766d2d6e6d>108 124.8 Q F0<5b>2.5 E/F3 10
+/Times-Italic at 0 SF<6f7074696f6e73>A F0 2.5<5d5b>C F3
+<8c6c656e616d65732e2e2e>-2.5 E F0<5d>A F1<4445534352495054494f4e>72
+141.6 Q F0<546865>108 153.6 Q F2<6c6c766d2d6e6d>3.944 E F0 1.444<757469
+6c697479206c6973747320746865206e616d6573206f662073796d626f6c732066726f6d
+20746865>3.944 F/F4 9/Times-Roman at 0 SF<4c4c>3.944 E<564d>-.9 E F0 1.444
+<626974636f6465208c6c65732c206f72>3.944 F F2<6172>3.944 E F0<6172636869>
+3.944 E -.15<7665>-.25 G 3.943<7363>.15 G<6f6e7461696e696e67>-3.943 E F4
+<4c4c>108 165.6 Q<564d>-.9 E F0 3.161<626974636f6465208c6c65732c206e616d
+6564206f6e2074686520636f6d6d616e64206c696e652e>5.66 F 3.161<456163682073
+796d626f6c206973206c697374656420616c6f6e67207769746820736f6d652073696d70
+6c65>8.161 F .924<696e666f726d6174696f6e2061626f7574206974732070726f>108
+177.6 R -.15<7665>-.15 G 3.423<6e616e63652e204966>.15 F .923
+<6e6f208c6c65206e616d652069732073706563698c65642c206f72>3.423 F F3<ad>
+3.423 E F0 .923<697320757365642061732061208c6c65206e616d652c>3.423 F F2
+<6c6c766d2d6e6d>3.423 E F0<77696c6c>3.423 E<70726f6365737320612062697463
+6f6465208c6c65206f6e20697473207374616e6461726420696e7075742073747265616d
+2e>108 189.6 Q F2<6c6c766d2d6e6d>108 206.4 Q F0 1.241 -.55<27732064>D
+<6566>.55 E .141<61756c74206f757470757420666f726d6174206973207468652074
+7261646974696f6e616c>-.1 F F4<425344>2.642 E F2<6e6d>2.642 E F0 .142
+<6f757470757420666f726d61742e>2.642 F .142
+<456163682073756368206f7574707574207265636f726420636f6e7369737473>5.142
+F .8<6f6620616e20286f7074696f6e616c292038ad6469676974206865>108 218.4 R
+.8<7861646563696d616c20616464726573732c20666f6c6c6f>-.15 F .799
+<7765642062792061207479706520636f646520636861726163746572>-.25 F 3.299
+<2c66>-.4 G<6f6c6c6f>-3.299 E .799<7765642062792061206e616d652c20666f72>
+-.25 F .409<656163682073796d626f6c2e204f6e65207265636f726420697320707269
+6e74656420706572206c696e653b208c656c647320617265207365706172617465642062
+79207370616365732e205768656e207468652061646472657373206973206f6d69747465
+642c206974>108 230.4 R<6973207265706c616365642062792038207370616365732e>
+108 242.4 Q -.8<5479>108 259.2 S<706520636f6465206368617261637465727320
+63757272656e746c7920737570706f727465642c20616e64207468656972206d65616e69
+6e67732c2061726520617320666f6c6c6f>.8 E<77733a>-.25 E 12.78<554e>108 276
+S<616d6564206f626a656374206973207265666572656e6365642062>-12.78 E
+<757420756e64658c6e656420696e207468697320626974636f6465208c6c65>-.2 E
+13.33<4343>108 292.8 S<6f6d6d6f6e20286d756c7469706c652064658c6e6974696f
+6e73206c696e6b20746f67657468657220696e746f206f6e652064656629>-13.33 E
+10.56<5757>108 309.6 S<65616b207265666572656e636520286d756c7469706c6520
+64658c6e6974696f6e73206c696e6b20746f67657468657220696e746f207a65726f206f
+72206f6e652064658c6e6974696f6e7329>-11.36 E 17.22<744c>108 326.4 S
+<6f63616c2066756e6374696f6e20287465>-17.22 E<787429206f626a656374>-.15 E
+13.89<5447>108 343.2 S<6c6f62616c2066756e6374696f6e20287465>-13.89 E
+<787429206f626a656374>-.15 E 15<644c>108 360 S
+<6f63616c2064617461206f626a656374>-15 E 12.78<4447>108 376.8 S
+<6c6f62616c2064617461206f626a656374>-12.78 E 15.56<3f53>108 393.6 S
+<6f6d657468696e6720756e7265636f676e697a61626c65>-15.56 E<42656361757365>
+108 410.4 Q F4<4c4c>3.457 E<564d>-.9 E F0 .957<626974636f6465208c6c6573
+207479706963616c6c7920636f6e7461696e206f626a6563747320746861742061726520
+6e6f7420636f6e7369646572656420746f206861>3.457 F 1.257 -.15<76652061>-.2
+H .956<646472657373657320756e74696c20746865>.15 F<79>-.15 E 1.174
+<617265206c696e6b>108 422.4 R 1.174<656420696e746f20616e2065>-.1 F -.15
+<7865>-.15 G 1.174<63757461626c6520696d616765206f722064796e616d6963616c
+6c7920636f6d70696c65642060>.15 F<606a7573742d696e2d74696d6527>-.74 E
+<272c>-.74 E F2<6c6c766d2d6e6d>3.674 E F0 1.175
+<646f6573206e6f74207072696e7420616e>3.675 F
+<6164647265737320666f7220616e>108 434.4 Q 2.5<7973>-.15 G
+<796d626f6c2c2065>-2.5 E -.15<7665>-.25 G 2.5<6e73>.15 G<796d626f6c7320
+7768696368206172652064658c6e656420696e2074686520626974636f6465208c6c652e>
+-2.5 E F1<4f5054494f4e53>72 451.2 Q F2<ad50>108 463.2 Q F0<557365>8.19 E
+F4<504f534958>2.5 E F0
+<2e32206f757470757420666f726d61742e20416c69617320666f72>A F2<adad66>2.5
+E<6f726d61743d706f736978>-.25 E F0<2e>A F2<ad42>108 480 Q F0<28646566>10
+E<61756c7429>-.1 E<557365>128 492 Q F4<425344>2.5 E F0
+<6f757470757420666f726d61742e20416c69617320666f72>2.5 E F2<adad66>2.5 E
+<6f726d61743d627364>-.25 E F0<2e>A F2<ad68656c70>108 508.8 Q F0<5072696e
+7420612073756d6d617279206f6620636f6d6d616e642d6c696e65206f7074696f6e7320
+616e64207468656972206d65616e696e67732e>128 520.8 Q F2
+<adad64658c6e6564ad6f6e6c79>108 537.6 Q F0 1.134<5072696e74206f6e6c7920
+73796d626f6c732064658c6e656420696e207468697320626974636f6465208c6c652028
+6173206f70706f73656420746f2073796d626f6c73207768696368206d61792062652072
+65666572656e636564206279>128 549.6 R
+<6f626a6563747320696e2074686973208c6c652c2062>128 561.6 Q
+<7574206e6f742064658c6e656420696e2074686973208c6c652e29>-.2 E F2
+<adad6578746572>108 578.4 Q<6ead6f6e6c79>-.15 E F0<2c>A F2<ad67>2.5 E F0
+<5072696e74206f6e6c792073796d626f6c732077686f73652064658c6e6974696f6e73
+206172652065>128 590.4 Q<787465726e616c3b20746861742069732c206163636573
+7369626c652066726f6d206f7468657220626974636f6465208c6c65732e>-.15 E F2
+<adad756e64658c6e6564ad6f6e6c79>108 607.2 Q F0<2c>A F2<ad75>2.5 E F0
+<5072696e74206f6e6c792073796d626f6c73207265666572656e6365642062>128
+619.2 Q
+<7574206e6f742064658c6e656420696e207468697320626974636f6465208c6c652e>
+-.2 E F2<adad66>108 636 Q<6f726d61743d>-.25 E F3<666d74>A F0<2c>A F2
+<ad66>2.5 E F0<53656c65637420616e206f757470757420666f726d61743b>128 648
+Q F3<666d74>2.5 E F0<6d6179206265>2.5 E F3<73797376>2.5 E F0<2c>A F3
+<706f736978>2.5 E F0 2.5<2c6f>C<72>-2.5 E F3<627364>2.5 E F0 2.5<2e54>C
+<686520646566>-2.5 E<61756c74206973>-.1 E F3<627364>2.5 E F0<2e>A F1
+-.11<4255>72 664.8 S<4753>.11 E F2<6c6c766d2d6e6d>108 676.8 Q F0
+<63616e6e6f742064656d616e676c652043>2.5 E/F5 8/Times-Roman at 0 SF -1<2b2b>
+-1 -1.2 O F0<6d616e676c6564206e616d65732c206c696b>2.5 1.2 M<65>-.1 E F4
+<474e55>2.5 E F2<6e6d>2.5 E F0<63616e2e>2.5 E F1<45584954205354>72 693.6
+Q -1.04<4154>-.986 G<5553>1.04 E F2<6c6c766d2d6e6d>108 705.6 Q F0 -.15
+<6578>2.5 G<697473207769746820616e2065>.15 E
+<78697420636f6465206f66207a65726f2e>-.15 E 188.72
+<43565320323031312d30342d3038>72 768 R<31>205.67 E 0 Cg EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 123.85<564d2d4e4d283129204c4c>-1 F
+<564d20436f6d6d616e64204775696465>-1 E<4c4c>126.35 E<564d2d4e4d283129>-1
+E/F1 10.95/Times-Bold at 0 SF<53454520414c534f>72 84 Q F0
+<6c6c766d2d6469732c>108 96 Q/F2 10/Times-Italic at 0 SF<6172>2.5 E F0
+<2831292c>1.666 E F2<6e6d>2.5 E F0<283129>1.666 E F1 -.548<4155>72 112.8
+S<54484f52>.548 E F0<4d61696e7461696e656420627920746865>108 124.8 Q/F3 9
+/Times-Roman at 0 SF<4c4c>2.5 E<564d>-.9 E F0 -.7<5465>2.5 G
+<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E<672f3e292e>-.18 E 188.72
+<43565320323031312d30342d3038>72 768 R<32>205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-prof.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-prof.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-prof.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-prof.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,281 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 1
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic at 0 ENC0/Times-Italic RE/Times-Bold at 0 ENC0/Times-Bold RE
+/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q<564d2d5052>-1 E 115.35
+<4f46283129204c4c>-.4 F<564d20436f6d6d616e64204775696465>-1 E<4c4c>
+117.85 E<564d2d5052>-1 E<4f46283129>-.4 E/F1 10.95/Times-Bold at 0 SF -.219
+<4e41>72 84 S<4d45>.219 E F0<6c6c766dad70726f6620ad207072696e742065>108
+96 Q -.15<7865>-.15 G<637574696f6e2070726f8c6c65206f66204c4c>.15 E
+<564d2070726f6772616d>-1 E F1<53594e4f50534953>72 112.8 Q/F2 10
+/Times-Bold at 0 SF<6c6c766d2d7072>108 124.8 Q<6f66>-.18 E F0<5b>2.5 E/F3
+10/Times-Italic at 0 SF<6f7074696f6e73>A F0 2.5<5d5b>C F3
+<626974636f6465208c6c65>-2.5 E F0 2.5<5d5b>C F3<6c6c766d7072>-2.5 E
+<6f66>-.45 E<2e6f7574>-.15 E F0<5d>A F1<4445534352495054494f4e>72 141.6
+Q F0<546865>108 153.6 Q F2<6c6c766d2d7072>4.039 E<6f66>-.18 E F0 1.539
+<746f6f6c20726561647320696e20616e>4.039 F F3<6c6c766d7072>4.038 E<6f66>
+-.45 E<2e6f7574>-.15 E F0 1.538<8c6c65202877686963682063616e206f7074696f
+6e616c6c792075736520612073706563698c63208c6c6520776974682074686520746869
+7264>4.038 F 1.67<70726f6772616d206172>108 165.6 R 1.671<67756d656e7429
+2c206120626974636f6465208c6c6520666f72207468652070726f6772616d2c20616e64
+2070726f647563657320612068756d616e207265616461626c65207265706f72742c2073
+75697461626c6520666f72>-.18 F<64657465726d696e696e6720776865726520746865
+2070726f6772616d20686f7473706f7473206172652e>108 177.6 Q 3.064<54686973
+2070726f6772616d206973206f6674656e207573656420696e20636f6e6a756e6374696f
+6e207769746820746865>108 194.4 R F3<7574696c732f7072>5.564 E<6f8c6c65>
+-.45 E<2e706c>-.15 E F0 5.564<7363726970742e2054686973>5.564 F 3.063
+<736372697074206175746f6d61746963616c6c79>5.563 F 2.887<696e737472756d65
+6e747320612070726f6772616d2c2072756e73206974207769746820746865>108 206.4
+R/F4 9/Times-Roman at 0 SF<4a4954>5.387 E F0 5.387<2c74>C 2.887
+<68656e2072756e73>-5.387 F F2<6c6c766d2d7072>5.387 E<6f66>-.18 E F0
+2.887<746f20666f726d61742061207265706f72742e>5.387 F 4.488 -.8<546f2067>
+7.888 H 2.888<6574206d6f7265>.8 F<696e666f726d6174696f6e2061626f7574>108
+218.4 Q F3<7574696c732f7072>2.5 E<6f8c6c65>-.45 E<2e706c>-.15 E F0 2.5
+<2c65>C -.15<7865>-2.65 G<63757465206974207769746820746865>.15 E F2
+<ad68656c70>2.5 E F0<6f7074696f6e2e>2.5 E F1<4f5054494f4e53>72 235.2 Q
+F2<adad616e6e6f7461746564ad6c6c766d>108 247.2 Q F0<6f72>2.5 E F2<ad41>
+2.5 E F0 .599<496e206164646974696f6e20746f20746865206e6f726d616c20726570
+6f7274207072696e7465642c207072696e74206f75742074686520636f646520666f7220
+7468652070726f6772616d2c20616e6e6f746174656420776974682065>128 259.2 R
+-.15<7865>-.15 G<637574696f6e>.15 E<6672657175656e63>128 271.2 Q 3.331
+<7969>-.15 G .831<6e666f726d6174696f6e2e20546869732063616e20626520706172
+746963756c61726c792075736566756c207768656e20747279696e6720746f2076697375
+616c697a6520686f>-3.331 F 3.332<7766>-.25 G .832
+<72657175656e746c79206261736963>-3.332 F<626c6f636b73206172652065>128
+283.2 Q -.15<7865>-.15 G 2.5<63757465642e2054686973>.15 F<6973206d6f7374
+2075736566756c207769746820626173696320626c6f636b2070726f8c6c696e6720696e
+666f726d6174696f6e206f7220626574746572>2.5 E<2e>-.55 E F2
+<adad7072696e74ad616c6cad636f6465>108 300 Q F0 .136
+<5573696e672074686973206f7074696f6e20656e61626c657320746865>128 312 R F2
+<adad616e6e6f7461746564ad6c6c766d>2.636 E F0 .136<6f7074696f6e2c2062>
+2.636 F .136<7574206974207072696e74732074686520656e74697265206d6f64756c
+652c20696e7374656164206f66206a757374>-.2 F
+<746865206d6f737420636f6d6d6f6e6c792065>128 324 Q -.15<7865>-.15 G
+<63757465642066756e6374696f6e732e>.15 E F2<adad74696d65ad706173736573>
+108 340.8 Q F0<5265636f72642074686520616d6f756e74206f662074696d65206e65
+6564656420666f722065616368207061737320616e64207072696e7420697420746f2073
+74616e64617264206572726f72>128 352.8 Q<2e>-.55 E F1<45584954205354>72
+369.6 Q -1.04<4154>-.986 G<5553>1.04 E F2<6c6c766d2d7072>108 381.6 Q
+<6f66>-.18 E F0 .117<72657475726e7320312069662069742063616e6e6f74206c6f
+61642074686520626974636f6465208c6c65206f72207468652070726f8c6c6520696e66
+6f726d6174696f6e2e204f74686572776973652c2069742065>2.616 F .117
+<786974732077697468207a65726f2e>-.15 F F1 -.548<4155>72 398.4 S
+<54484f52>.548 E F2<6c6c766d2d7072>108 410.4 Q<6f66>-.18 E F0
+<6973206d61696e7461696e656420627920746865>2.5 E F4<4c4c>2.5 E<564d>-.9 E
+F0 -.7<5465>2.5 G<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E
+<672f3e292e>-.18 E 188.72<43565320323031312d30342d3038>72 768 R<31>
+205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-ranlib.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-ranlib.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-ranlib.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-ranlib.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,276 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Courier
+%%+ font Times-Italic
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 1
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Courier
+%%IncludeResource: font Times-Italic
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic at 0 ENC0/Times-Italic RE/Courier at 0 ENC0/Courier RE
+/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 102.74
+<564d2d52414e4c4942283129204c4c>-1 F<564d20436f6d6d616e64204775696465>-1
+E<4c4c>105.24 E<564d2d52414e4c4942283129>-1 E/F1 10.95/Times-Bold at 0 SF
+-.219<4e41>72 84 S<4d45>.219 E F0
+<6c6c766dad72616e6c696220ad2047656e657261746520696e6465>108 96 Q 2.5
+<7866>-.15 G<6f72204c4c>-2.5 E<564d206172636869>-1 E -.15<7665>-.25 G F1
+<53594e4f50534953>72 112.8 Q/F2 10/Times-Bold at 0 SF
+<6c6c766d2d72616e6c6962>108 124.8 Q F0<5badad76>2.5 E
+<657273696f6e5d205bad68656c705d203c6172636869>-.15 E -.15<7665>-.25 G
+<ad8c6c653e>.15 E F1<4445534352495054494f4e>72 141.6 Q F0<546865>108
+153.6 Q F2<6c6c766d2d72616e6c6962>3.124 E F0 .624<636f6d6d616e6420697320
+73696d696c617220746f2074686520636f6d6d6f6e20556e6978207574696c697479>
+3.124 F<2c>-.65 E/F3 10/Courier at 0 SF<72616e6c6962>3.124 E F0 3.124<2e49>
+C 3.124<7461>-3.124 G .623
+<646473206f722075706461746573207468652073796d626f6c>-3.124 F .372
+<7461626c6520696e20616e>108 165.6 R/F4 9/Times-Roman at 0 SF<4c4c>2.872 E
+<564d>-.9 E F0<6172636869>2.872 E .672 -.15<7665208c>-.25 H .372
+<6c652e204e6f74652074686174207573696e6720746865>.15 F F2<6c6c766d2d6172>
+2.872 E F0<6d6f64698c6572>2.872 E/F5 10/Times-Italic at 0 SF<73>2.873 E F0
+.373<697320757375616c6c79206d6f7265206566>2.873 F .373
+<8c6369656e74207468616e2072756e6e696e67>-.25 F F2
+<6c6c766d2d72616e6c6962>108 177.6 Q F0 .544
+<7768696368206973206f6e6c792070726f>3.044 F .543<7669646564206f6e6c7920
+666f7220636f6d706c65746e65737320616e6420636f6d7061746962696c697479>-.15
+F 3.043<2e55>-.65 G<6e6c696b>-3.043 E 3.043<656f>-.1 G .543
+<7468657220696d706c656d656e746174696f6e73>-3.043 F<6f66>108 189.6 Q F3
+<72616e6c6962>3.196 E F0<2c>A F2<6c6c766d2d72616e6c6962>3.196 E F0
+<696e6465>3.196 E -.15<7865>-.15 G<73>.15 E F4<4c4c>3.196 E<564d>-.9 E
+F0 .696<626974636f6465208c6c65732c206e6f74206e617469>3.196 F .996 -.15
+<7665206f>-.25 H .696<626a656374206d6f64756c65732e2059>.15 F .697
+<6f752063616e206c6973742074686520636f6e74656e7473>-1.1 F
+<6f66207468652073796d626f6c207461626c65207769746820746865>108 201.6 Q F3
+<6c6c766dad6e6d20ad73>2.5 E F0<636f6d6d616e642e>2.5 E F1<4f5054494f4e53>
+72 218.4 Q F5<6172>108 230.4 Q -.15<6368>-.37 G<6976652d8c6c65>.15 E F0
+<53706563698c657320746865206172636869>128 242.4 Q -.15<7665>-.25 G<2d8c
+6c6520746f207768696368207468652073796d626f6c207461626c652069732061646465
+64206f7220757064617465642e>.15 E F5<adad766572>108 259.2 Q<73696f6e>-.1
+E F0<5072696e74207468652076>128 271.2 Q<657273696f6e206f66>-.15 E F2
+<6c6c766d2d72616e6c6962>2.5 E F0<616e642065>2.5 E
+<78697420776974686f75742062>-.15 E
+<75696c64696e6720612073796d626f6c207461626c652e>-.2 E F5<ad68656c70>108
+288 Q F0<5072696e742075736167652068656c7020666f72>128 300 Q F2
+<6c6c766d2d72616e6c6962>2.5 E F0<616e642065>2.5 E
+<78697420776974686f75742062>-.15 E
+<75696c64696e6720612073796d626f6c207461626c652e>-.2 E F1<45584954205354>
+72 316.8 Q -1.04<4154>-.986 G<5553>1.04 E F0<4966>108 328.8 Q F2
+<6c6c766d2d72616e6c6962>2.5 E F0<73756363656564732c2069742077696c6c2065>
+2.5 E<786974207769746820302e>-.15 E
+<496620616e206572726f72206f63637572732c2061206e6f6e2d7a65726f2065>5 E
+<78697420636f64652077696c6c2062652072657475726e65642e>-.15 E F1
+<53454520414c534f>72 345.6 Q F0<6c6c766d2d6172>108 357.6 Q<2c>-.4 E F5
+-.15<7261>2.5 G<6e6c6962>.15 E F0<283129>1.666 E F1 -.548<4155>72 374.4
+S<54484f5253>.548 E F0<4d61696e7461696e656420627920746865>108 386.4 Q F4
+<4c4c>2.5 E<564d>-.9 E F0 -.7<5465>2.5 G
+<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E<672f3e292e>-.18 E 188.72
+<43565320323031312d30342d3038>72 768 R<31>205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-stress.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-stress.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-stress.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/llvm-stress.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,245 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 1
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic at 0 ENC0/Times-Italic RE/Times-Bold at 0 ENC0/Times-Bold RE
+/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF<4c4c>72 48 Q 104.39
+<564d2d535452455353283129204c4c>-1 F<564d20436f6d6d616e64204775696465>-1
+E<4c4c>106.89 E<564d2d535452455353283129>-1 E/F1 10.95/Times-Bold at 0 SF
+-.219<4e41>72 84 S<4d45>.219 E F0<6c6c766dad73747265737320ad2067656e6572
+6174652072616e646f6d202e6c6c208c6c6573>108 96 Q F1<53594e4f50534953>72
+112.8 Q/F2 10/Times-Bold at 0 SF<6c6c766d2d636f>108 124.8 Q<76>-.1 E F0<5b
+ad67636e6f3d8c6c656e616d655d205bad676364613d8c6c656e616d655d205b64756d70
+5d>2.5 E F1<4445534352495054494f4e>72 141.6 Q F0<546865>108 153.6 Q F2
+<6c6c766d2d737472>3.549 E<657373>-.18 E F0 1.049<746f6f6c20697320757365
+6420746f2067656e65726174652072616e646f6d202e6c6c208c6c657320746861742063
+616e206265207573656420746f207465737420646966>3.549 F 1.048
+<666572656e7420636f6d706f6e656e7473206f66>-.25 F/F3 9/Times-Roman at 0 SF
+<4c4c>108 165.6 Q<564d>-.9 E F0<2e>A F1<4f5054494f4e53>72 182.4 Q F2
+<ad6f>108 194.4 Q/F4 10/Times-Italic at 0 SF<8c6c656e616d65>2.5 E F0
+<5370656369667920746865206f7574707574208c6c656e616d652e>128 206.4 Q F2
+<ad73697a65>108 223.2 Q F4<73697a65>2.5 E F0<53706563696679207468652073
+697a65206f66207468652067656e657261746564202e6c6c208c6c652e>128 235.2 Q
+F2<ad73656564>108 252 Q F4<73656564>2.5 E F0<53706563696679207468652073
+65656420746f206265207573656420666f72207468652072616e646f6d6c792067656e65
+726174656420696e737472756374696f6e732e>128 264 Q F1<45584954205354>72
+280.8 Q -1.04<4154>-.986 G<5553>1.04 E F2<6c6c766d2d737472>108 292.8 Q
+<657373>-.18 E F0<72657475726e7320302e>2.5 E F1 -.548<4155>72 309.6 S
+<54484f52>.548 E F2<6c6c766d2d737472>108 321.6 Q<657373>-.18 E F0
+<6973206d61696e7461696e656420627920746865>2.5 E F3<4c4c>2.5 E<564d>-.9 E
+F0 -.7<5465>2.5 G<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E
+<672f3e292e>-.18 E 188.72<43565320323031322d30322d3236>72 768 R<31>
+205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/opt.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/opt.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/opt.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/opt.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,412 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Courier
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 2
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Courier
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Courier at 0 ENC0/Courier RE/Times-Italic at 0 ENC0/Times-Italic RE
+/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 151.73<4f5054283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<4f5054283129>154.23 E/F1 10.95
+/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0<6f707420ad204c4c>108
+96 Q<564d206f7074696d697a6572>-1 E F1<53594e4f50534953>72 112.8 Q/F2 10
+/Times-Bold at 0 SF<6f7074>108 124.8 Q F0<5b>2.5 E/F3 10/Times-Italic at 0 SF
+<6f7074696f6e73>A F0 2.5<5d5b>C F3<8c6c656e616d65>-2.5 E F0<5d>A F1
+<4445534352495054494f4e>72 141.6 Q F0<546865>108 153.6 Q F2<6f7074>3.099
+E F0 .599<636f6d6d616e6420697320746865206d6f64756c6172>3.099 F/F4 9
+/Times-Roman at 0 SF<4c4c>3.099 E<564d>-.9 E F0 .599
+<6f7074696d697a657220616e6420616e616c797a6572>3.099 F 5.599<2e49>-.55 G
+3.098<7474>-5.599 G<616b>-3.098 E<6573>-.1 E F4<4c4c>3.098 E<564d>-.9 E
+F0 .598<736f75726365208c6c657320617320696e7075742c2072756e73>3.098 F
+.086<7468652073706563698c6564206f7074696d697a6174696f6e73206f7220616e61
+6c79736573206f6e2069742c20616e64207468656e206f75747075747320746865206f70
+74696d697a6564208c6c65206f722074686520616e616c7973697320726573756c74732e>
+108 165.6 R<546865>5.087 E<66756e6374696f6e206f66>108 177.6 Q F2<6f7074>
+2.5 E F0<646570656e6473206f6e207768657468657220746865>2.5 E F2
+<ad616e616c797a65>2.5 E F0<6f7074696f6e206973206769>2.5 E -.15<7665>-.25
+G<6e2e>.15 E<5768656e>108 194.4 Q F2<ad616e616c797a65>3.659 E F0 1.159
+<69732073706563698c65642c>3.659 F F2<6f7074>3.659 E F0 1.159
+<706572666f726d732076>3.659 F 1.159<6172696f757320616e616c79736573206f66
+2074686520696e70757420736f757263652e>-.25 F 1.158
+<49742077696c6c20757375616c6c79207072696e7420746865>6.159 F .106
+<726573756c7473206f6e207374616e64617264206f75747075742c2062>108 206.4 R
+.106<757420696e2061206665>-.2 F 2.606<7763>-.25 G .106<617365732c206974
+2077696c6c207072696e74206f757470757420746f207374616e64617264206572726f72
+206f722067656e65726174652061208c6c65207769746820746865>-2.606 F<616e616c
+79736973206f75747075742c20776869636820697320757375616c6c7920646f6e652077
+68656e20746865206f7574707574206973206d65616e7420666f7220616e6f7468657220
+70726f6772616d2e>108 218.4 Q<5768696c65>108 235.2 Q F2<ad616e616c797a65>
+2.645 E F0<6973>2.645 E F3<6e6f74>2.645 E F0<6769>2.645 E -.15<7665>-.25
+G<6e2c>.15 E F2<6f7074>2.645 E F0 .145<617474656d70747320746f2070726f64
+75636520616e206f7074696d697a6564206f7574707574208c6c652e>2.645 F .144
+<546865206f7074696d697a6174696f6e732061>5.144 F -.25<7661>-.2 G
+<696c61626c65>.25 E<766961>108 247.2 Q F2<6f7074>3.666 E F0 1.166<646570
+656e642075706f6e2077686174206c69627261726965732077657265206c696e6b>3.666
+F 1.167<656420696e746f2069742061732077656c6c20617320616e>-.1 F 3.667
+<7961>-.15 G 1.167
+<64646974696f6e616c206c69627261726965732074686174206861>-3.667 F 1.467
+-.15<76652062>-.2 H<65656e>.15 E<6c6f61646564207769746820746865>108
+259.2 Q F2<ad6c6f6164>2.5 E F0 2.5<6f7074696f6e2e20557365>2.5 F<746865>
+2.5 E F2<ad68656c70>2.5 E F0<6f7074696f6e20746f2064657465726d696e652077
+686174206f7074696d697a6174696f6e7320796f752063616e207573652e>2.5 E<4966>
+108 276 Q F3<8c6c656e616d65>2.709 E F0 .209<6973206f6d69747465642066726f
+6d2074686520636f6d6d616e64206c696e65206f72206973>2.709 F F3<ad>2.709 E
+F0<2c>A F2<6f7074>2.709 E F0 .209<72656164732069747320696e7075742066726f
+6d207374616e6461726420696e7075742e20496e707574732063616e206265>2.709 F
+<696e2065697468657220746865>108 288 Q F4<4c4c>2.5 E<564d>-.9 E F0<617373
+656d626c79206c616e677561676520666f726d617420282e6c6c29206f7220746865>2.5
+E F4<4c4c>2.5 E<564d>-.9 E F0
+<626974636f646520666f726d617420282e6263292e>2.5 E<496620616e206f75747075
+74208c6c656e616d65206973206e6f742073706563698c6564207769746820746865>108
+304.8 Q F2<ad6f>2.5 E F0<6f7074696f6e2c>2.5 E F2<6f7074>2.5 E F0<777269
+74657320697473206f757470757420746f20746865207374616e64617264206f75747075
+742e>2.5 E F1<4f5054494f4e53>72 321.6 Q F2<ad66>108 333.6 Q F0 .298
+<456e61626c652062696e617279206f7574707574206f6e207465726d696e616c732e>
+10.97 F<4e6f726d616c6c79>5.299 E<2c>-.65 E F2<6f7074>2.799 E F0 .299
+<77696c6c2072656675736520746f207772697465207261>2.799 F 2.799<7762>-.15
+G .299<6974636f6465206f757470757420696620746865206f7574707574>-2.799 F
+<73747265616d2069732061207465726d696e616c2e2057>128 345.6 Q
+<6974682074686973206f7074696f6e2c>-.4 E F2<6f7074>2.5 E F0
+<77696c6c207772697465207261>2.5 E 2.5<7762>-.15 G<6974636f6465207265>
+-2.5 E -.05<6761>-.15 G<72646c657373206f6620746865206f7574707574206465>
+.05 E<766963652e>-.25 E F2<ad68656c70>108 362.4 Q F0<5072696e7420612073
+756d6d617279206f6620636f6d6d616e64206c696e65206f7074696f6e732e>128 374.4
+Q F2<ad6f>108 391.2 Q F3<8c6c656e616d65>2.5 E F0
+<5370656369667920746865206f7574707574208c6c656e616d652e>128 403.2 Q F2
+<ad53>108 420 Q F0<5772697465206f757470757420696e>8.74 E F4<4c4c>2.5 E
+<564d>-.9 E F0<696e7465726d656469617465206c616e67756167652028696e737465
+6164206f6620626974636f6465292e>2.5 E F2<ad7b706173736e616d657d>108 436.8
+Q<6f7074>128 448.8 Q F0<70726f>2.922 E .422
+<766964657320746865206162696c69747920746f2072756e20616e>-.15 F 2.922
+<796f>-.15 G<66>-2.922 E F4<4c4c>2.922 E<564d>-.9 E F0 1.522 -.55
+<2773206f>D .422<7074696d697a6174696f6e206f7220616e616c7973697320706173
+73657320696e20616e>.55 F 2.922<796f>-.15 G<72646572>-2.922 E 2.922<2e54>
+-.55 G<6865>-2.922 E F2<ad68656c70>2.921 E F0 .309
+<6f7074696f6e206c6973747320616c6c20746865207061737365732061>128 460.8 R
+-.25<7661>-.2 G .309<696c61626c652e20546865206f7264657220696e2077686963
+6820746865206f7074696f6e73206f63637572206f6e2074686520636f6d6d616e64206c
+696e652061726520746865>.25 F<6f7264657220696e20776869636820746865>128
+472.8 Q 2.5<7961>-.15 G<72652065>-2.5 E -.15<7865>-.15 G
+<6375746564202877697468696e207061737320636f6e73747261696e7473292e>.15 E
+F2<ad737464ad636f6d70696c65ad6f707473>108 489.6 Q F0 1.181<546869732069
+732073686f72742068616e6420666f722061207374616e64617264206c697374206f66>
+128 501.6 R F3 1.181<636f6d70696c652074696d65206f7074696d697a6174696f6e>
+3.681 F F0 3.68<7061737365732e2054686973>3.68 F 1.18
+<6973207479706963616c6c79207573656420746f>3.68 F .938<6f7074696d697a6520
+746865206f75747075742066726f6d20746865206c6c766d2d6763632066726f6e742065
+6e642e204974206d696768742062652075736566756c20666f72206f746865722066726f
+6e7420656e6420636f6d70696c657273206173>128 513.6 R<77656c6c2e2054>128
+525.6 Q 2.5<6f64>-.8 G<6973636f>-2.5 E -.15<7665>-.15 G 2.5<7274>.15 G
+<68652066756c6c20736574206f66206f7074696f6e732061>-2.5 E -.25<7661>-.2 G
+<696c61626c652c207573652074686520666f6c6c6f>.25 E
+<77696e6720636f6d6d616e643a>-.25 E/F5 10/Courier at 0 SF<6c6c766dad6173203c
+202f6465762f6e756c6c207c206f707420ad737464ad636f6d70696c65ad6f70747320ad
+64697361626c65ad6f757470757420ad6465627567ad706173733d417267756d656e7473>
+146 543.6 Q F2<ad64697361626c65ad696e6c696e696e67>108 560.4 Q F0 .182
+<54686973206f7074696f6e206973206f6e6c79206d65616e696e6766756c207768656e>
+128 572.4 R F2<ad737464ad636f6d70696c65ad6f707473>2.682 E F0 .181
+<6973206769>2.681 F -.15<7665>-.25 G .181
+<6e2e2049742073696d706c792072656d6f>.15 F -.15<7665>-.15 G 2.681<7374>
+.15 G .181<686520696e6c696e696e672070617373>-2.681 F
+<66726f6d20746865207374616e64617264206c6973742e>128 584.4 Q F2
+<ad64697361626c65ad6f7074>108 601.2 Q F0 .395
+<54686973206f7074696f6e206973206f6e6c79206d65616e696e6766756c207768656e>
+128 613.2 R F2<ad737464ad636f6d70696c65ad6f707473>2.895 E F0 .396
+<6973206769>2.896 F -.15<7665>-.25 G .396
+<6e2e2049742064697361626c6573206d6f73742c2062>.15 F .396
+<7574206e6f7420616c6c2c206f6620746865>-.2 F F2
+<ad737464ad636f6d70696c65ad6f707473>128 625.2 Q F0 2.5<2e54>C
+<6865206f6e657320746861742072656d61696e20617265>-2.5 E F2<ad76>2.5 E
+<6572696679>-.1 E F0<2c>A F2<ad6c6f>2.5 E<776572ad7365746a6d70>-.1 E F0
+2.5<2c61>C<6e64>-2.5 E F2<ad66756e6372>2.5 E<65736f6c76>-.18 E<65>-.1 E
+F0<2e>A F2<ad7374726970ad646562>108 642 Q<7567>-.2 E F0 4.424
+<54686973206f7074696f6e20636175736573206f707420746f20737472697020646562>
+128 654 R 4.424<756720696e666f726d6174696f6e2066726f6d20746865206d6f6475
+6c65206265666f7265206170706c79696e67206f74686572>-.2 F .506<6f7074696d69
+7a6174696f6e732e20497420697320657373656e7469616c6c79207468652073616d6520
+6173>128 666 R F2<ad7374726970>3.006 E F0 -.2<6275>3.006 G 3.006<7469>.2
+G 3.006<7465>-3.006 G .506
+<6e7375726573207468617420737472697070696e67206f6620646562>-3.006 F .507
+<756720696e666f726d6174696f6e206973>-.2 F<646f6e65208c7273742e>128 678 Q
+F2<ad76>108 694.8 Q<6572696679ad65616368>-.1 E F0 .661
+<54686973206f7074696f6e20636175736573206f707420746f2061646420612076>128
+706.8 R .661<657269667920706173732061667465722065>-.15 F -.15<7665>-.25
+G .66<72792070617373206f74686572776973652073706563698c6564206f6e20746865
+20636f6d6d616e64206c696e65>.15 F<28696e636c7564696e67>128 718.8 Q F2
+<ad76>3.686 E<6572696679>-.1 E F0 3.686<292e2054686973>B 1.187<69732075
+736566756c20666f72206361736573207768657265206974206973207375737065637465
+64207468617420612070617373206973206372656174696e6720616e20696e>3.686 F
+-.25<7661>-.4 G<6c6964>.25 E 2.6<6d6f64756c652062>128 730.8 R 2.6<757420
+6974206973206e6f7420636c656172207768696368207061737320697320646f696e6720
+69742e2054686520636f6d62696e6174696f6e206f66>-.2 F F2
+<ad737464ad636f6d70696c65ad6f707473>5.1 E F0<616e64>5.1 E 188.72
+<43565320323031312d30342d3038>72 768 R<31>205.67 E 0 Cg EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 151.73<4f5054283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<4f5054283129>154.23 E/F1 10
+/Times-Bold at 0 SF<ad76>128 84 Q<6572696679ad65616368>-.1 E F0
+<63616e20717569636b6c7920747261636b20646f>2.5 E
+<776e2074686973206b696e64206f662070726f626c656d2e>-.25 E F1<ad7072>108
+100.8 Q<6f8c6c65ad696e66>-.18 E<6fad8c6c65>-.25 E/F2 10/Times-Italic at 0
+SF<8c6c656e616d65>2.5 E F0<5370656369667920746865206e616d65206f66207468
+65208c6c65206c6f616465642062792074686520ad70726f8c6c65ad6c6f61646572206f
+7074696f6e2e>128 112.8 Q F1<ad7374617473>108 129.6 Q F0
+<5072696e7420737461746973746963732e>128 141.6 Q F1
+<ad74696d65ad706173736573>108 158.4 Q F0<5265636f72642074686520616d6f75
+6e74206f662074696d65206e656564656420666f722065616368207061737320616e6420
+7072696e7420697420746f207374616e64617264206572726f72>128 170.4 Q<2e>-.55
+E F1<ad646562>108 187.2 Q<7567>-.2 E F0 .98
+<49662074686973206973206120646562>128 199.2 R .98<75672062>-.2 F .98
+<75696c642c2074686973206f7074696f6e2077696c6c20656e61626c6520646562>-.2
+F .981<7567207072696e746f7574732066726f6d207061737365732077686963682075
+736520746865>-.2 F/F3 9/Times-Italic at 0 SF<444542>3.481 E<5547>-.09 E F2
+<2829>A F0 2.5<6d6163726f2e20536565>128 211.2 R<746865>2.5 E/F4 9
+/Times-Bold at 0 SF<4c4c>2.5 E<564d>-.828 E F1<5072>2.5 E
+<6f6772616d6d657227>-.18 E 2.5<734d>-.37 G<616e75616c>-2.5 E F0 2.5
+<2c73>C<656374696f6e>-2.5 E F2<23444542>2.5 E<5547>-.1 E F0
+<666f72206d6f726520696e666f726d6174696f6e2e>2.5 E F1<ad6c6f6164>108 228
+Q F0<3d>A F2<706c7567696e>A F0 1.769
+<4c6f6164207468652064796e616d6963206f626a656374>128 240 R F2
+<706c7567696e>4.269 E F0 6.769<2e54>C 1.768
+<686973206f626a6563742073686f756c64207265>-6.769 F 1.768
+<676973746572206e65>-.15 F 4.268<776f>-.25 G 1.768
+<7074696d697a6174696f6e206f7220616e616c79736973207061737365732e>-4.268 F
+2.423
+<4f6e6365206c6f616465642c20746865206f626a6563742077696c6c20616464206e65>
+128 252 R 4.924<7763>-.25 G 2.424
+<6f6d6d616e64206c696e65206f7074696f6e7320746f20656e61626c652076>-4.924 F
+2.424<6172696f7573206f7074696d697a6174696f6e73206f72>-.25 F 2.579
+<616e616c797365732e2054>128 264 R 2.579<6f73>-.8 G .079
+<656520746865206e65>-2.579 F 2.579<7763>-.25 G .079<6f6d706c657465206c69
+7374206f66206f7074696d697a6174696f6e732c2075736520746865>-2.579 F F1
+<ad68656c70>2.579 E F0<616e64>2.579 E F1<ad6c6f6164>2.578 E F0 .078
+<6f7074696f6e7320746f676574686572>2.578 F 2.578<2e46>-.55 G<6f72>-2.728
+E -.15<6578>128 276 S<616d706c653a>.15 E/F5 10/Courier at 0 SF
+<6f707420ad6c6f61643d706c7567696e2e736f20ad68656c70>146 294 Q F1<ad70>
+108 310.8 Q F0<5072696e74206d6f64756c652061667465722065616368207472616e
+73666f726d6174696f6e2e>8.74 E/F6 10.95/Times-Bold at 0 SF<45584954205354>72
+327.6 Q -1.04<4154>-.986 G<5553>1.04 E F0<4966>108 339.6 Q F1<6f7074>2.5
+E F0<73756363656564732c2069742077696c6c2065>2.5 E
+<786974207769746820302e>-.15 E<4f74686572776973652c20696620616e20657272
+6f72206f63637572732c2069742077696c6c2065>5 E
+<78697420776974682061206e6f6e2d7a65726f2076>-.15 E<616c75652e>-.25 E F6
+-.548<4155>72 356.4 S<54484f5253>.548 E F0
+<4d61696e7461696e656420627920746865>108 368.4 Q/F7 9/Times-Roman at 0 SF
+<4c4c>2.5 E<564d>-.9 E F0 -.7<5465>2.5 G
+<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E<672f3e292e>-.18 E 188.72
+<43565320323031312d30342d3038>72 768 R<32>205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/ps/tblgen.ps
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/ps/tblgen.ps?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/ps/tblgen.ps (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/ps/tblgen.ps Tue May 22 14:32:29 2012
@@ -0,0 +1,339 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.18.1
+%%CreationDate: Tue May 22 00:24:04 2012
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Courier
+%%DocumentSuppliedResources: procset grops 1.18 1
+%%Pages: 2
+%%PageOrder: Ascend
+%%Orientation: Portrait
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset grops 1.18 1
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/Fk{
+setcmykcolor fill
+}bind def
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/Ck/setcmykcolor load def
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Courier
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Courier at 0 ENC0/Courier RE/Times-Italic at 0 ENC0/Times-Italic RE
+/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 131.18<54424c47454e283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<54424c47454e283129>133.68 E/F1
+10.95/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0
+<74626c67656e20ad2054>108 96 Q<6172>-.8 E
+<676574204465736372697074696f6e2054>-.18 E 2.5<6f43>-.8 G
+<2b2b20436f64652047656e657261746f72>-2.5 E F1<53594e4f50534953>72 112.8
+Q/F2 10/Times-Bold at 0 SF<74626c67656e>108 124.8 Q F0<5b>2.5 E/F3 10
+/Times-Italic at 0 SF<6f7074696f6e73>A F0 2.5<5d5b>C F3<8c6c656e616d65>-2.5
+E F0<5d>A F1<4445534352495054494f4e>72 141.6 Q F2<74626c67656e>108 153.6
+Q F0 .36<7472616e736c617465732066726f6d20746172>2.86 F .36
+<676574206465736372697074696f6e20282e746429208c6c657320696e746f2043>-.18
+F/F4 8/Times-Roman at 0 SF -1<2b2b>-1 -1.2 O F0 .36<636f646520746861742063
+616e20626520696e636c7564656420696e207468652064658c6e6974696f6e206f662061
+6e>2.86 1.2 N/F5 9/Times-Roman at 0 SF<4c4c>108 165.6 Q<564d>-.9 E F0
+<746172>3.613 E 1.113<676574206c696272617279>-.18 F 3.613<2e4d>-.65 G
+1.113<6f7374207573657273206f66>-3.613 F F5<4c4c>3.613 E<564d>-.9 E F0
+1.114<77696c6c206e6f74206e65656420746f2075736520746869732070726f6772616d
+2e204974206973206f6e6c7920666f7220617373697374696e672077697468>3.613 F
+<77726974696e6720616e>108 177.6 Q F5<4c4c>2.5 E<564d>-.9 E F0<746172>2.5
+E<676574206261636b>-.18 E<656e642e>-.1 E 4.077
+<54686520696e70757420616e64206f7574707574206f66>108 194.4 R F2
+<74626c67656e>6.577 E F0 4.077<6973206265>6.577 F 4.077<796f6e6420746865
+2073636f7065206f6620746869732073686f727420696e74726f64756374696f6e2e2050
+6c656173652073656520746865>-.15 F F3<436f646547656e6572>108 206.4 Q
+<6174696f6e>-.15 E F0<7061676520696e20746865>2.5 E F5<4c4c>2.5 E<564d>
+-.9 E F0<646f63756d656e746174696f6e2e>2.5 E<546865>108 223.2 Q F3
+<8c6c656e616d65>2.5 E F0<6172>2.5 E
+<67756d656e742073706563698c657320746865206e616d65206f6620612054>-.18 E
+<6172>-.8 E<676574204465736372697074696f6e20282e746429208c6c6520746f2072
+65616420617320696e7075742e>-.18 E F1<4f5054494f4e53>72 240 Q F2
+<ad68656c70>108 252 Q F0<5072696e7420612073756d6d617279206f6620636f6d6d
+616e64206c696e65206f7074696f6e732e>128 264 Q F2<ad6f>108 280.8 Q F3
+<8c6c656e616d65>2.5 E F0
+<5370656369667920746865206f7574707574208c6c65206e616d652e>128 292.8 Q
+<4966>5 E F3<8c6c656e616d65>2.5 E F0<6973>2.5 E/F6 10/Courier at 0 SF<ad>
+2.5 E F0 2.5<2c74>C<68656e>-2.5 E F2<74626c67656e>2.5 E F0<73656e647320
+697473206f757470757420746f207374616e64617264206f75747075742e>2.5 E F2
+<ad49>108 309.6 Q F3<646972>2.5 E<6563746f7279>-.37 E F0 .004
+<5370656369667920776865726520746f208c6e64206f7468657220746172>128 321.6
+R .005<676574206465736372697074696f6e208c6c657320666f7220696e636c757369
+6f6e2e20546865>-.18 F F3<646972>2.505 E<6563746f7279>-.37 E F0 -.25
+<7661>2.505 G .005<6c75652073686f756c6420626520612066756c6c206f72>.25 F<
+7061727469616c207061746820746f2061206469726563746f7279207468617420636f6e
+7461696e7320746172>128 333.6 Q
+<676574206465736372697074696f6e208c6c65732e>-.18 E F2
+<ad61736d706172736572>108 350.4 Q<6e756d>-.15 E F3<4e>2.5 E F0<4d616b>
+128 362.4 Q 2.5<65ad>-.1 G<67656ead61736dad70617273657220656d6974206173
+73656d626c7920777269746572206e756d626572>-2.5 E F3<4e>2.5 E F0<2e>A F2
+<ad61736d777269746572>108 379.2 Q<6e756d>-.15 E F3<4e>2.5 E F0<4d616b>
+128 391.2 Q 2.5<65ad>-.1 G<67656ead61736dad77726974657220656d6974206173
+73656d626c7920777269746572206e756d626572>-2.5 E F3<4e>2.5 E F0<2e>A F2
+<ad636c617373>108 408 Q F3<636c617373204e616d65>2.5 E F0<5072696e742074
+686520656e756d65726174696f6e206c69737420666f72207468697320636c6173732e>
+128 420 Q F2<ad7072696e74ad72>108 436.8 Q<65636f726473>-.18 E F0<507269
+6e7420616c6c207265636f72647320746f207374616e64617264206f7574707574202864
+6566>128 448.8 Q<61756c74292e>-.1 E F2<ad7072696e74ad656e756d73>108
+465.6 Q F0<5072696e7420656e756d65726174696f6e2076>128 477.6 Q
+<616c75657320666f72206120636c617373>-.25 E F2<ad7072696e74ad73657473>108
+494.4 Q F0<5072696e742065>128 506.4 Q
+<7870616e646564207365747320666f722074657374696e67>-.15 E F5 -.36<444147>
+2.5 G F0 -.15<6578>2.86 G<7072732e>.15 E F2<ad67656ead656d6974746572>108
+523.2 Q F0<47656e6572617465206d616368696e6520636f646520656d6974746572>
+128 535.2 Q<2e>-.55 E F2<ad67656ead72>108 552 Q<65676973746572ad696e66>
+-.18 E<6f>-.25 E F0<47656e6572617465207265>128 564 Q
+<6769737465727320616e64207265>-.15 E
+<67697374657220636c617373657320696e666f2e>-.15 E F2
+<ad67656ead696e737472ad696e66>108 580.8 Q<6f>-.25 E F0
+<47656e657261746520696e737472756374696f6e206465736372697074696f6e732e>
+128 592.8 Q F2<ad67656ead61736dad777269746572>108 609.6 Q F0
+<47656e65726174652074686520617373656d626c7920777269746572>128 621.6 Q
+<2e>-.55 E F2<ad67656ead646973617373656d626c6572>108 638.4 Q F0
+<47656e657261746520646973617373656d626c6572>128 650.4 Q<2e>-.55 E F2
+<ad67656ead70736575646fad6c6f>108 667.2 Q<776572696e67>-.1 E F0
+<47656e65726174652070736575646f20696e737472756374696f6e206c6f>128 679.2
+Q<776572696e672e>-.25 E F2<ad67656ead646167ad6973656c>108 696 Q F0
+<47656e65726174652061>128 708 Q F5 -.36<444147>2.5 G F0
+<284469726563746564204163>2.86 E
+<79636c652047726170682920696e737472756374696f6e2073656c6563746f72>-.15 E
+<2e>-.55 E 188.72<43565320323031322d30322d3236>72 768 R<31>205.67 E 0 Cg
+EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman at 0 SF 131.18<54424c47454e283129204c4c>72 48 R
+<564d20436f6d6d616e64204775696465>-1 E<54424c47454e283129>133.68 E/F1 10
+/Times-Bold at 0 SF<ad67656ead61736dad6d617463686572>108 84 Q F0<47656e6572
+61746520617373656d626c7920696e737472756374696f6e206d617463686572>128 96
+Q<2e>-.55 E F1<ad67656ead646661ad7061636b>108 112.8 Q<6574697a6572>-.1 E
+F0<47656e6572617465>128 124.8 Q/F2 9/Times-Roman at 0 SF<4446>2.5 E<41>
+-.666 E F0 -.15<5061>2.5 G<636b>.15 E<6574697a657220666f72>-.1 E F2
+<564c4957>2.5 E F0<746172>2.5 E<676574732e>-.18 E F1
+<ad67656ead66617374ad6973656c>108 141.6 Q F0<47656e657261746520612060>
+128 153.6 Q<6066>-.74 E<61737427>-.1 E 2.5<2769>-.74 G
+<6e737472756374696f6e2073656c6563746f72>-2.5 E<2e>-.55 E F1
+<ad67656ead737562746172>108 170.4 Q<676574>-.1 E F0
+<47656e657261746520737562746172>128 182.4 Q
+<67657420656e756d65726174696f6e732e>-.18 E F1
+<ad67656ead696e7472696e736963>108 199.2 Q F0
+<47656e657261746520696e7472696e73696320696e666f726d6174696f6e2e>128
+211.2 Q F1<ad67656ead746774ad696e7472696e736963>108 228 Q F0
+<47656e657261746520746172>128 240 Q
+<67657420696e7472696e73696320696e666f726d6174696f6e2e>-.18 E F1
+<ad67656ead656e68616e636564ad646973617373656d626c79ad696e66>108 256.8 Q
+<6f>-.25 E F0
+<47656e657261746520656e68616e63656420646973617373656d626c7920696e666f2e>
+128 268.8 Q F1<ad76>108 285.6 Q<657273696f6e>-.1 E F0<53686f>128 297.6 Q
+2.5<7774>-.25 G<68652076>-2.5 E
+<657273696f6e206e756d626572206f6620746869732070726f6772616d2e>-.15 E/F3
+10.95/Times-Bold at 0 SF<45584954205354>72 314.4 Q -1.04<4154>-.986 G<5553>
+1.04 E F0<4966>108 326.4 Q F1<74626c67656e>2.5 E F0
+<73756363656564732c2069742077696c6c2065>2.5 E<786974207769746820302e>
+-.15 E<4f74686572776973652c20696620616e206572726f72206f63637572732c2069
+742077696c6c2065>5 E<78697420776974682061206e6f6e2d7a65726f2076>-.15 E
+<616c75652e>-.25 E F3 -.548<4155>72 343.2 S<54484f5253>.548 E F0
+<4d61696e7461696e656420627920546865>108 355.2 Q F2<4c4c>2.5 E<564d>-.9 E
+F0 -.7<5465>2.5 G<616d20283c687474703a2f2f6c6c766d2e6f72>.7 E
+<672f3e292e>-.18 E 188.72<43565320323031322d30322d3236>72 768 R<32>
+205.67 E 0 Cg EP
+%%Trailer
+end
+%%EOF

Added: www-releases/trunk/3.1/docs/CommandGuide/tblgen.pod
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandGuide/tblgen.pod?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandGuide/tblgen.pod (added)
+++ www-releases/trunk/3.1/docs/CommandGuide/tblgen.pod Tue May 22 14:32:29 2012
@@ -0,0 +1,139 @@
+
+=pod
+
+=head1 NAME
+
+tblgen - Target Description To C++ Code Generator
+
+=head1 SYNOPSIS
+
+B<tblgen> [I<options>] [I<filename>]
+
+=head1 DESCRIPTION
+
+B<tblgen> translates from target description (.td) files into C++ code that can
+be included in the definition of an LLVM target library. Most users of LLVM will
+not need to use this program. It is only for assisting with writing an LLVM
+target backend.
+
+The input and output of B<tblgen> is beyond the scope of this short
+introduction. Please see the I<CodeGeneration> page in the LLVM documentation.
+
+The F<filename> argument specifies the name of a Target Description (.td) file
+to read as input.
+
+=head1 OPTIONS
+
+=over
+
+=item B<-help>
+
+Print a summary of command line options.
+
+=item B<-o> F<filename>
+
+Specify the output file name.  If F<filename> is C<->, then B<tblgen>
+sends its output to standard output.
+
+=item B<-I> F<directory>
+
+Specify where to find other target description files for inclusion. The
+F<directory> value should be a full or partial path to a directory that contains
+target description files.
+
+=item B<-asmparsernum> F<N>
+
+Make -gen-asm-parser emit assembly writer number F<N>.
+
+=item B<-asmwriternum> F<N>
+
+Make -gen-asm-writer emit assembly writer number F<N>.
+
+=item B<-class> F<class Name>
+
+Print the enumeration list for this class.
+
+=item B<-print-records>
+
+Print all records to standard output (default).
+
+=item B<-print-enums>
+
+Print enumeration values for a class
+
+=item B<-print-sets>
+
+Print expanded sets for testing DAG exprs.
+
+=item B<-gen-emitter>
+
+Generate machine code emitter.
+
+=item B<-gen-register-info>
+
+Generate registers and register classes info.
+
+=item B<-gen-instr-info>
+
+Generate instruction descriptions.
+
+=item B<-gen-asm-writer>
+
+Generate the assembly writer.
+
+=item B<-gen-disassembler>
+
+Generate disassembler.
+
+=item B<-gen-pseudo-lowering>
+
+Generate pseudo instruction lowering.
+
+=item B<-gen-dag-isel>
+
+Generate a DAG (Directed Acycle Graph) instruction selector.
+
+=item B<-gen-asm-matcher>
+
+Generate assembly instruction matcher.
+
+=item B<-gen-dfa-packetizer>
+
+Generate DFA Packetizer for VLIW targets.
+
+=item B<-gen-fast-isel>
+
+Generate a "fast" instruction selector.
+
+=item B<-gen-subtarget>
+
+Generate subtarget enumerations.
+
+=item B<-gen-intrinsic>
+
+Generate intrinsic information.
+
+=item B<-gen-tgt-intrinsic>
+
+Generate target intrinsic information.
+
+=item B<-gen-enhanced-disassembly-info>
+
+Generate enhanced disassembly info.
+
+=item B<-version>
+
+Show the version number of this program.
+
+=back
+
+=head1 EXIT STATUS
+
+If B<tblgen> succeeds, it will exit with 0.  Otherwise, if an error
+occurs, it will exit with a non-zero value.
+
+=head1 AUTHORS
+
+Maintained by The LLVM Team (L<http://llvm.org/>).
+
+=cut

Added: www-releases/trunk/3.1/docs/CommandLine.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CommandLine.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CommandLine.html (added)
+++ www-releases/trunk/3.1/docs/CommandLine.html Tue May 22 14:32:29 2012
@@ -0,0 +1,1976 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>CommandLine 2.0 Library Manual</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+<body>
+
+<h1>
+  CommandLine 2.0 Library Manual
+</h1>
+
+<ol>
+  <li><a href="#introduction">Introduction</a></li>
+
+  <li><a href="#quickstart">Quick Start Guide</a>
+    <ol>
+      <li><a href="#bool">Boolean Arguments</a></li>
+      <li><a href="#alias">Argument Aliases</a></li>
+      <li><a href="#onealternative">Selecting an alternative from a
+                                    set of possibilities</a></li>
+      <li><a href="#namedalternatives">Named alternatives</a></li>
+      <li><a href="#list">Parsing a list of options</a></li>
+      <li><a href="#bits">Collecting options as a set of flags</a></li>
+      <li><a href="#description">Adding freeform text to help output</a></li>
+    </ol></li>
+
+  <li><a href="#referenceguide">Reference Guide</a>
+    <ol>
+      <li><a href="#positional">Positional Arguments</a>
+        <ul>
+        <li><a href="#--">Specifying positional options with hyphens</a></li>
+        <li><a href="#getPosition">Determining absolute position with
+          getPosition</a></li>
+        <li><a href="#cl::ConsumeAfter">The <tt>cl::ConsumeAfter</tt>
+             modifier</a></li>
+        </ul></li>
+
+      <li><a href="#storage">Internal vs External Storage</a></li>
+
+      <li><a href="#attributes">Option Attributes</a></li>
+
+      <li><a href="#modifiers">Option Modifiers</a>
+        <ul>
+        <li><a href="#hiding">Hiding an option from <tt>-help</tt>
+            output</a></li>
+        <li><a href="#numoccurrences">Controlling the number of occurrences
+                                     required and allowed</a></li>
+        <li><a href="#valrequired">Controlling whether or not a value must be
+                                   specified</a></li>
+        <li><a href="#formatting">Controlling other formatting options</a></li>
+        <li><a href="#misc">Miscellaneous option modifiers</a></li>
+        <li><a href="#response">Response files</a></li>
+        </ul></li>
+
+      <li><a href="#toplevel">Top-Level Classes and Functions</a>
+        <ul>
+        <li><a href="#cl::ParseCommandLineOptions">The
+            <tt>cl::ParseCommandLineOptions</tt> function</a></li>
+        <li><a href="#cl::ParseEnvironmentOptions">The
+            <tt>cl::ParseEnvironmentOptions</tt> function</a></li>
+        <li><a href="#cl::SetVersionPrinter">The <tt>cl::SetVersionPrinter</tt>
+          function</a></li>
+        <li><a href="#cl::opt">The <tt>cl::opt</tt> class</a></li>
+        <li><a href="#cl::list">The <tt>cl::list</tt> class</a></li>
+        <li><a href="#cl::bits">The <tt>cl::bits</tt> class</a></li>
+        <li><a href="#cl::alias">The <tt>cl::alias</tt> class</a></li>
+        <li><a href="#cl::extrahelp">The <tt>cl::extrahelp</tt> class</a></li>
+        </ul></li>
+
+      <li><a href="#builtinparsers">Builtin parsers</a>
+        <ul>
+        <li><a href="#genericparser">The Generic <tt>parser<t></tt>
+            parser</a></li>
+        <li><a href="#boolparser">The <tt>parser<bool></tt>
+            specialization</a></li>
+        <li><a href="#boolOrDefaultparser">The <tt>parser<boolOrDefault></tt>
+            specialization</a></li>
+        <li><a href="#stringparser">The <tt>parser<string></tt>
+            specialization</a></li>
+        <li><a href="#intparser">The <tt>parser<int></tt>
+            specialization</a></li>
+        <li><a href="#doubleparser">The <tt>parser<double></tt> and
+            <tt>parser<float></tt> specializations</a></li>
+        </ul></li>
+    </ol></li>
+  <li><a href="#extensionguide">Extension Guide</a>
+    <ol>
+      <li><a href="#customparser">Writing a custom parser</a></li>
+      <li><a href="#explotingexternal">Exploiting external storage</a></li>
+      <li><a href="#dynamicopts">Dynamically adding command line
+          options</a></li>
+    </ol></li>
+</ol>
+
+<div class="doc_author">
+  <p>Written by <a href="mailto:sabre at nondot.org">Chris Lattner</a></p>
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="introduction">Introduction</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>This document describes the CommandLine argument processing library.  It will
+show you how to use it, and what it can do.  The CommandLine library uses a
+declarative approach to specifying the command line options that your program
+takes.  By default, these options declarations implicitly hold the value parsed
+for the option declared (of course this <a href="#storage">can be
+changed</a>).</p>
+
+<p>Although there are a <b>lot</b> of command line argument parsing libraries
+out there in many different languages, none of them fit well with what I needed.
+By looking at the features and problems of other libraries, I designed the
+CommandLine library to have the following features:</p>
+
+<ol>
+<li>Speed: The CommandLine library is very quick and uses little resources.  The
+parsing time of the library is directly proportional to the number of arguments
+parsed, not the the number of options recognized.  Additionally, command line
+argument values are captured transparently into user defined global variables,
+which can be accessed like any other variable (and with the same
+performance).</li>
+
+<li>Type Safe: As a user of CommandLine, you don't have to worry about
+remembering the type of arguments that you want (is it an int?  a string? a
+bool? an enum?) and keep casting it around.  Not only does this help prevent
+error prone constructs, it also leads to dramatically cleaner source code.</li>
+
+<li>No subclasses required: To use CommandLine, you instantiate variables that
+correspond to the arguments that you would like to capture, you don't subclass a
+parser.  This means that you don't have to write <b>any</b> boilerplate
+code.</li>
+
+<li>Globally accessible: Libraries can specify command line arguments that are
+automatically enabled in any tool that links to the library.  This is possible
+because the application doesn't have to keep a list of arguments to pass to
+the parser.  This also makes supporting <a href="#dynamicopts">dynamically
+loaded options</a> trivial.</li>
+
+<li>Cleaner: CommandLine supports enum and other types directly, meaning that
+there is less error and more security built into the library.  You don't have to
+worry about whether your integral command line argument accidentally got
+assigned a value that is not valid for your enum type.</li>
+
+<li>Powerful: The CommandLine library supports many different types of
+arguments, from simple <a href="#boolparser">boolean flags</a> to <a
+href="#cl::opt">scalars arguments</a> (<a href="#stringparser">strings</a>, <a
+href="#intparser">integers</a>, <a href="#genericparser">enums</a>, <a
+href="#doubleparser">doubles</a>), to <a href="#cl::list">lists of
+arguments</a>.  This is possible because CommandLine is...</li>
+
+<li>Extensible: It is very simple to add a new argument type to CommandLine.
+Simply specify the parser that you want to use with the command line option when
+you declare it.  <a href="#customparser">Custom parsers</a> are no problem.</li>
+
+<li>Labor Saving: The CommandLine library cuts down on the amount of grunt work
+that you, the user, have to do.  For example, it automatically provides a
+<tt>-help</tt> option that shows the available command line options for your
+tool.  Additionally, it does most of the basic correctness checking for
+you.</li>
+
+<li>Capable: The CommandLine library can handle lots of different forms of
+options often found in real programs.  For example, <a
+href="#positional">positional</a> arguments, <tt>ls</tt> style <a
+href="#cl::Grouping">grouping</a> options (to allow processing '<tt>ls
+-lad</tt>' naturally), <tt>ld</tt> style <a href="#cl::Prefix">prefix</a>
+options (to parse '<tt>-lmalloc -L/usr/lib</tt>'), and <a
+href="#cl::ConsumeAfter">interpreter style options</a>.</li>
+
+</ol>
+
+<p>This document will hopefully let you jump in and start using CommandLine in
+your utility quickly and painlessly.  Additionally it should be a simple
+reference manual to figure out how stuff works.  If it is failing in some area
+(or you want an extension to the library), nag the author, <a
+href="mailto:sabre at nondot.org">Chris Lattner</a>.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="quickstart">Quick Start Guide</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>This section of the manual runs through a simple CommandLine'ification of a
+basic compiler tool.  This is intended to show you how to jump into using the
+CommandLine library in your own program, and show you some of the cool things it
+can do.</p>
+
+<p>To start out, you need to include the CommandLine header file into your
+program:</p>
+
+<div class="doc_code"><pre>
+  #include "llvm/Support/CommandLine.h"
+</pre></div>
+
+<p>Additionally, you need to add this as the first line of your main
+program:</p>
+
+<div class="doc_code"><pre>
+int main(int argc, char **argv) {
+  <a href="#cl::ParseCommandLineOptions">cl::ParseCommandLineOptions</a>(argc, argv);
+  ...
+}
+</pre></div>
+
+<p>... which actually parses the arguments and fills in the variable
+declarations.</p>
+
+<p>Now that you are ready to support command line arguments, we need to tell the
+system which ones we want, and what type of arguments they are.  The CommandLine
+library uses a declarative syntax to model command line arguments with the
+global variable declarations that capture the parsed values.  This means that
+for every command line option that you would like to support, there should be a
+global variable declaration to capture the result.  For example, in a compiler,
+we would like to support the Unix-standard '<tt>-o <filename></tt>' option
+to specify where to put the output.  With the CommandLine library, this is
+represented like this:</p>
+
+<a name="value_desc_example"></a>
+<div class="doc_code"><pre>
+<a href="#cl::opt">cl::opt</a><string> OutputFilename("<i>o</i>", <a href="#cl::desc">cl::desc</a>("<i>Specify output filename</i>"), <a href="#cl::value_desc">cl::value_desc</a>("<i>filename</i>"));
+</pre></div>
+
+<p>This declares a global variable "<tt>OutputFilename</tt>" that is used to
+capture the result of the "<tt>o</tt>" argument (first parameter).  We specify
+that this is a simple scalar option by using the "<tt><a
+href="#cl::opt">cl::opt</a></tt>" template (as opposed to the <a
+href="#list">"<tt>cl::list</tt> template</a>), and tell the CommandLine library
+that the data type that we are parsing is a string.</p>
+
+<p>The second and third parameters (which are optional) are used to specify what
+to output for the "<tt>-help</tt>" option.  In this case, we get a line that
+looks like this:</p>
+
+<div class="doc_code"><pre>
+USAGE: compiler [options]
+
+OPTIONS:
+  -help             - display available options (-help-hidden for more)
+  <b>-o <filename>     - Specify output filename</b>
+</pre></div>
+
+<p>Because we specified that the command line option should parse using the
+<tt>string</tt> data type, the variable declared is automatically usable as a
+real string in all contexts that a normal C++ string object may be used.  For
+example:</p>
+
+<div class="doc_code"><pre>
+  ...
+  std::ofstream Output(OutputFilename.c_str());
+  if (Output.good()) ...
+  ...
+</pre></div>
+
+<p>There are many different options that you can use to customize the command
+line option handling library, but the above example shows the general interface
+to these options.  The options can be specified in any order, and are specified
+with helper functions like <a href="#cl::desc"><tt>cl::desc(...)</tt></a>, so
+there are no positional dependencies to remember.  The available options are
+discussed in detail in the <a href="#referenceguide">Reference Guide</a>.</p>
+
+<p>Continuing the example, we would like to have our compiler take an input
+filename as well as an output filename, but we do not want the input filename to
+be specified with a hyphen (ie, not <tt>-filename.c</tt>).  To support this
+style of argument, the CommandLine library allows for <a
+href="#positional">positional</a> arguments to be specified for the program.
+These positional arguments are filled with command line parameters that are not
+in option form.  We use this feature like this:</p>
+
+<div class="doc_code"><pre>
+<a href="#cl::opt">cl::opt</a><string> InputFilename(<a href="#cl::Positional">cl::Positional</a>, <a href="#cl::desc">cl::desc</a>("<i><input file></i>"), <a href="#cl::init">cl::init</a>("<i>-</i>"));
+</pre></div>
+
+<p>This declaration indicates that the first positional argument should be
+treated as the input filename.  Here we use the <tt><a
+href="#cl::init">cl::init</a></tt> option to specify an initial value for the
+command line option, which is used if the option is not specified (if you do not
+specify a <tt><a href="#cl::init">cl::init</a></tt> modifier for an option, then
+the default constructor for the data type is used to initialize the value).
+Command line options default to being optional, so if we would like to require
+that the user always specify an input filename, we would add the <tt><a
+href="#cl::Required">cl::Required</a></tt> flag, and we could eliminate the
+<tt><a href="#cl::init">cl::init</a></tt> modifier, like this:</p>
+
+<div class="doc_code"><pre>
+<a href="#cl::opt">cl::opt</a><string> InputFilename(<a href="#cl::Positional">cl::Positional</a>, <a href="#cl::desc">cl::desc</a>("<i><input file></i>"), <b><a href="#cl::Required">cl::Required</a></b>);
+</pre></div>
+
+<p>Again, the CommandLine library does not require the options to be specified
+in any particular order, so the above declaration is equivalent to:</p>
+
+<div class="doc_code"><pre>
+<a href="#cl::opt">cl::opt</a><string> InputFilename(<a href="#cl::Positional">cl::Positional</a>, <a href="#cl::Required">cl::Required</a>, <a href="#cl::desc">cl::desc</a>("<i><input file></i>"));
+</pre></div>
+
+<p>By simply adding the <tt><a href="#cl::Required">cl::Required</a></tt> flag,
+the CommandLine library will automatically issue an error if the argument is not
+specified, which shifts all of the command line option verification code out of
+your application into the library.  This is just one example of how using flags
+can alter the default behaviour of the library, on a per-option basis.  By
+adding one of the declarations above, the <tt>-help</tt> option synopsis is now
+extended to:</p>
+
+<div class="doc_code"><pre>
+USAGE: compiler [options] <b><input file></b>
+
+OPTIONS:
+  -help             - display available options (-help-hidden for more)
+  -o <filename>     - Specify output filename
+</pre></div>
+
+<p>... indicating that an input filename is expected.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="bool">Boolean Arguments</a>
+</h3>
+
+<div>
+
+<p>In addition to input and output filenames, we would like the compiler example
+to support three boolean flags: "<tt>-f</tt>" to force writing binary output to
+a terminal, "<tt>--quiet</tt>" to enable quiet mode, and "<tt>-q</tt>" for
+backwards compatibility with some of our users.  We can support these by
+declaring options of boolean type like this:</p>
+
+<div class="doc_code"><pre>
+<a href="#cl::opt">cl::opt</a><bool> Force ("<i>f</i>", <a href="#cl::desc">cl::desc</a>("<i>Enable binary output on terminals</i>"));
+<a href="#cl::opt">cl::opt</a><bool> Quiet ("<i>quiet</i>", <a href="#cl::desc">cl::desc</a>("<i>Don't print informational messages</i>"));
+<a href="#cl::opt">cl::opt</a><bool> Quiet2("<i>q</i>", <a href="#cl::desc">cl::desc</a>("<i>Don't print informational messages</i>"), <a href="#cl::Hidden">cl::Hidden</a>);
+</pre></div>
+
+<p>This does what you would expect: it declares three boolean variables
+("<tt>Force</tt>", "<tt>Quiet</tt>", and "<tt>Quiet2</tt>") to recognize these
+options.  Note that the "<tt>-q</tt>" option is specified with the "<a
+href="#cl::Hidden"><tt>cl::Hidden</tt></a>" flag.  This modifier prevents it
+from being shown by the standard "<tt>-help</tt>" output (note that it is still
+shown in the "<tt>-help-hidden</tt>" output).</p>
+
+<p>The CommandLine library uses a <a href="#builtinparsers">different parser</a>
+for different data types.  For example, in the string case, the argument passed
+to the option is copied literally into the content of the string variable... we
+obviously cannot do that in the boolean case, however, so we must use a smarter
+parser.  In the case of the boolean parser, it allows no options (in which case
+it assigns the value of true to the variable), or it allows the values
+"<tt>true</tt>" or "<tt>false</tt>" to be specified, allowing any of the
+following inputs:</p>
+
+<div class="doc_code"><pre>
+ compiler -f          # No value, 'Force' == true
+ compiler -f=true     # Value specified, 'Force' == true
+ compiler -f=TRUE     # Value specified, 'Force' == true
+ compiler -f=FALSE    # Value specified, 'Force' == false
+</pre></div>
+
+<p>... you get the idea.  The <a href="#boolparser">bool parser</a> just turns
+the string values into boolean values, and rejects things like '<tt>compiler
+-f=foo</tt>'.  Similarly, the <a href="#doubleparser">float</a>, <a
+href="#doubleparser">double</a>, and <a href="#intparser">int</a> parsers work
+like you would expect, using the '<tt>strtol</tt>' and '<tt>strtod</tt>' C
+library calls to parse the string value into the specified data type.</p>
+
+<p>With the declarations above, "<tt>compiler -help</tt>" emits this:</p>
+
+<div class="doc_code"><pre>
+USAGE: compiler [options] <input file>
+
+OPTIONS:
+  <b>-f     - Enable binary output on terminals</b>
+  -o     - Override output filename
+  <b>-quiet - Don't print informational messages</b>
+  -help  - display available options (-help-hidden for more)
+</pre></div>
+
+<p>and "<tt>compiler -help-hidden</tt>" prints this:</p>
+
+<div class="doc_code"><pre>
+USAGE: compiler [options] <input file>
+
+OPTIONS:
+  -f     - Enable binary output on terminals
+  -o     - Override output filename
+  <b>-q     - Don't print informational messages</b>
+  -quiet - Don't print informational messages
+  -help  - display available options (-help-hidden for more)
+</pre></div>
+
+<p>This brief example has shown you how to use the '<tt><a
+href="#cl::opt">cl::opt</a></tt>' class to parse simple scalar command line
+arguments.  In addition to simple scalar arguments, the CommandLine library also
+provides primitives to support CommandLine option <a href="#alias">aliases</a>,
+and <a href="#list">lists</a> of options.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="alias">Argument Aliases</a>
+</h3>
+
+<div>
+
+<p>So far, the example works well, except for the fact that we need to check the
+quiet condition like this now:</p>
+
+<div class="doc_code"><pre>
+...
+  if (!Quiet && !Quiet2) printInformationalMessage(...);
+...
+</pre></div>
+
+<p>... which is a real pain!  Instead of defining two values for the same
+condition, we can use the "<tt><a href="#cl::alias">cl::alias</a></tt>" class to make the "<tt>-q</tt>"
+option an <b>alias</b> for the "<tt>-quiet</tt>" option, instead of providing
+a value itself:</p>
+
+<div class="doc_code"><pre>
+<a href="#cl::opt">cl::opt</a><bool> Force ("<i>f</i>", <a href="#cl::desc">cl::desc</a>("<i>Overwrite output files</i>"));
+<a href="#cl::opt">cl::opt</a><bool> Quiet ("<i>quiet</i>", <a href="#cl::desc">cl::desc</a>("<i>Don't print informational messages</i>"));
+<a href="#cl::alias">cl::alias</a>     QuietA("<i>q</i>", <a href="#cl::desc">cl::desc</a>("<i>Alias for -quiet</i>"), <a href="#cl::aliasopt">cl::aliasopt</a>(Quiet));
+</pre></div>
+
+<p>The third line (which is the only one we modified from above) defines a
+"<tt>-q</tt>" alias that updates the "<tt>Quiet</tt>" variable (as specified by
+the <tt><a href="#cl::aliasopt">cl::aliasopt</a></tt> modifier) whenever it is
+specified.  Because aliases do not hold state, the only thing the program has to
+query is the <tt>Quiet</tt> variable now.  Another nice feature of aliases is
+that they automatically hide themselves from the <tt>-help</tt> output
+(although, again, they are still visible in the <tt>-help-hidden
+output</tt>).</p>
+
+<p>Now the application code can simply use:</p>
+
+<div class="doc_code"><pre>
+...
+  if (!Quiet) printInformationalMessage(...);
+...
+</pre></div>
+
+<p>... which is much nicer!  The "<tt><a href="#cl::alias">cl::alias</a></tt>"
+can be used to specify an alternative name for any variable type, and has many
+uses.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="onealternative">Selecting an alternative from a set of
+  possibilities</a>
+</h3>
+
+<div>
+
+<p>So far we have seen how the CommandLine library handles builtin types like
+<tt>std::string</tt>, <tt>bool</tt> and <tt>int</tt>, but how does it handle
+things it doesn't know about, like enums or '<tt>int*</tt>'s?</p>
+
+<p>The answer is that it uses a table-driven generic parser (unless you specify
+your own parser, as described in the <a href="#extensionguide">Extension
+Guide</a>).  This parser maps literal strings to whatever type is required, and
+requires you to tell it what this mapping should be.</p>
+
+<p>Let's say that we would like to add four optimization levels to our
+optimizer, using the standard flags "<tt>-g</tt>", "<tt>-O0</tt>",
+"<tt>-O1</tt>", and "<tt>-O2</tt>".  We could easily implement this with boolean
+options like above, but there are several problems with this strategy:</p>
+
+<ol>
+<li>A user could specify more than one of the options at a time, for example,
+"<tt>compiler -O3 -O2</tt>".  The CommandLine library would not be able to
+catch this erroneous input for us.</li>
+
+<li>We would have to test 4 different variables to see which ones are set.</li>
+
+<li>This doesn't map to the numeric levels that we want... so we cannot easily
+see if some level >= "<tt>-O1</tt>" is enabled.</li>
+
+</ol>
+
+<p>To cope with these problems, we can use an enum value, and have the
+CommandLine library fill it in with the appropriate level directly, which is
+used like this:</p>
+
+<div class="doc_code"><pre>
+enum OptLevel {
+  g, O1, O2, O3
+};
+
+<a href="#cl::opt">cl::opt</a><OptLevel> OptimizationLevel(<a href="#cl::desc">cl::desc</a>("<i>Choose optimization level:</i>"),
+  <a href="#cl::values">cl::values</a>(
+    clEnumVal(g , "<i>No optimizations, enable debugging</i>"),
+    clEnumVal(O1, "<i>Enable trivial optimizations</i>"),
+    clEnumVal(O2, "<i>Enable default optimizations</i>"),
+    clEnumVal(O3, "<i>Enable expensive optimizations</i>"),
+   clEnumValEnd));
+
+...
+  if (OptimizationLevel >= O2) doPartialRedundancyElimination(...);
+...
+</pre></div>
+
+<p>This declaration defines a variable "<tt>OptimizationLevel</tt>" of the
+"<tt>OptLevel</tt>" enum type.  This variable can be assigned any of the values
+that are listed in the declaration (Note that the declaration list must be
+terminated with the "<tt>clEnumValEnd</tt>" argument!).  The CommandLine
+library enforces
+that the user can only specify one of the options, and it ensure that only valid
+enum values can be specified.  The "<tt>clEnumVal</tt>" macros ensure that the
+command line arguments matched the enum values.  With this option added, our
+help output now is:</p>
+
+<div class="doc_code"><pre>
+USAGE: compiler [options] <input file>
+
+OPTIONS:
+  <b>Choose optimization level:
+    -g          - No optimizations, enable debugging
+    -O1         - Enable trivial optimizations
+    -O2         - Enable default optimizations
+    -O3         - Enable expensive optimizations</b>
+  -f            - Enable binary output on terminals
+  -help         - display available options (-help-hidden for more)
+  -o <filename> - Specify output filename
+  -quiet        - Don't print informational messages
+</pre></div>
+
+<p>In this case, it is sort of awkward that flag names correspond directly to
+enum names, because we probably don't want a enum definition named "<tt>g</tt>"
+in our program.  Because of this, we can alternatively write this example like
+this:</p>
+
+<div class="doc_code"><pre>
+enum OptLevel {
+  Debug, O1, O2, O3
+};
+
+<a href="#cl::opt">cl::opt</a><OptLevel> OptimizationLevel(<a href="#cl::desc">cl::desc</a>("<i>Choose optimization level:</i>"),
+  <a href="#cl::values">cl::values</a>(
+   clEnumValN(Debug, "g", "<i>No optimizations, enable debugging</i>"),
+    clEnumVal(O1        , "<i>Enable trivial optimizations</i>"),
+    clEnumVal(O2        , "<i>Enable default optimizations</i>"),
+    clEnumVal(O3        , "<i>Enable expensive optimizations</i>"),
+   clEnumValEnd));
+
+...
+  if (OptimizationLevel == Debug) outputDebugInfo(...);
+...
+</pre></div>
+
+<p>By using the "<tt>clEnumValN</tt>" macro instead of "<tt>clEnumVal</tt>", we
+can directly specify the name that the flag should get.  In general a direct
+mapping is nice, but sometimes you can't or don't want to preserve the mapping,
+which is when you would use it.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="namedalternatives">Named Alternatives</a>
+</h3>
+
+<div>
+
+<p>Another useful argument form is a named alternative style.  We shall use this
+style in our compiler to specify different debug levels that can be used.
+Instead of each debug level being its own switch, we want to support the
+following options, of which only one can be specified at a time:
+"<tt>--debug-level=none</tt>", "<tt>--debug-level=quick</tt>",
+"<tt>--debug-level=detailed</tt>".  To do this, we use the exact same format as
+our optimization level flags, but we also specify an option name.  For this
+case, the code looks like this:</p>
+
+<div class="doc_code"><pre>
+enum DebugLev {
+  nodebuginfo, quick, detailed
+};
+
+// Enable Debug Options to be specified on the command line
+<a href="#cl::opt">cl::opt</a><DebugLev> DebugLevel("<i>debug_level</i>", <a href="#cl::desc">cl::desc</a>("<i>Set the debugging level:</i>"),
+  <a href="#cl::values">cl::values</a>(
+    clEnumValN(nodebuginfo, "none", "<i>disable debug information</i>"),
+     clEnumVal(quick,               "<i>enable quick debug information</i>"),
+     clEnumVal(detailed,            "<i>enable detailed debug information</i>"),
+    clEnumValEnd));
+</pre></div>
+
+<p>This definition defines an enumerated command line variable of type "<tt>enum
+DebugLev</tt>", which works exactly the same way as before.  The difference here
+is just the interface exposed to the user of your program and the help output by
+the "<tt>-help</tt>" option:</p>
+
+<div class="doc_code"><pre>
+USAGE: compiler [options] <input file>
+
+OPTIONS:
+  Choose optimization level:
+    -g          - No optimizations, enable debugging
+    -O1         - Enable trivial optimizations
+    -O2         - Enable default optimizations
+    -O3         - Enable expensive optimizations
+  <b>-debug_level  - Set the debugging level:
+    =none       - disable debug information
+    =quick      - enable quick debug information
+    =detailed   - enable detailed debug information</b>
+  -f            - Enable binary output on terminals
+  -help         - display available options (-help-hidden for more)
+  -o <filename> - Specify output filename
+  -quiet        - Don't print informational messages
+</pre></div>
+
+<p>Again, the only structural difference between the debug level declaration and
+the optimization level declaration is that the debug level declaration includes
+an option name (<tt>"debug_level"</tt>), which automatically changes how the
+library processes the argument.  The CommandLine library supports both forms so
+that you can choose the form most appropriate for your application.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="list">Parsing a list of options</a>
+</h3>
+
+<div>
+
+<p>Now that we have the standard run-of-the-mill argument types out of the way,
+lets get a little wild and crazy.  Lets say that we want our optimizer to accept
+a <b>list</b> of optimizations to perform, allowing duplicates.  For example, we
+might want to run: "<tt>compiler -dce -constprop -inline -dce -strip</tt>".  In
+this case, the order of the arguments and the number of appearances is very
+important.  This is what the "<tt><a href="#cl::list">cl::list</a></tt>"
+template is for.  First, start by defining an enum of the optimizations that you
+would like to perform:</p>
+
+<div class="doc_code"><pre>
+enum Opts {
+  // 'inline' is a C++ keyword, so name it 'inlining'
+  dce, constprop, inlining, strip
+};
+</pre></div>
+
+<p>Then define your "<tt><a href="#cl::list">cl::list</a></tt>" variable:</p>
+
+<div class="doc_code"><pre>
+<a href="#cl::list">cl::list</a><Opts> OptimizationList(<a href="#cl::desc">cl::desc</a>("<i>Available Optimizations:</i>"),
+  <a href="#cl::values">cl::values</a>(
+    clEnumVal(dce               , "<i>Dead Code Elimination</i>"),
+    clEnumVal(constprop         , "<i>Constant Propagation</i>"),
+   clEnumValN(inlining, "<i>inline</i>", "<i>Procedure Integration</i>"),
+    clEnumVal(strip             , "<i>Strip Symbols</i>"),
+  clEnumValEnd));
+</pre></div>
+
+<p>This defines a variable that is conceptually of the type
+"<tt>std::vector<enum Opts></tt>".  Thus, you can access it with standard
+vector methods:</p>
+
+<div class="doc_code"><pre>
+  for (unsigned i = 0; i != OptimizationList.size(); ++i)
+    switch (OptimizationList[i])
+       ...
+</pre></div>
+
+<p>... to iterate through the list of options specified.</p>
+
+<p>Note that the "<tt><a href="#cl::list">cl::list</a></tt>" template is
+completely general and may be used with any data types or other arguments that
+you can use with the "<tt><a href="#cl::opt">cl::opt</a></tt>" template.  One
+especially useful way to use a list is to capture all of the positional
+arguments together if there may be more than one specified.  In the case of a
+linker, for example, the linker takes several '<tt>.o</tt>' files, and needs to
+capture them into a list.  This is naturally specified as:</p>
+
+<div class="doc_code"><pre>
+...
+<a href="#cl::list">cl::list</a><std::string> InputFilenames(<a href="#cl::Positional">cl::Positional</a>, <a href="#cl::desc">cl::desc</a>("<Input files>"), <a href="#cl::OneOrMore">cl::OneOrMore</a>);
+...
+</pre></div>
+
+<p>This variable works just like a "<tt>vector<string></tt>" object.  As
+such, accessing the list is simple, just like above.  In this example, we used
+the <tt><a href="#cl::OneOrMore">cl::OneOrMore</a></tt> modifier to inform the
+CommandLine library that it is an error if the user does not specify any
+<tt>.o</tt> files on our command line.  Again, this just reduces the amount of
+checking we have to do.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="bits">Collecting options as a set of flags</a>
+</h3>
+
+<div>
+
+<p>Instead of collecting sets of options in a list, it is also possible to
+gather information for enum values in a <b>bit vector</b>.  The representation used by
+the <a href="#bits"><tt>cl::bits</tt></a> class is an <tt>unsigned</tt>
+integer.  An enum value is represented by a 0/1 in the enum's ordinal value bit
+position. 1 indicating that the enum was specified, 0 otherwise.  As each
+specified value is parsed, the resulting enum's bit is set in the option's bit
+vector:</p>
+
+<div class="doc_code"><pre>
+  <i>bits</i> |= 1 << (unsigned)<i>enum</i>;
+</pre></div>
+
+<p>Options that are specified multiple times are redundant.  Any instances after
+the first are discarded.</p>
+
+<p>Reworking the above list example, we could replace <a href="#list">
+<tt>cl::list</tt></a> with <a href="#bits"><tt>cl::bits</tt></a>:</p>
+
+<div class="doc_code"><pre>
+<a href="#cl::bits">cl::bits</a><Opts> OptimizationBits(<a href="#cl::desc">cl::desc</a>("<i>Available Optimizations:</i>"),
+  <a href="#cl::values">cl::values</a>(
+    clEnumVal(dce               , "<i>Dead Code Elimination</i>"),
+    clEnumVal(constprop         , "<i>Constant Propagation</i>"),
+   clEnumValN(inlining, "<i>inline</i>", "<i>Procedure Integration</i>"),
+    clEnumVal(strip             , "<i>Strip Symbols</i>"),
+  clEnumValEnd));
+</pre></div>
+
+<p>To test to see if <tt>constprop</tt> was specified, we can use the
+<tt>cl:bits::isSet</tt> function:</p>
+
+<div class="doc_code"><pre>
+  if (OptimizationBits.isSet(constprop)) {
+    ...
+  }
+</pre></div>
+
+<p>It's also possible to get the raw bit vector using the
+<tt>cl::bits::getBits</tt> function:</p>
+
+<div class="doc_code"><pre>
+  unsigned bits = OptimizationBits.getBits();
+</pre></div>
+
+<p>Finally, if external storage is used, then the location specified must be of
+<b>type</b> <tt>unsigned</tt>. In all other ways a <a
+href="#bits"><tt>cl::bits</tt></a> option is equivalent to a <a
+href="#list"> <tt>cl::list</tt></a> option.</p>
+
+</div>
+
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="description">Adding freeform text to help output</a>
+</h3>
+
+<div>
+
+<p>As our program grows and becomes more mature, we may decide to put summary
+information about what it does into the help output.  The help output is styled
+to look similar to a Unix <tt>man</tt> page, providing concise information about
+a program.  Unix <tt>man</tt> pages, however often have a description about what
+the program does.  To add this to your CommandLine program, simply pass a third
+argument to the <a
+href="#cl::ParseCommandLineOptions"><tt>cl::ParseCommandLineOptions</tt></a>
+call in main.  This additional argument is then printed as the overview
+information for your program, allowing you to include any additional information
+that you want.  For example:</p>
+
+<div class="doc_code"><pre>
+int main(int argc, char **argv) {
+  <a href="#cl::ParseCommandLineOptions">cl::ParseCommandLineOptions</a>(argc, argv, " CommandLine compiler example\n\n"
+                              "  This program blah blah blah...\n");
+  ...
+}
+</pre></div>
+
+<p>would yield the help output:</p>
+
+<div class="doc_code"><pre>
+<b>OVERVIEW: CommandLine compiler example
+
+  This program blah blah blah...</b>
+
+USAGE: compiler [options] <input file>
+
+OPTIONS:
+  ...
+  -help             - display available options (-help-hidden for more)
+  -o <filename>     - Specify output filename
+</pre></div>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="referenceguide">Reference Guide</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>Now that you know the basics of how to use the CommandLine library, this
+section will give you the detailed information you need to tune how command line
+options work, as well as information on more "advanced" command line option
+processing capabilities.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="positional">Positional Arguments</a>
+</h3>
+
+<div>
+
+<p>Positional arguments are those arguments that are not named, and are not
+specified with a hyphen.  Positional arguments should be used when an option is
+specified by its position alone.  For example, the standard Unix <tt>grep</tt>
+tool takes a regular expression argument, and an optional filename to search
+through (which defaults to standard input if a filename is not specified).
+Using the CommandLine library, this would be specified as:</p>
+
+<div class="doc_code"><pre>
+<a href="#cl::opt">cl::opt</a><string> Regex   (<a href="#cl::Positional">cl::Positional</a>, <a href="#cl::desc">cl::desc</a>("<i><regular expression></i>"), <a href="#cl::Required">cl::Required</a>);
+<a href="#cl::opt">cl::opt</a><string> Filename(<a href="#cl::Positional">cl::Positional</a>, <a href="#cl::desc">cl::desc</a>("<i><input file></i>"), <a href="#cl::init">cl::init</a>("<i>-</i>"));
+</pre></div>
+
+<p>Given these two option declarations, the <tt>-help</tt> output for our grep
+replacement would look like this:</p>
+
+<div class="doc_code"><pre>
+USAGE: spiffygrep [options] <b><regular expression> <input file></b>
+
+OPTIONS:
+  -help - display available options (-help-hidden for more)
+</pre></div>
+
+<p>... and the resultant program could be used just like the standard
+<tt>grep</tt> tool.</p>
+
+<p>Positional arguments are sorted by their order of construction.  This means
+that command line options will be ordered according to how they are listed in a
+.cpp file, but will not have an ordering defined if the positional arguments
+are defined in multiple .cpp files.  The fix for this problem is simply to
+define all of your positional arguments in one .cpp file.</p>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="--">Specifying positional options with hyphens</a>
+</h4>
+
+<div>
+
+<p>Sometimes you may want to specify a value to your positional argument that
+starts with a hyphen (for example, searching for '<tt>-foo</tt>' in a file).  At
+first, you will have trouble doing this, because it will try to find an argument
+named '<tt>-foo</tt>', and will fail (and single quotes will not save you).
+Note that the system <tt>grep</tt> has the same problem:</p>
+
+<div class="doc_code"><pre>
+  $ spiffygrep '-foo' test.txt
+  Unknown command line argument '-foo'.  Try: spiffygrep -help'
+
+  $ grep '-foo' test.txt
+  grep: illegal option -- f
+  grep: illegal option -- o
+  grep: illegal option -- o
+  Usage: grep -hblcnsviw pattern file . . .
+</pre></div>
+
+<p>The solution for this problem is the same for both your tool and the system
+version: use the '<tt>--</tt>' marker.  When the user specifies '<tt>--</tt>' on
+the command line, it is telling the program that all options after the
+'<tt>--</tt>' should be treated as positional arguments, not options.  Thus, we
+can use it like this:</p>
+
+<div class="doc_code"><pre>
+  $ spiffygrep -- -foo test.txt
+    ...output...
+</pre></div>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="getPosition">Determining absolute position with getPosition()</a>
+</h4>
+<div>
+  <p>Sometimes an option can affect or modify the meaning of another option. For
+  example, consider <tt>gcc</tt>'s <tt>-x LANG</tt> option. This tells
+  <tt>gcc</tt> to ignore the suffix of subsequent positional arguments and force
+  the file to be interpreted as if it contained source code in language
+  <tt>LANG</tt>. In order to handle this properly, you need to know the
+  absolute position of each argument, especially those in lists, so their
+  interaction(s) can be applied correctly. This is also useful for options like
+  <tt>-llibname</tt> which is actually a positional argument that starts with
+  a dash.</p>
+  <p>So, generally, the problem is that you have two <tt>cl::list</tt> variables
+  that interact in some way. To ensure the correct interaction, you can use the
+  <tt>cl::list::getPosition(optnum)</tt> method. This method returns the
+  absolute position (as found on the command line) of the <tt>optnum</tt>
+  item in the <tt>cl::list</tt>.</p>
+  <p>The idiom for usage is like this:</p>
+
+  <div class="doc_code"><pre>
+  static cl::list<std::string> Files(cl::Positional, cl::OneOrMore);
+  static cl::list<std::string> Libraries("l", cl::ZeroOrMore);
+
+  int main(int argc, char**argv) {
+    // ...
+    std::vector<std::string>::iterator fileIt = Files.begin();
+    std::vector<std::string>::iterator libIt  = Libraries.begin();
+    unsigned libPos = 0, filePos = 0;
+    while ( 1 ) {
+      if ( libIt != Libraries.end() )
+        libPos = Libraries.getPosition( libIt - Libraries.begin() );
+      else
+        libPos = 0;
+      if ( fileIt != Files.end() )
+        filePos = Files.getPosition( fileIt - Files.begin() );
+      else
+        filePos = 0;
+
+      if ( filePos != 0 && (libPos == 0 || filePos < libPos) ) {
+        // Source File Is next
+        ++fileIt;
+      }
+      else if ( libPos != 0 && (filePos == 0 || libPos < filePos) ) {
+        // Library is next
+        ++libIt;
+      }
+      else
+        break; // we're done with the list
+    }
+  }</pre></div>
+
+  <p>Note that, for compatibility reasons, the <tt>cl::opt</tt> also supports an
+  <tt>unsigned getPosition()</tt> option that will provide the absolute position
+  of that option. You can apply the same approach as above with a
+  <tt>cl::opt</tt> and a <tt>cl::list</tt> option as you can with two lists.</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="cl::ConsumeAfter">The <tt>cl::ConsumeAfter</tt> modifier</a>
+</h4>
+
+<div>
+
+<p>The <tt>cl::ConsumeAfter</tt> <a href="#formatting">formatting option</a> is
+used to construct programs that use "interpreter style" option processing.  With
+this style of option processing, all arguments specified after the last
+positional argument are treated as special interpreter arguments that are not
+interpreted by the command line argument.</p>
+
+<p>As a concrete example, lets say we are developing a replacement for the
+standard Unix Bourne shell (<tt>/bin/sh</tt>).  To run <tt>/bin/sh</tt>, first
+you specify options to the shell itself (like <tt>-x</tt> which turns on trace
+output), then you specify the name of the script to run, then you specify
+arguments to the script.  These arguments to the script are parsed by the Bourne
+shell command line option processor, but are not interpreted as options to the
+shell itself.  Using the CommandLine library, we would specify this as:</p>
+
+<div class="doc_code"><pre>
+<a href="#cl::opt">cl::opt</a><string> Script(<a href="#cl::Positional">cl::Positional</a>, <a href="#cl::desc">cl::desc</a>("<i><input script></i>"), <a href="#cl::init">cl::init</a>("-"));
+<a href="#cl::list">cl::list</a><string>  Argv(<a href="#cl::ConsumeAfter">cl::ConsumeAfter</a>, <a href="#cl::desc">cl::desc</a>("<i><program arguments>...</i>"));
+<a href="#cl::opt">cl::opt</a><bool>    Trace("<i>x</i>", <a href="#cl::desc">cl::desc</a>("<i>Enable trace output</i>"));
+</pre></div>
+
+<p>which automatically provides the help output:</p>
+
+<div class="doc_code"><pre>
+USAGE: spiffysh [options] <b><input script> <program arguments>...</b>
+
+OPTIONS:
+  -help - display available options (-help-hidden for more)
+  <b>-x    - Enable trace output</b>
+</pre></div>
+
+<p>At runtime, if we run our new shell replacement as `<tt>spiffysh -x test.sh
+-a -x -y bar</tt>', the <tt>Trace</tt> variable will be set to true, the
+<tt>Script</tt> variable will be set to "<tt>test.sh</tt>", and the
+<tt>Argv</tt> list will contain <tt>["-a", "-x", "-y", "bar"]</tt>, because they
+were specified after the last positional argument (which is the script
+name).</p>
+
+<p>There are several limitations to when <tt>cl::ConsumeAfter</tt> options can
+be specified.  For example, only one <tt>cl::ConsumeAfter</tt> can be specified
+per program, there must be at least one <a href="#positional">positional
+argument</a> specified, there must not be any <a href="#cl::list">cl::list</a>
+positional arguments, and the <tt>cl::ConsumeAfter</tt> option should be a <a
+href="#cl::list">cl::list</a> option.</p>
+
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="storage">Internal vs External Storage</a>
+</h3>
+
+<div>
+
+<p>By default, all command line options automatically hold the value that they
+parse from the command line.  This is very convenient in the common case,
+especially when combined with the ability to define command line options in the
+files that use them.  This is called the internal storage model.</p>
+
+<p>Sometimes, however, it is nice to separate the command line option processing
+code from the storage of the value parsed.  For example, lets say that we have a
+'<tt>-debug</tt>' option that we would like to use to enable debug information
+across the entire body of our program.  In this case, the boolean value
+controlling the debug code should be globally accessible (in a header file, for
+example) yet the command line option processing code should not be exposed to
+all of these clients (requiring lots of .cpp files to #include
+<tt>CommandLine.h</tt>).</p>
+
+<p>To do this, set up your .h file with your option, like this for example:</p>
+
+<div class="doc_code">
+<pre>
+<i>// DebugFlag.h - Get access to the '-debug' command line option
+//
+
+// DebugFlag - This boolean is set to true if the '-debug' command line option
+// is specified.  This should probably not be referenced directly, instead, use
+// the DEBUG macro below.
+//</i>
+extern bool DebugFlag;
+
+<i>// DEBUG macro - This macro should be used by code to emit debug information.
+// In the '-debug' option is specified on the command line, and if this is a
+// debug build, then the code specified as the option to the macro will be
+// executed.  Otherwise it will not be.</i>
+<span class="doc_hilite">#ifdef NDEBUG
+#define DEBUG(X)
+#else
+#define DEBUG(X)</span> do { if (DebugFlag) { X; } } while (0)
+<span class="doc_hilite">#endif</span>
+</pre>
+</div>
+
+<p>This allows clients to blissfully use the <tt>DEBUG()</tt> macro, or the
+<tt>DebugFlag</tt> explicitly if they want to.  Now we just need to be able to
+set the <tt>DebugFlag</tt> boolean when the option is set.  To do this, we pass
+an additional argument to our command line argument processor, and we specify
+where to fill in with the <a href="#cl::location">cl::location</a>
+attribute:</p>
+
+<div class="doc_code">
+<pre>
+bool DebugFlag;                  <i>// the actual value</i>
+static <a href="#cl::opt">cl::opt</a><bool, true>       <i>// The parser</i>
+Debug("<i>debug</i>", <a href="#cl::desc">cl::desc</a>("<i>Enable debug output</i>"), <a href="#cl::Hidden">cl::Hidden</a>, <a href="#cl::location">cl::location</a>(DebugFlag));
+</pre>
+</div>
+
+<p>In the above example, we specify "<tt>true</tt>" as the second argument to
+the <tt><a href="#cl::opt">cl::opt</a></tt> template, indicating that the
+template should not maintain a copy of the value itself.  In addition to this,
+we specify the <tt><a href="#cl::location">cl::location</a></tt> attribute, so
+that <tt>DebugFlag</tt> is automatically set.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="attributes">Option Attributes</a>
+</h3>
+
+<div>
+
+<p>This section describes the basic attributes that you can specify on
+options.</p>
+
+<ul>
+
+<li>The option name attribute (which is required for all options, except <a
+href="#positional">positional options</a>) specifies what the option name is.
+This option is specified in simple double quotes:
+
+<pre>
+<a href="#cl::opt">cl::opt</a><<b>bool</b>> Quiet("<i>quiet</i>");
+</pre>
+
+</li>
+
+<li><a name="cl::desc">The <b><tt>cl::desc</tt></b></a> attribute specifies a
+description for the option to be shown in the <tt>-help</tt> output for the
+program.</li>
+
+<li><a name="cl::value_desc">The <b><tt>cl::value_desc</tt></b></a> attribute
+specifies a string that can be used to fine tune the <tt>-help</tt> output for
+a command line option.  Look <a href="#value_desc_example">here</a> for an
+example.</li>
+
+<li><a name="cl::init">The <b><tt>cl::init</tt></b></a> attribute specifies an
+initial value for a <a href="#cl::opt">scalar</a> option.  If this attribute is
+not specified then the command line option value defaults to the value created
+by the default constructor for the type. <b>Warning</b>: If you specify both
+<b><tt>cl::init</tt></b> and <b><tt>cl::location</tt></b> for an option,
+you must specify <b><tt>cl::location</tt></b> first, so that when the
+command-line parser sees <b><tt>cl::init</tt></b>, it knows where to put the
+initial value. (You will get an error at runtime if you don't put them in
+the right order.)</li>
+
+<li><a name="cl::location">The <b><tt>cl::location</tt></b></a> attribute where
+to store the value for a parsed command line option if using external storage.
+See the section on <a href="#storage">Internal vs External Storage</a> for more
+information.</li>
+
+<li><a name="cl::aliasopt">The <b><tt>cl::aliasopt</tt></b></a> attribute
+specifies which option a <tt><a href="#cl::alias">cl::alias</a></tt> option is
+an alias for.</li>
+
+<li><a name="cl::values">The <b><tt>cl::values</tt></b></a> attribute specifies
+the string-to-value mapping to be used by the generic parser.  It takes a
+<b>clEnumValEnd terminated</b> list of (option, value, description) triplets
+that
+specify the option name, the value mapped to, and the description shown in the
+<tt>-help</tt> for the tool.  Because the generic parser is used most
+frequently with enum values, two macros are often useful:
+
+<ol>
+
+<li><a name="clEnumVal">The <b><tt>clEnumVal</tt></b></a> macro is used as a
+nice simple way to specify a triplet for an enum.  This macro automatically
+makes the option name be the same as the enum name.  The first option to the
+macro is the enum, the second is the description for the command line
+option.</li>
+
+<li><a name="clEnumValN">The <b><tt>clEnumValN</tt></b></a> macro is used to
+specify macro options where the option name doesn't equal the enum name.  For
+this macro, the first argument is the enum value, the second is the flag name,
+and the second is the description.</li>
+
+</ol>
+
+You will get a compile time error if you try to use cl::values with a parser
+that does not support it.</li>
+
+<li><a name="cl::multi_val">The <b><tt>cl::multi_val</tt></b></a>
+attribute specifies that this option takes has multiple values
+(example: <tt>-sectalign segname sectname sectvalue</tt>). This
+attribute takes one unsigned argument - the number of values for the
+option. This attribute is valid only on <tt>cl::list</tt> options (and
+will fail with compile error if you try to use it with other option
+types). It is allowed to use all of the usual modifiers on
+multi-valued options (besides <tt>cl::ValueDisallowed</tt>,
+obviously).</li>
+
+</ul>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="modifiers">Option Modifiers</a>
+</h3>
+
+<div>
+
+<p>Option modifiers are the flags and expressions that you pass into the
+constructors for <tt><a href="#cl::opt">cl::opt</a></tt> and <tt><a
+href="#cl::list">cl::list</a></tt>.  These modifiers give you the ability to
+tweak how options are parsed and how <tt>-help</tt> output is generated to fit
+your application well.</p>
+
+<p>These options fall into five main categories:</p>
+
+<ol>
+<li><a href="#hiding">Hiding an option from <tt>-help</tt> output</a></li>
+<li><a href="#numoccurrences">Controlling the number of occurrences
+                             required and allowed</a></li>
+<li><a href="#valrequired">Controlling whether or not a value must be
+                           specified</a></li>
+<li><a href="#formatting">Controlling other formatting options</a></li>
+<li><a href="#misc">Miscellaneous option modifiers</a></li>
+</ol>
+
+<p>It is not possible to specify two options from the same category (you'll get
+a runtime error) to a single option, except for options in the miscellaneous
+category.  The CommandLine library specifies defaults for all of these settings
+that are the most useful in practice and the most common, which mean that you
+usually shouldn't have to worry about these.</p>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="hiding">Hiding an option from <tt>-help</tt> output</a>
+</h4>
+
+<div>
+
+<p>The <tt>cl::NotHidden</tt>, <tt>cl::Hidden</tt>, and
+<tt>cl::ReallyHidden</tt> modifiers are used to control whether or not an option
+appears in the <tt>-help</tt> and <tt>-help-hidden</tt> output for the
+compiled program:</p>
+
+<ul>
+
+<li><a name="cl::NotHidden">The <b><tt>cl::NotHidden</tt></b></a> modifier
+(which is the default for <tt><a href="#cl::opt">cl::opt</a></tt> and <tt><a
+href="#cl::list">cl::list</a></tt> options) indicates the option is to appear
+in both help listings.</li>
+
+<li><a name="cl::Hidden">The <b><tt>cl::Hidden</tt></b></a> modifier (which is the
+default for <tt><a href="#cl::alias">cl::alias</a></tt> options) indicates that
+the option should not appear in the <tt>-help</tt> output, but should appear in
+the <tt>-help-hidden</tt> output.</li>
+
+<li><a name="cl::ReallyHidden">The <b><tt>cl::ReallyHidden</tt></b></a> modifier
+indicates that the option should not appear in any help output.</li>
+
+</ul>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="numoccurrences">Controlling the number of occurrences required and
+  allowed</a>
+</h4>
+
+<div>
+
+<p>This group of options is used to control how many time an option is allowed
+(or required) to be specified on the command line of your program.  Specifying a
+value for this setting allows the CommandLine library to do error checking for
+you.</p>
+
+<p>The allowed values for this option group are:</p>
+
+<ul>
+
+<li><a name="cl::Optional">The <b><tt>cl::Optional</tt></b></a> modifier (which
+is the default for the <tt><a href="#cl::opt">cl::opt</a></tt> and <tt><a
+href="#cl::alias">cl::alias</a></tt> classes) indicates that your program will
+allow either zero or one occurrence of the option to be specified.</li>
+
+<li><a name="cl::ZeroOrMore">The <b><tt>cl::ZeroOrMore</tt></b></a> modifier
+(which is the default for the <tt><a href="#cl::list">cl::list</a></tt> class)
+indicates that your program will allow the option to be specified zero or more
+times.</li>
+
+<li><a name="cl::Required">The <b><tt>cl::Required</tt></b></a> modifier
+indicates that the specified option must be specified exactly one time.</li>
+
+<li><a name="cl::OneOrMore">The <b><tt>cl::OneOrMore</tt></b></a> modifier
+indicates that the option must be specified at least one time.</li>
+
+<li>The <b><tt>cl::ConsumeAfter</tt></b> modifier is described in the <a
+href="#positional">Positional arguments section</a>.</li>
+
+</ul>
+
+<p>If an option is not specified, then the value of the option is equal to the
+value specified by the <tt><a href="#cl::init">cl::init</a></tt> attribute.  If
+the <tt><a href="#cl::init">cl::init</a></tt> attribute is not specified, the
+option value is initialized with the default constructor for the data type.</p>
+
+<p>If an option is specified multiple times for an option of the <tt><a
+href="#cl::opt">cl::opt</a></tt> class, only the last value will be
+retained.</p>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="valrequired">Controlling whether or not a value must be specified</a>
+</h4>
+
+<div>
+
+<p>This group of options is used to control whether or not the option allows a
+value to be present.  In the case of the CommandLine library, a value is either
+specified with an equal sign (e.g. '<tt>-index-depth=17</tt>') or as a trailing
+string (e.g. '<tt>-o a.out</tt>').</p>
+
+<p>The allowed values for this option group are:</p>
+
+<ul>
+
+<li><a name="cl::ValueOptional">The <b><tt>cl::ValueOptional</tt></b></a> modifier
+(which is the default for <tt>bool</tt> typed options) specifies that it is
+acceptable to have a value, or not.  A boolean argument can be enabled just by
+appearing on the command line, or it can have an explicit '<tt>-foo=true</tt>'.
+If an option is specified with this mode, it is illegal for the value to be
+provided without the equal sign.  Therefore '<tt>-foo true</tt>' is illegal.  To
+get this behavior, you must use the <a
+href="#cl::ValueRequired">cl::ValueRequired</a> modifier.</li>
+
+<li><a name="cl::ValueRequired">The <b><tt>cl::ValueRequired</tt></b></a> modifier
+(which is the default for all other types except for <a
+href="#onealternative">unnamed alternatives using the generic parser</a>)
+specifies that a value must be provided.  This mode informs the command line
+library that if an option is not provides with an equal sign, that the next
+argument provided must be the value.  This allows things like '<tt>-o
+a.out</tt>' to work.</li>
+
+<li><a name="cl::ValueDisallowed">The <b><tt>cl::ValueDisallowed</tt></b></a>
+modifier (which is the default for <a href="#onealternative">unnamed
+alternatives using the generic parser</a>) indicates that it is a runtime error
+for the user to specify a value.  This can be provided to disallow users from
+providing options to boolean options (like '<tt>-foo=true</tt>').</li>
+
+</ul>
+
+<p>In general, the default values for this option group work just like you would
+want them to.  As mentioned above, you can specify the <a
+href="#cl::ValueDisallowed">cl::ValueDisallowed</a> modifier to a boolean
+argument to restrict your command line parser.  These options are mostly useful
+when <a href="#extensionguide">extending the library</a>.</p>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="formatting">Controlling other formatting options</a>
+</h4>
+
+<div>
+
+<p>The formatting option group is used to specify that the command line option
+has special abilities and is otherwise different from other command line
+arguments.  As usual, you can only specify one of these arguments at most.</p>
+
+<ul>
+
+<li><a name="cl::NormalFormatting">The <b><tt>cl::NormalFormatting</tt></b></a>
+modifier (which is the default all options) specifies that this option is
+"normal".</li>
+
+<li><a name="cl::Positional">The <b><tt>cl::Positional</tt></b></a> modifier
+specifies that this is a positional argument that does not have a command line
+option associated with it.  See the <a href="#positional">Positional
+Arguments</a> section for more information.</li>
+
+<li>The <b><a href="#cl::ConsumeAfter"><tt>cl::ConsumeAfter</tt></a></b> modifier
+specifies that this option is used to capture "interpreter style" arguments.  See <a href="#cl::ConsumeAfter">this section for more information</a>.</li>
+
+<li><a name="cl::Prefix">The <b><tt>cl::Prefix</tt></b></a> modifier specifies
+that this option prefixes its value.  With 'Prefix' options, the equal sign does
+not separate the value from the option name specified. Instead, the value is
+everything after the prefix, including any equal sign if present. This is useful
+for processing odd arguments like <tt>-lmalloc</tt> and <tt>-L/usr/lib</tt> in a
+linker tool or <tt>-DNAME=value</tt> in a compiler tool.   Here, the
+'<tt>l</tt>', '<tt>D</tt>' and '<tt>L</tt>' options are normal string (or list)
+options, that have the <b><tt><a href="#cl::Prefix">cl::Prefix</a></tt></b>
+modifier added to allow the CommandLine library to recognize them.  Note that
+<b><tt><a href="#cl::Prefix">cl::Prefix</a></tt></b> options must not have the
+<b><tt><a href="#cl::ValueDisallowed">cl::ValueDisallowed</a></tt></b> modifier
+specified.</li>
+
+<li><a name="cl::Grouping">The <b><tt>cl::Grouping</tt></b></a> modifier is used
+to implement Unix-style tools (like <tt>ls</tt>) that have lots of single letter
+arguments, but only require a single dash.  For example, the '<tt>ls -labF</tt>'
+command actually enables four different options, all of which are single
+letters.  Note that <b><tt><a href="#cl::Grouping">cl::Grouping</a></tt></b>
+options cannot have values.</li>
+
+</ul>
+
+<p>The CommandLine library does not restrict how you use the <b><tt><a
+href="#cl::Prefix">cl::Prefix</a></tt></b> or <b><tt><a
+href="#cl::Grouping">cl::Grouping</a></tt></b> modifiers, but it is possible to
+specify ambiguous argument settings.  Thus, it is possible to have multiple
+letter options that are prefix or grouping options, and they will still work as
+designed.</p>
+
+<p>To do this, the CommandLine library uses a greedy algorithm to parse the
+input option into (potentially multiple) prefix and grouping options.  The
+strategy basically looks like this:</p>
+
+<div class="doc_code"><tt>parse(string OrigInput) {</tt>
+
+<ol>
+<li><tt>string input = OrigInput;</tt>
+<li><tt>if (isOption(input)) return getOption(input).parse();</tt>    <i>// Normal option</i>
+<li><tt>while (!isOption(input) && !input.empty()) input.pop_back();</tt>    <i>// Remove the last letter</i>
+<li><tt>if (input.empty()) return error();</tt>    <i>// No matching option</i>
+<li><tt>if (getOption(input).isPrefix())<br>
+  return getOption(input).parse(input);</tt>
+<li><tt>while (!input.empty()) {    <i>// Must be grouping options</i><br>
+  getOption(input).parse();<br>
+  OrigInput.erase(OrigInput.begin(), OrigInput.begin()+input.length());<br>
+  input = OrigInput;<br>
+  while (!isOption(input) && !input.empty()) input.pop_back();<br>
+}</tt>
+<li><tt>if (!OrigInput.empty()) error();</tt></li>
+</ol>
+
+<p><tt>}</tt></p>
+</div>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="misc">Miscellaneous option modifiers</a>
+</h4>
+
+<div>
+
+<p>The miscellaneous option modifiers are the only flags where you can specify
+more than one flag from the set: they are not mutually exclusive.  These flags
+specify boolean properties that modify the option.</p>
+
+<ul>
+
+<li><a name="cl::CommaSeparated">The <b><tt>cl::CommaSeparated</tt></b></a> modifier
+indicates that any commas specified for an option's value should be used to
+split the value up into multiple values for the option.  For example, these two
+options are equivalent when <tt>cl::CommaSeparated</tt> is specified:
+"<tt>-foo=a -foo=b -foo=c</tt>" and "<tt>-foo=a,b,c</tt>".  This option only
+makes sense to be used in a case where the option is allowed to accept one or
+more values (i.e. it is a <a href="#cl::list">cl::list</a> option).</li>
+
+<li><a name="cl::PositionalEatsArgs">The
+<b><tt>cl::PositionalEatsArgs</tt></b></a> modifier (which only applies to
+positional arguments, and only makes sense for lists) indicates that positional
+argument should consume any strings after it (including strings that start with
+a "-") up until another recognized positional argument.  For example, if you
+have two "eating" positional arguments, "<tt>pos1</tt>" and "<tt>pos2</tt>", the
+string "<tt>-pos1 -foo -bar baz -pos2 -bork</tt>" would cause the "<tt>-foo -bar
+-baz</tt>" strings to be applied to the "<tt>-pos1</tt>" option and the
+"<tt>-bork</tt>" string to be applied to the "<tt>-pos2</tt>" option.</li>
+
+<li><a name="cl::Sink">The <b><tt>cl::Sink</tt></b></a> modifier is
+used to handle unknown options. If there is at least one option with
+<tt>cl::Sink</tt> modifier specified, the parser passes
+unrecognized option strings to it as values instead of signaling an
+error. As with <tt>cl::CommaSeparated</tt>, this modifier
+only makes sense with a <a href="#cl::list">cl::list</a> option.</li>
+
+</ul>
+
+<p>So far, these are the only three miscellaneous option modifiers.</p>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="response">Response files</a>
+</h4>
+
+<div>
+
+<p>Some systems, such as certain variants of Microsoft Windows and
+some older Unices have a relatively low limit on command-line
+length. It is therefore customary to use the so-called 'response
+files' to circumvent this restriction. These files are mentioned on
+the command-line (using the "@file") syntax. The program reads these
+files and inserts the contents into argv, thereby working around the
+command-line length limits. Response files are enabled by an optional
+fourth argument to
+<a href="#cl::ParseEnvironmentOptions"><tt>cl::ParseEnvironmentOptions</tt></a>
+and
+<a href="#cl::ParseCommandLineOptions"><tt>cl::ParseCommandLineOptions</tt></a>.
+</p>
+
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="toplevel">Top-Level Classes and Functions</a>
+</h3>
+
+<div>
+
+<p>Despite all of the built-in flexibility, the CommandLine option library
+really only consists of one function (<a
+href="#cl::ParseCommandLineOptions"><tt>cl::ParseCommandLineOptions</tt></a>)
+and three main classes: <a href="#cl::opt"><tt>cl::opt</tt></a>, <a
+href="#cl::list"><tt>cl::list</tt></a>, and <a
+href="#cl::alias"><tt>cl::alias</tt></a>.  This section describes these three
+classes in detail.</p>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="cl::ParseCommandLineOptions">The <tt>cl::ParseCommandLineOptions</tt>
+  function</a>
+</h4>
+
+<div>
+
+<p>The <tt>cl::ParseCommandLineOptions</tt> function is designed to be called
+directly from <tt>main</tt>, and is used to fill in the values of all of the
+command line option variables once <tt>argc</tt> and <tt>argv</tt> are
+available.</p>
+
+<p>The <tt>cl::ParseCommandLineOptions</tt> function requires two parameters
+(<tt>argc</tt> and <tt>argv</tt>), but may also take an optional third parameter
+which holds <a href="#description">additional extra text</a> to emit when the
+<tt>-help</tt> option is invoked, and a fourth boolean parameter that enables
+<a href="#response">response files</a>.</p>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="cl::ParseEnvironmentOptions">The <tt>cl::ParseEnvironmentOptions</tt>
+  function</a>
+</h4>
+
+<div>
+
+<p>The <tt>cl::ParseEnvironmentOptions</tt> function has mostly the same effects
+as <a
+href="#cl::ParseCommandLineOptions"><tt>cl::ParseCommandLineOptions</tt></a>,
+except that it is designed to take values for options from an environment
+variable, for those cases in which reading the command line is not convenient or
+desired. It fills in the values of all the command line option variables just
+like <a
+href="#cl::ParseCommandLineOptions"><tt>cl::ParseCommandLineOptions</tt></a>
+does.</p>
+
+<p>It takes four parameters: the name of the program (since <tt>argv</tt> may
+not be available, it can't just look in <tt>argv[0]</tt>), the name of the
+environment variable to examine, the optional
+<a href="#description">additional extra text</a> to emit when the
+<tt>-help</tt> option is invoked, and the boolean
+switch that controls whether <a href="#response">response files</a>
+should be read.</p>
+
+<p><tt>cl::ParseEnvironmentOptions</tt> will break the environment
+variable's value up into words and then process them using
+<a href="#cl::ParseCommandLineOptions"><tt>cl::ParseCommandLineOptions</tt></a>.
+<b>Note:</b> Currently <tt>cl::ParseEnvironmentOptions</tt> does not support
+quoting, so an environment variable containing <tt>-option "foo bar"</tt> will
+be parsed as three words, <tt>-option</tt>, <tt>"foo</tt>, and <tt>bar"</tt>,
+which is different from what you would get from the shell with the same
+input.</p>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="cl::SetVersionPrinter">The <tt>cl::SetVersionPrinter</tt>
+  function</a>
+</h4>
+
+<div>
+
+<p>The <tt>cl::SetVersionPrinter</tt> function is designed to be called
+directly from <tt>main</tt> and <i>before</i>
+<tt>cl::ParseCommandLineOptions</tt>. Its use is optional. It simply arranges
+for a function to be called in response to the <tt>--version</tt> option instead
+of having the <tt>CommandLine</tt> library print out the usual version string
+for LLVM. This is useful for programs that are not part of LLVM but wish to use
+the <tt>CommandLine</tt> facilities. Such programs should just define a small
+function that takes no arguments and returns <tt>void</tt> and that prints out
+whatever version information is appropriate for the program. Pass the address
+of that function to <tt>cl::SetVersionPrinter</tt> to arrange for it to be
+called when the <tt>--version</tt> option is given by the user.</p>
+
+</div>
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="cl::opt">The <tt>cl::opt</tt> class</a>
+</h4>
+
+<div>
+
+<p>The <tt>cl::opt</tt> class is the class used to represent scalar command line
+options, and is the one used most of the time.  It is a templated class which
+can take up to three arguments (all except for the first have default values
+though):</p>
+
+<div class="doc_code"><pre>
+<b>namespace</b> cl {
+  <b>template</b> <<b>class</b> DataType, <b>bool</b> ExternalStorage = <b>false</b>,
+            <b>class</b> ParserClass = parser<DataType> >
+  <b>class</b> opt;
+}
+</pre></div>
+
+<p>The first template argument specifies what underlying data type the command
+line argument is, and is used to select a default parser implementation.  The
+second template argument is used to specify whether the option should contain
+the storage for the option (the default) or whether external storage should be
+used to contain the value parsed for the option (see <a href="#storage">Internal
+vs External Storage</a> for more information).</p>
+
+<p>The third template argument specifies which parser to use.  The default value
+selects an instantiation of the <tt>parser</tt> class based on the underlying
+data type of the option.  In general, this default works well for most
+applications, so this option is only used when using a <a
+href="#customparser">custom parser</a>.</p>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="cl::list">The <tt>cl::list</tt> class</a>
+</h4>
+
+<div>
+
+<p>The <tt>cl::list</tt> class is the class used to represent a list of command
+line options.  It too is a templated class which can take up to three
+arguments:</p>
+
+<div class="doc_code"><pre>
+<b>namespace</b> cl {
+  <b>template</b> <<b>class</b> DataType, <b>class</b> Storage = <b>bool</b>,
+            <b>class</b> ParserClass = parser<DataType> >
+  <b>class</b> list;
+}
+</pre></div>
+
+<p>This class works the exact same as the <a
+href="#cl::opt"><tt>cl::opt</tt></a> class, except that the second argument is
+the <b>type</b> of the external storage, not a boolean value.  For this class,
+the marker type '<tt>bool</tt>' is used to indicate that internal storage should
+be used.</p>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="cl::bits">The <tt>cl::bits</tt> class</a>
+</h4>
+
+<div>
+
+<p>The <tt>cl::bits</tt> class is the class used to represent a list of command
+line options in the form of a bit vector.  It is also a templated class which
+can take up to three arguments:</p>
+
+<div class="doc_code"><pre>
+<b>namespace</b> cl {
+  <b>template</b> <<b>class</b> DataType, <b>class</b> Storage = <b>bool</b>,
+            <b>class</b> ParserClass = parser<DataType> >
+  <b>class</b> bits;
+}
+</pre></div>
+
+<p>This class works the exact same as the <a
+href="#cl::opt"><tt>cl::lists</tt></a> class, except that the second argument
+must be of <b>type</b> <tt>unsigned</tt> if external storage is used.</p>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="cl::alias">The <tt>cl::alias</tt> class</a>
+</h4>
+
+<div>
+
+<p>The <tt>cl::alias</tt> class is a nontemplated class that is used to form
+aliases for other arguments.</p>
+
+<div class="doc_code"><pre>
+<b>namespace</b> cl {
+  <b>class</b> alias;
+}
+</pre></div>
+
+<p>The <a href="#cl::aliasopt"><tt>cl::aliasopt</tt></a> attribute should be
+used to specify which option this is an alias for.  Alias arguments default to
+being <a href="#cl::Hidden">Hidden</a>, and use the aliased options parser to do
+the conversion from string to data.</p>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="cl::extrahelp">The <tt>cl::extrahelp</tt> class</a>
+</h4>
+
+<div>
+
+<p>The <tt>cl::extrahelp</tt> class is a nontemplated class that allows extra
+help text to be printed out for the <tt>-help</tt> option.</p>
+
+<div class="doc_code"><pre>
+<b>namespace</b> cl {
+  <b>struct</b> extrahelp;
+}
+</pre></div>
+
+<p>To use the extrahelp, simply construct one with a <tt>const char*</tt>
+parameter to the constructor. The text passed to the constructor will be printed
+at the bottom of the help message, verbatim. Note that multiple
+<tt>cl::extrahelp</tt> <b>can</b> be used, but this practice is discouraged. If
+your tool needs to print additional help information, put all that help into a
+single <tt>cl::extrahelp</tt> instance.</p>
+<p>For example:</p>
+<div class="doc_code"><pre>
+  cl::extrahelp("\nADDITIONAL HELP:\n\n  This is the extra help\n");
+</pre></div>
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="builtinparsers">Builtin parsers</a>
+</h3>
+
+<div>
+
+<p>Parsers control how the string value taken from the command line is
+translated into a typed value, suitable for use in a C++ program.  By default,
+the CommandLine library uses an instance of <tt>parser<type></tt> if the
+command line option specifies that it uses values of type '<tt>type</tt>'.
+Because of this, custom option processing is specified with specializations of
+the '<tt>parser</tt>' class.</p>
+
+<p>The CommandLine library provides the following builtin parser
+specializations, which are sufficient for most applications. It can, however,
+also be extended to work with new data types and new ways of interpreting the
+same data.  See the <a href="#customparser">Writing a Custom Parser</a> for more
+details on this type of library extension.</p>
+
+<ul>
+
+<li><a name="genericparser">The <b>generic <tt>parser<t></tt> parser</b></a>
+can be used to map strings values to any data type, through the use of the <a
+href="#cl::values">cl::values</a> property, which specifies the mapping
+information.  The most common use of this parser is for parsing enum values,
+which allows you to use the CommandLine library for all of the error checking to
+make sure that only valid enum values are specified (as opposed to accepting
+arbitrary strings).  Despite this, however, the generic parser class can be used
+for any data type.</li>
+
+<li><a name="boolparser">The <b><tt>parser<bool></tt> specialization</b></a>
+is used to convert boolean strings to a boolean value.  Currently accepted
+strings are "<tt>true</tt>", "<tt>TRUE</tt>", "<tt>True</tt>", "<tt>1</tt>",
+"<tt>false</tt>", "<tt>FALSE</tt>", "<tt>False</tt>", and "<tt>0</tt>".</li>
+
+<li><a name="boolOrDefaultparser">The <b><tt>parser<boolOrDefault></tt>
+ specialization</b></a> is used for cases where the value is boolean,
+but we also need to know whether the option was specified at all.  boolOrDefault
+is an enum with 3 values, BOU_UNSET, BOU_TRUE and BOU_FALSE.  This parser accepts
+the same strings as <b><tt>parser<bool></tt></b>.</li>
+
+<li><a name="stringparser">The <b><tt>parser<string></tt>
+specialization</b></a> simply stores the parsed string into the string value
+specified.  No conversion or modification of the data is performed.</li>
+
+<li><a name="intparser">The <b><tt>parser<int></tt> specialization</b></a>
+uses the C <tt>strtol</tt> function to parse the string input.  As such, it will
+accept a decimal number (with an optional '+' or '-' prefix) which must start
+with a non-zero digit.  It accepts octal numbers, which are identified with a
+'<tt>0</tt>' prefix digit, and hexadecimal numbers with a prefix of
+'<tt>0x</tt>' or '<tt>0X</tt>'.</li>
+
+<li><a name="doubleparser">The <b><tt>parser<double></tt></b></a> and
+<b><tt>parser<float></tt> specializations</b> use the standard C
+<tt>strtod</tt> function to convert floating point strings into floating point
+values.  As such, a broad range of string formats is supported, including
+exponential notation (ex: <tt>1.7e15</tt>) and properly supports locales.
+</li>
+
+</ul>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="extensionguide">Extension Guide</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>Although the CommandLine library has a lot of functionality built into it
+already (as discussed previously), one of its true strengths lie in its
+extensibility.  This section discusses how the CommandLine library works under
+the covers and illustrates how to do some simple, common, extensions.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="customparser">Writing a custom parser</a>
+</h3>
+
+<div>
+
+<p>One of the simplest and most common extensions is the use of a custom parser.
+As <a href="#builtinparsers">discussed previously</a>, parsers are the portion
+of the CommandLine library that turns string input from the user into a
+particular parsed data type, validating the input in the process.</p>
+
+<p>There are two ways to use a new parser:</p>
+
+<ol>
+
+<li>
+
+<p>Specialize the <a href="#genericparser"><tt>cl::parser</tt></a> template for
+your custom data type.<p>
+
+<p>This approach has the advantage that users of your custom data type will
+automatically use your custom parser whenever they define an option with a value
+type of your data type.  The disadvantage of this approach is that it doesn't
+work if your fundamental data type is something that is already supported.</p>
+
+</li>
+
+<li>
+
+<p>Write an independent class, using it explicitly from options that need
+it.</p>
+
+<p>This approach works well in situations where you would line to parse an
+option using special syntax for a not-very-special data-type.  The drawback of
+this approach is that users of your parser have to be aware that they are using
+your parser instead of the builtin ones.</p>
+
+</li>
+
+</ol>
+
+<p>To guide the discussion, we will discuss a custom parser that accepts file
+sizes, specified with an optional unit after the numeric size.  For example, we
+would like to parse "102kb", "41M", "1G" into the appropriate integer value.  In
+this case, the underlying data type we want to parse into is
+'<tt>unsigned</tt>'.  We choose approach #2 above because we don't want to make
+this the default for all <tt>unsigned</tt> options.</p>
+
+<p>To start out, we declare our new <tt>FileSizeParser</tt> class:</p>
+
+<div class="doc_code"><pre>
+<b>struct</b> FileSizeParser : <b>public</b> cl::basic_parser<<b>unsigned</b>> {
+  <i>// parse - Return true on error.</i>
+  <b>bool</b> parse(cl::Option &O, <b>const char</b> *ArgName, <b>const</b> std::string &ArgValue,
+             <b>unsigned</b> &Val);
+};
+</pre></div>
+
+<p>Our new class inherits from the <tt>cl::basic_parser</tt> template class to
+fill in the default, boiler plate code for us.  We give it the data type that
+we parse into, the last argument to the <tt>parse</tt> method, so that clients of
+our custom parser know what object type to pass in to the parse method.  (Here we
+declare that we parse into '<tt>unsigned</tt>' variables.)</p>
+
+<p>For most purposes, the only method that must be implemented in a custom
+parser is the <tt>parse</tt> method.  The <tt>parse</tt> method is called
+whenever the option is invoked, passing in the option itself, the option name,
+the string to parse, and a reference to a return value.  If the string to parse
+is not well-formed, the parser should output an error message and return true.
+Otherwise it should return false and set '<tt>Val</tt>' to the parsed value.  In
+our example, we implement <tt>parse</tt> as:</p>
+
+<div class="doc_code"><pre>
+<b>bool</b> FileSizeParser::parse(cl::Option &O, <b>const char</b> *ArgName,
+                           <b>const</b> std::string &Arg, <b>unsigned</b> &Val) {
+  <b>const char</b> *ArgStart = Arg.c_str();
+  <b>char</b> *End;
+
+  <i>// Parse integer part, leaving 'End' pointing to the first non-integer char</i>
+  Val = (unsigned)strtol(ArgStart, &End, 0);
+
+  <b>while</b> (1) {
+    <b>switch</b> (*End++) {
+    <b>case</b> 0: <b>return</b> false;   <i>// No error</i>
+    <b>case</b> 'i':               <i>// Ignore the 'i' in KiB if people use that</i>
+    <b>case</b> 'b': <b>case</b> 'B':     <i>// Ignore B suffix</i>
+      <b>break</b>;
+
+    <b>case</b> 'g': <b>case</b> 'G': Val *= 1024*1024*1024; <b>break</b>;
+    <b>case</b> 'm': <b>case</b> 'M': Val *= 1024*1024;      <b>break</b>;
+    <b>case</b> 'k': <b>case</b> 'K': Val *= 1024;           <b>break</b>;
+
+    default:
+      <i>// Print an error message if unrecognized character!</i>
+      <b>return</b> O.error("'" + Arg + "' value invalid for file size argument!");
+    }
+  }
+}
+</pre></div>
+
+<p>This function implements a very simple parser for the kinds of strings we are
+interested in.  Although it has some holes (it allows "<tt>123KKK</tt>" for
+example), it is good enough for this example.  Note that we use the option
+itself to print out the error message (the <tt>error</tt> method always returns
+true) in order to get a nice error message (shown below).  Now that we have our
+parser class, we can use it like this:</p>
+
+<div class="doc_code"><pre>
+<b>static</b> <a href="#cl::opt">cl::opt</a><<b>unsigned</b>, <b>false</b>, FileSizeParser>
+MFS(<i>"max-file-size"</i>, <a href="#cl::desc">cl::desc</a>(<i>"Maximum file size to accept"</i>),
+    <a href="#cl::value_desc">cl::value_desc</a>("<i>size</i>"));
+</pre></div>
+
+<p>Which adds this to the output of our program:</p>
+
+<div class="doc_code"><pre>
+OPTIONS:
+  -help                 - display available options (-help-hidden for more)
+  ...
+  <b>-max-file-size=<size> - Maximum file size to accept</b>
+</pre></div>
+
+<p>And we can test that our parse works correctly now (the test program just
+prints out the max-file-size argument value):</p>
+
+<div class="doc_code"><pre>
+$ ./test
+MFS: 0
+$ ./test -max-file-size=123MB
+MFS: 128974848
+$ ./test -max-file-size=3G
+MFS: 3221225472
+$ ./test -max-file-size=dog
+-max-file-size option: 'dog' value invalid for file size argument!
+</pre></div>
+
+<p>It looks like it works.  The error message that we get is nice and helpful,
+and we seem to accept reasonable file sizes.  This wraps up the "custom parser"
+tutorial.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="explotingexternal">Exploiting external storage</a>
+</h3>
+
+<div>
+  <p>Several of the LLVM libraries define static <tt>cl::opt</tt> instances that
+  will automatically be included in any program that links with that library.
+  This is a feature. However, sometimes it is necessary to know the value of the
+  command line option outside of the library. In these cases the library does or
+  should provide an external storage location that is accessible to users of the
+  library. Examples of this include the <tt>llvm::DebugFlag</tt> exported by the
+  <tt>lib/Support/Debug.cpp</tt> file and the <tt>llvm::TimePassesIsEnabled</tt>
+  flag exported by the <tt>lib/VMCore/Pass.cpp</tt> file.</p>
+
+<p>TODO: complete this section</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="dynamicopts">Dynamically adding command line options</a>
+</h3>
+
+<div>
+
+<p>TODO: fill in this section</p>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+
+  <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
+  <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date: 2011-04-22 17:30:22 -0700 (Fri, 22 Apr 2011) $
+</address>
+
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/CompilerWriterInfo.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/CompilerWriterInfo.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/CompilerWriterInfo.html (added)
+++ www-releases/trunk/3.1/docs/CompilerWriterInfo.html Tue May 22 14:32:29 2012
@@ -0,0 +1,267 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>Architecture/platform information for compiler writers</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+
+<body>
+
+<h1>
+  Architecture/platform information for compiler writers
+</h1>
+
+<div class="doc_warning">
+  <p>Note: This document is a work-in-progress.  Additions and clarifications
+  are welcome.</p>
+</div>
+
+<ol>
+  <li><a href="#hw">Hardware</a>
+  <ol>
+    <li><a href="#arm">ARM</a></li>
+    <li><a href="#ia64">Itanium</a></li>
+    <li><a href="#mips">MIPS</a></li>
+    <li><a href="#ppc">PowerPC</a></li>
+    <li><a href="#sparc">SPARC</a></li>
+    <li><a href="#x86">X86</a></li>
+    <li><a href="#other">Other lists</a></li>
+  </ol></li>
+  <li><a href="#abi">Application Binary Interface (ABI)</a>
+  <ol>
+    <li><a href="#linux">Linux</a></li>
+    <li><a href="#osx">OS X</a></li>
+  </ol></li>
+  <li><a href="#misc">Miscellaneous resources</a></li>
+</ol>
+
+<div class="doc_author">
+  <p>Compiled by <a href="http://misha.brukman.net">Misha Brukman</a></p>
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="hw">Hardware</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<!-- ======================================================================= -->
+<h3><a name="arm">ARM</a></h3>
+
+<div>
+<ul>
+<li><a href="http://www.arm.com/documentation/">ARM documentation</a> 
+(<a href="http://www.arm.com/documentation/ARMProcessor_Cores/">Processor
+Cores</a>)</li>
+<li><a href="http://www.arm.com/products/DevTools/ABI.html">ABI</a></li>
+</ul>
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="ia64">Itanium (ia64)</a></h3>
+
+<div>
+<ul>
+<li><a
+href="http://developer.intel.com/design/itanium2/documentation.htm">Itanium documentation</a> 
+</li>
+</ul>
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="mips">MIPS</a></h3>
+
+<div>
+<ul>
+<li><a
+href="http://mips.com/content/Documentation/MIPSDocumentation/ProcessorArchitecture/doclibrary">MIPS
+Processor Architecture</a></li>
+</ul>
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="ppc">PowerPC</a></h3>
+
+<div>
+
+<!-- _______________________________________________________________________ -->
+<h4>IBM - Official manuals and docs</h4>
+
+<div>
+
+<ul>
+<li><a
+href="http://www-106.ibm.com/developerworks/eserver/articles/archguide.html">PowerPC
+Architecture Book</a>
+<ul>
+  <li>Book I: <a
+  href="http://www-106.ibm.com/developerworks/eserver/pdfs/archpub1.pdf">PowerPC
+  User Instruction Set Architecture</a></li>
+  <li>Book II: <a
+  href="http://www-106.ibm.com/developerworks/eserver/pdfs/archpub2.pdf">PowerPC
+  Virtual Environment Architecture</a></li>
+  <li>Book III: <a
+  href="http://www-106.ibm.com/developerworks/eserver/pdfs/archpub3.pdf">PowerPC
+  Operating Environment Architecture</a></li>
+</ul></li>
+<li><a
+href="http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF7785256996007558C6">PowerPC
+Compiler Writer's Guide</a></li>
+<li><A
+href="http://www-3.ibm.com/chips/techlib/techlib.nsf/products/PowerPC">PowerPC
+Processor Manuals</a></li>
+<li><a
+href="http://www-106.ibm.com/developerworks/linux/library/l-powarch/">Intro to
+PowerPC architecture</a></li>
+<li><a href="http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixassem/alangref/alangreftfrm.htm">IBM AIX/5L for POWER Assembly reference</a></li>
+</ul>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>Other documents, collections, notes</h4>
+
+<div>
+
+<ul>
+<li><a href="http://penguinppc.org/dev/#library">PowerPC ABI documents</a></li>
+<li><a href="http://gcc.gnu.org/ml/gcc-patches/2003-09/msg00997.html">PowerPC64
+alignment of long doubles (from GCC)</a></li>
+<li><a href="http://sources.redhat.com/ml/binutils/2002-04/msg00573.html">Long
+branch stubs for powerpc64-linux (from binutils)</a></li>
+</ul>
+
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="sparc">SPARC</a></h3>
+
+<div>
+
+<ul>
+<li><a href="http://www.sparc.org/resource.htm">SPARC resources</a></li>
+<li><a href="http://www.sparc.org/standards.html">SPARC standards</a></li>
+</ul>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="x86">X86</a></h3>
+
+<div>
+
+<!-- _______________________________________________________________________ -->
+<h4>AMD - Official manuals and docs</h4>
+
+<div>
+<ul>
+<li><a
+href="http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_739,00.html">AMD processor manuals</a></li>
+<li><a href="http://www.x86-64.org/documentation">X86-64 ABI</a></li>
+</ul>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>Intel - Official manuals and docs</h4>
+
+<div>
+<ul>
+<li><a
+href="http://developer.intel.com/design/pentium4/manuals/index_new.htm">IA-32
+manuals</a></li>
+<li><a
+href="http://www.intel.com/design/itanium/documentation.htm?iid=ipp_srvr_proc_itanium2+techdocs">Intel
+Itanium documentation</a></li>
+</ul>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>Other x86-specific information</h4>
+
+<div>
+<ul>
+<li><a href="http://www.agner.org/assem/calling_conventions.pdf">Calling
+conventions for different C++ compilers and operating systems</a></li>
+</ul>
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="other">Other relevant lists</a></h3>
+
+<div>
+
+<ul>
+<li><a href="http://gcc.gnu.org/readings.html">GCC reading list</a></li>
+</ul>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="abi">ABI</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<!-- ======================================================================= -->
+<h3><a name="linux">Linux</a></h3>
+
+<div>
+<ol>
+<li><a href="http://www.linuxbase.org/spec/ELF/ppc64/">PowerPC 64-bit ELF ABI
+Supplement</a></li>
+</ol>
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="osx">OS X</a></h3>
+
+<div>
+<ol>
+<li><a
+href="http://developer.apple.com/documentation/Darwin/RuntimeArchitecture-date.html">Mach-O
+Runtime Architecture</a></li>
+<li><a href="http://www.unsanity.org/archives/000044.php">Notes on Mach-O
+ABI</a></li>
+</ol>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="misc">Miscellaneous resources</a></h2>
+<!-- *********************************************************************** -->
+
+<ul>
+<li><a
+href="http://www.nondot.org/sabre/os/articles/ExecutableFileFormats/">Executable
+File Format library</a></li>
+<li><a href="http://gcc.gnu.org/projects/prefetch.html">GCC prefetch project</a>
+page has a good survey of the prefetching capabilities of a variety of modern
+processors.</li>
+</ul>
+
+<!-- *********************************************************************** -->
+
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+
+  <a href="http://misha.brukman.net">Misha Brukman</a><br>
+  <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date: 2011-10-27 15:56:32 -0700 (Thu, 27 Oct 2011) $
+</address>
+
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/DebuggingJITedCode.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/DebuggingJITedCode.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/DebuggingJITedCode.html (added)
+++ www-releases/trunk/3.1/docs/DebuggingJITedCode.html Tue May 22 14:32:29 2012
@@ -0,0 +1,184 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>Debugging JITed Code With GDB</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+<body>
+
+<h1>Debugging JIT-ed Code With GDB</h1>
+<ol>
+  <li><a href="#background">Background</a></li>
+  <li><a href="#gdbversion">GDB Version</a></li>
+  <li><a href="#mcjitdebug">Debugging MCJIT-ed code</a></li>
+  <ul>
+    <li><a href="#mcjitdebug_example">Example</a></li>
+  </ul>
+</ol>
+<div class="doc_author">Written by Reid Kleckner and Eli Bendersky</div>
+
+<!--=========================================================================-->
+<h2><a name="background">Background</a></h2>
+<!--=========================================================================-->
+<div>
+
+<p>Without special runtime support, debugging dynamically generated code with
+GDB (as well as most debuggers) can be quite painful.  Debuggers generally read
+debug information from the object file of the code, but for JITed code, there is
+no such file to look for.
+</p>
+
+<p>In order to communicate the necessary debug info to GDB, an interface for
+registering JITed code with debuggers has been designed and implemented for
+GDB and LLVM MCJIT.  At a high level, whenever MCJIT generates new machine code,
+it does so in an in-memory object file that contains the debug information in
+DWARF format.  MCJIT then adds this in-memory object file to a global list of
+dynamically generated object files and calls a special function
+(<tt>__jit_debug_register_code</tt>) marked noinline that GDB knows about.  When
+GDB attaches to a process, it puts a breakpoint in this function and loads all
+of the object files in the global list.  When MCJIT calls the registration
+function, GDB catches the breakpoint signal, loads the new object file from
+the inferior's memory, and resumes the execution.  In this way, GDB can get the
+necessary debug information.
+</p>
+</div>
+
+<!--=========================================================================-->
+<h2><a name="gdbversion">GDB Version</a></h2>
+<!--=========================================================================-->
+
+<p>In order to debug code JIT-ed by LLVM, you need GDB 7.0 or newer, which is
+available on most modern distributions of Linux.  The version of GDB that Apple
+ships with XCode has been frozen at 6.3 for a while.  LLDB may be a better
+option for debugging JIT-ed code on Mac OS X.
+</p>
+
+
+<!--=========================================================================-->
+<h2><a name="mcjitdebug">Debugging MCJIT-ed code</a></h2>
+<!--=========================================================================-->
+<div>
+
+<p>The emerging MCJIT component of LLVM allows full debugging of JIT-ed code with
+GDB.  This is due to MCJIT's ability to use the MC emitter to provide full
+DWARF debugging information to GDB.</p>
+
+<p>Note that lli has to be passed the <tt>-use-mcjit</tt> flag to JIT the code
+with MCJIT instead of the old JIT.</p>
+
+<h3><a name="mcjitdebug_example">Example</a></h3>
+
+<div>
+
+<p>Consider the following C code (with line numbers added to make the example
+easier to follow):</p>
+
+<pre class="doc_code">
+1   int compute_factorial(int n)
+2   {
+3       if (n <= 1)
+4           return 1;
+5
+6       int f = n;
+7       while (--n > 1) 
+8           f *= n;
+9       return f;
+10  }
+11
+12
+13  int main(int argc, char** argv)
+14  {
+15      if (argc < 2)
+16          return -1;
+17      char firstletter = argv[1][0];
+18      int result = compute_factorial(firstletter - '0');
+19  
+20      // Returned result is clipped at 255...
+21      return result;
+22  }
+</pre>
+
+<p>Here is a sample command line session that shows how to build and run this
+code via lli inside GDB:
+</p>
+
+<pre class="doc_code">
+$ $BINPATH/clang -cc1 -O0 -g -emit-llvm showdebug.c
+$ gdb --quiet --args $BINPATH/lli -use-mcjit showdebug.ll 5
+Reading symbols from $BINPATH/lli...done.
+(gdb) b showdebug.c:6
+No source file named showdebug.c.
+Make breakpoint pending on future shared library load? (y or [n]) y
+Breakpoint 1 (showdebug.c:6) pending.
+(gdb) r
+Starting program: $BINPATH/lli -use-mcjit showdebug.ll 5
+[Thread debugging using libthread_db enabled]
+
+Breakpoint 1, compute_factorial (n=5) at showdebug.c:6
+6	    int f = n;
+(gdb) p n
+$1 = 5
+(gdb) p f
+$2 = 0
+(gdb) n
+7	    while (--n > 1) 
+(gdb) p f
+$3 = 5
+(gdb) b showdebug.c:9
+Breakpoint 2 at 0x7ffff7ed404c: file showdebug.c, line 9.
+(gdb) c
+Continuing.
+
+Breakpoint 2, compute_factorial (n=1) at showdebug.c:9
+9	    return f;
+(gdb) p f
+$4 = 120
+(gdb) bt
+#0  compute_factorial (n=1) at showdebug.c:9
+#1  0x00007ffff7ed40a9 in main (argc=2, argv=0x16677e0) at showdebug.c:18
+#2  0x3500000001652748 in ?? ()
+#3  0x00000000016677e0 in ?? ()
+#4  0x0000000000000002 in ?? ()
+#5  0x0000000000d953b3 in llvm::MCJIT::runFunction (this=0x16151f0, F=0x1603020, ArgValues=...) at /home/ebenders_test/llvm_svn_rw/lib/ExecutionEngine/MCJIT/MCJIT.cpp:161
+#6  0x0000000000dc8872 in llvm::ExecutionEngine::runFunctionAsMain (this=0x16151f0, Fn=0x1603020, argv=..., envp=0x7fffffffe040)
+    at /home/ebenders_test/llvm_svn_rw/lib/ExecutionEngine/ExecutionEngine.cpp:397
+#7  0x000000000059c583 in main (argc=4, argv=0x7fffffffe018, envp=0x7fffffffe040) at /home/ebenders_test/llvm_svn_rw/tools/lli/lli.cpp:324
+(gdb) finish
+Run till exit from #0  compute_factorial (n=1) at showdebug.c:9
+0x00007ffff7ed40a9 in main (argc=2, argv=0x16677e0) at showdebug.c:18
+18	    int result = compute_factorial(firstletter - '0');
+Value returned is $5 = 120
+(gdb) p result
+$6 = 23406408
+(gdb) n
+21	    return result;
+(gdb) p result
+$7 = 120
+(gdb) c
+Continuing.
+
+Program exited with code 0170.
+(gdb) 
+
+</pre>
+
+</div>
+</div>
+
+
+<!-- *********************************************************************** -->
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+  <a href="mailto:reid.kleckner at gmail.com">Reid Kleckner</a>,
+  <a href="mailto:eliben at gmail.com">Eli Bendersky</a><br>
+  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date: 2012-05-01 00:58:54 -0700 (Tue, 01 May 2012) $
+</address>
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/DeveloperPolicy.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/DeveloperPolicy.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/DeveloperPolicy.html (added)
+++ www-releases/trunk/3.1/docs/DeveloperPolicy.html Tue May 22 14:32:29 2012
@@ -0,0 +1,642 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>LLVM Developer Policy</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+<body>
+      
+<h1>LLVM Developer Policy</h1>
+<ol>
+  <li><a href="#introduction">Introduction</a></li>
+  <li><a href="#policies">Developer Policies</a>
+  <ol>
+    <li><a href="#informed">Stay Informed</a></li>
+    <li><a href="#patches">Making a Patch</a></li>
+    <li><a href="#reviews">Code Reviews</a></li>
+    <li><a href="#owners">Code Owners</a></li>
+    <li><a href="#testcases">Test Cases</a></li>
+    <li><a href="#quality">Quality</a></li>
+    <li><a href="#commitaccess">Obtaining Commit Access</a></li>
+    <li><a href="#newwork">Making a Major Change</a></li>
+    <li><a href="#incremental">Incremental Development</a></li>
+    <li><a href="#attribution">Attribution of Changes</a></li>
+  </ol></li>
+  <li><a href="#clp">Copyright, License, and Patents</a>
+  <ol>
+    <li><a href="#copyright">Copyright</a></li>
+    <li><a href="#license">License</a></li>
+    <li><a href="#patents">Patents</a></li>
+  </ol></li>
+</ol>
+<div class="doc_author">Written by the LLVM Oversight Team</div>
+
+<!--=========================================================================-->
+<h2><a name="introduction">Introduction</a></h2>
+<!--=========================================================================-->
+<div>
+<p>This document contains the LLVM Developer Policy which defines the project's
+   policy towards developers and their contributions. The intent of this policy
+   is to eliminate miscommunication, rework, and confusion that might arise from
+   the distributed nature of LLVM's development.  By stating the policy in clear
+   terms, we hope each developer can know ahead of time what to expect when
+   making LLVM contributions.  This policy covers all llvm.org subprojects,
+   including Clang, LLDB, libc++, etc.</p>
+<p>This policy is also designed to accomplish the following objectives:</p>
+
+<ol>
+  <li>Attract both users and developers to the LLVM project.</li>
+
+  <li>Make life as simple and easy for contributors as possible.</li>
+
+  <li>Keep the top of Subversion trees as stable as possible.</li>
+
+  <li>Establish awareness of the project's <a href="#clp">copyright,
+      license, and patent policies</a> with contributors to the project.</li>
+</ol>
+  
+<p>This policy is aimed at frequent contributors to LLVM. People interested in
+   contributing one-off patches can do so in an informal way by sending them to
+   the
+   <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits
+   mailing list</a> and engaging another developer to see it through the
+   process.</p>
+</div>
+
+<!--=========================================================================-->
+<h2><a name="policies">Developer Policies</a></h2>
+<!--=========================================================================-->
+<div>
+<p>This section contains policies that pertain to frequent LLVM developers.  We
+   always welcome <a href="#patches">one-off patches</a> from people who do not
+   routinely contribute to LLVM, but we expect more from frequent contributors
+   to keep the system as efficient as possible for everyone.  Frequent LLVM
+   contributors are expected to meet the following requirements in order for
+   LLVM to maintain a high standard of quality.<p>
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="informed">Stay Informed</a></h3>
+<div>
+<p>Developers should stay informed by reading at least the "dev" mailing list
+   for the projects you are interested in, such as 
+   <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> for
+   LLVM, <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a>
+   for Clang, or <a
+   href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev">lldb-dev</a>
+   for LLDB.  If you are doing anything more than just casual work on LLVM, it
+   is suggested that you also subscribe to the "commits" mailing list for the
+   subproject you're interested in, such as
+  <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>,
+  <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits</a>,
+  or <a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits">lldb-commits</a>.
+   Reading the "commits" list and paying attention to changes being made by
+   others is a good way to see what other people are interested in and watching
+   the flow of the project as a whole.</p>
+
+<p>We recommend that active developers register an email account with 
+   <a href="http://llvm.org/bugs/">LLVM Bugzilla</a> and preferably subscribe to
+   the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs">llvm-bugs</a>
+   email list to keep track of bugs and enhancements occurring in LLVM.  We
+   really appreciate people who are proactive at catching incoming bugs in their
+   components and dealing with them promptly.</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="patches">Making a Patch</a></h3>
+
+<div>
+<p>When making a patch for review, the goal is to make it as easy for the
+   reviewer to read it as possible.  As such, we recommend that you:</p>
+
+<ol>
+  <li>Make your patch against the Subversion trunk, not a branch, and not an old
+      version of LLVM.  This makes it easy to apply the patch.  For information
+      on how to check out SVN trunk, please see the <a
+      href="GettingStarted.html#checkout">Getting Started Guide</a>.</li>
+        
+  <li>Similarly, patches should be submitted soon after they are generated.  Old
+      patches may not apply correctly if the underlying code changes between the
+      time the patch was created and the time it is applied.</li>
+
+  <li>Patches should be made with <tt>svn diff</tt>, or similar. If you use
+      a different tool, make sure it uses the <tt>diff -u</tt> format and
+      that it doesn't contain clutter which makes it hard to read.</li>
+
+  <li>If you are modifying generated files, such as the top-level
+      <tt>configure</tt> script, please separate out those changes into
+      a separate patch from the rest of your changes.</li>
+</ol>
+  
+<p>When sending a patch to a mailing list, it is a good idea to send it as an
+   <em>attachment</em> to the message, not embedded into the text of the
+   message.  This ensures that your mailer will not mangle the patch when it
+   sends it (e.g. by making whitespace changes or by wrapping lines).</p>
+
+<p><em>For Thunderbird users:</em> Before submitting a patch, please open 
+   <em>Preferences → Advanced → General → Config Editor</em>,
+   find the key <tt>mail.content_disposition_type</tt>, and set its value to
+   <tt>1</tt>. Without this setting, Thunderbird sends your attachment using
+   <tt>Content-Disposition: inline</tt> rather than <tt>Content-Disposition:
+   attachment</tt>. Apple Mail gamely displays such a file inline, making it
+   difficult to work with for reviewers using that program.</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="reviews">Code Reviews</a></h3>
+<div>
+<p>LLVM has a code review policy. Code review is one way to increase the quality
+   of software. We generally follow these policies:</p>
+
+<ol>
+  <li>All developers are required to have significant changes reviewed before
+      they are committed to the repository.</li>
+
+  <li>Code reviews are conducted by email, usually on the llvm-commits
+      list.</li>
+
+  <li>Code can be reviewed either before it is committed or after.  We expect
+      major changes to be reviewed before being committed, but smaller changes
+      (or changes where the developer owns the component) can be reviewed after
+      commit.</li>
+
+  <li>The developer responsible for a code change is also responsible for making
+      all necessary review-related changes.</li>
+
+  <li>Code review can be an iterative process, which continues until the patch
+      is ready to be committed.</li>
+</ol>
+  
+<p>Developers should participate in code reviews as both reviewers and
+   reviewees. If someone is kind enough to review your code, you should return
+   the favor for someone else.  Note that anyone is welcome to review and give
+   feedback on a patch, but only people with Subversion write access can approve
+   it.</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="owners">Code Owners</a></h3>
+<div>
+
+<p>The LLVM Project relies on two features of its process to maintain rapid
+   development in addition to the high quality of its source base: the
+   combination of code review plus post-commit review for trusted maintainers.
+   Having both is a great way for the project to take advantage of the fact that
+   most people do the right thing most of the time, and only commit patches
+   without pre-commit review when they are confident they are right.</p>
+     
+<p>The trick to this is that the project has to guarantee that all patches that
+   are committed are reviewed after they go in: you don't want everyone to
+   assume someone else will review it, allowing the patch to go unreviewed.  To
+   solve this problem, we have a notion of an 'owner' for a piece of the code.
+   The sole responsibility of a code owner is to ensure that a commit to their
+   area of the code is appropriately reviewed, either by themself or by someone
+   else.  The current code owners are:</p>
+  
+<ol>
+  <li><b>Evan Cheng</b>: Code generator and all targets.</li>
+
+  <li><b>Greg Clayton</b>: LLDB.</li>
+
+  <li><b>Doug Gregor</b>: Clang Frontend Libraries.</li>
+
+  <li><b>Howard Hinnant</b>: libc++.</li>
+
+  <li><b>Anton Korobeynikov</b>: Exception handling, debug information, and
+      Windows codegen.</li>
+
+  <li><b>Ted Kremenek</b>: Clang Static Analyzer.</li>
+
+  <li><b>Chris Lattner</b>: Everything not covered by someone else.</li>
+  
+  <li><b>John McCall</b>: Clang LLVM IR generation.</li>
+
+  <li><b>Jakob Olesen</b>: Register allocators and TableGen.</li>
+
+  <li><b>Duncan Sands</b>: dragonegg and llvm-gcc 4.2.</li>
+  
+  <li><b>Peter Collingbourne</b>: libclc.</li>
+  
+  <li><b>Tobias Grosser</b>: polly.</li>
+</ol>
+  
+<p>Note that code ownership is completely different than reviewers: anyone can
+   review a piece of code, and we welcome code review from anyone who is
+   interested.  Code owners are the "last line of defense" to guarantee that all
+   patches that are committed are actually reviewed.</p>
+
+<p>Being a code owner is a somewhat unglamorous position, but it is incredibly
+   important for the ongoing success of the project.  Because people get busy,
+   interests change, and unexpected things happen, code ownership is purely
+   opt-in, and anyone can choose to resign their "title" at any time. For now,
+   we do not have an official policy on how one gets elected to be a code
+   owner.</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="testcases">Test Cases</a></h3>
+<div>
+<p>Developers are required to create test cases for any bugs fixed and any new
+   features added.  Some tips for getting your testcase approved:</p>
+
+<ol>
+  <li>All feature and regression test cases are added to the 
+      <tt>llvm/test</tt> directory. The appropriate sub-directory should be
+      selected (see the <a href="TestingGuide.html">Testing Guide</a> for
+      details).</li>
+
+  <li>Test cases should be written in <a href="LangRef.html">LLVM assembly
+      language</a> unless the feature or regression being tested requires
+      another language (e.g. the bug being fixed or feature being implemented is
+      in the llvm-gcc C++ front-end, in which case it must be written in
+      C++).</li>
+
+  <li>Test cases, especially for regressions, should be reduced as much as
+      possible, by <a href="Bugpoint.html">bugpoint</a> or manually. It is
+      unacceptable to place an entire failing program into <tt>llvm/test</tt> as
+      this creates a <i>time-to-test</i> burden on all developers. Please keep
+      them short.</li>
+</ol>
+  
+<p>Note that llvm/test and clang/test are designed for regression and small
+   feature tests only. More extensive test cases (e.g., entire applications,
+   benchmarks, etc)
+   should be added to the <tt>llvm-test</tt> test suite.  The llvm-test suite is
+   for coverage (correctness, performance, etc) testing, not feature or
+   regression testing.</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="quality">Quality</a></h3>
+<div>
+<p>The minimum quality standards that any change must satisfy before being
+   committed to the main development branch are:</p>
+
+<ol>
+  <li>Code must adhere to the <a href="CodingStandards.html">LLVM Coding
+      Standards</a>.</li>
+
+  <li>Code must compile cleanly (no errors, no warnings) on at least one
+      platform.</li>
+
+  <li>Bug fixes and new features should <a href="#testcases">include a
+      testcase</a> so we know if the fix/feature ever regresses in the
+      future.</li>
+
+  <li>Code must pass the <tt>llvm/test</tt> test suite.</li>
+
+  <li>The code must not cause regressions on a reasonable subset of llvm-test,
+      where "reasonable" depends on the contributor's judgement and the scope of
+      the change (more invasive changes require more testing). A reasonable
+      subset might be something like
+      "<tt>llvm-test/MultiSource/Benchmarks</tt>".</li>
+</ol>
+
+<p>Additionally, the committer is responsible for addressing any problems found
+   in the future that the change is responsible for.  For example:</p>
+
+<ul>
+  <li>The code should compile cleanly on all supported platforms.</li>
+
+  <li>The changes should not cause any correctness regressions in the
+      <tt>llvm-test</tt> suite and must not cause any major performance
+      regressions.</li>
+
+  <li>The change set should not cause performance or correctness regressions for
+      the LLVM tools.</li>
+
+  <li>The changes should not cause performance or correctness regressions in
+      code compiled by LLVM on all applicable targets.</li>
+
+  <li>You are expected to address any <a href="http://llvm.org/bugs/">bugzilla
+      bugs</a> that result from your change.</li>
+</ul>
+  
+<p>We prefer for this to be handled before submission but understand that it
+   isn't possible to test all of this for every submission.  Our build bots and
+   nightly testing infrastructure normally finds these problems.  A good rule of
+   thumb is to check the nightly testers for regressions the day after your
+   change.  Build bots will directly email you if a group of commits that
+   included yours caused a failure.  You are expected to check the build bot
+   messages to see if they are your fault and, if so, fix the breakage.</p>
+
+<p>Commits that violate these quality standards (e.g. are very broken) may be
+   reverted. This is necessary when the change blocks other developers from
+   making progress. The developer is welcome to re-commit the change after the
+   problem has been fixed.</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="commitaccess">Obtaining Commit Access</a></h3>
+<div>
+
+<p>We grant commit access to contributors with a track record of submitting high
+   quality patches.  If you would like commit access, please send an email to
+   <a href="mailto:sabre at nondot.org">Chris</a> with the following
+   information:</p>
+
+<ol>
+  <li>The user name you want to commit with, e.g. "hacker".</li>
+
+  <li>The full name and email address you want message to llvm-commits to come
+      from, e.g. "J. Random Hacker <hacker at yoyodyne.com>".</li>
+
+  <li>A "password hash" of the password you want to use, e.g. "2ACR96qjUqsyM".  
+      Note that you don't ever tell us what your password is, you just give it
+      to us in an encrypted form.  To get this, run "htpasswd" (a utility that
+      comes with apache) in crypt mode (often enabled with "-d"), or find a web
+      page that will do it for you.</li>
+</ol>
+
+<p>Once you've been granted commit access, you should be able to check out an
+   LLVM tree with an SVN URL of "https://username@llvm.org/..." instead of the
+   normal anonymous URL of "http://llvm.org/...".  The first time you commit
+   you'll have to type in your password.  Note that you may get a warning from
+   SVN about an untrusted key, you can ignore this.  To verify that your commit
+   access works, please do a test commit (e.g. change a comment or add a blank
+   line).  Your first commit to a repository may require the autogenerated email
+   to be approved by a mailing list.  This is normal, and will be done when
+   the mailing list owner has time.</p>
+
+<p>If you have recently been granted commit access, these policies apply:</p>
+
+<ol>
+  <li>You are granted <i>commit-after-approval</i> to all parts of LLVM.  To get
+      approval, submit a <a href="#patches">patch</a> to
+      <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>.
+      When approved you may commit it yourself.</li>
+
+  <li>You are allowed to commit patches without approval which you think are
+      obvious. This is clearly a subjective decision — we simply expect
+      you to use good judgement.  Examples include: fixing build breakage,
+      reverting obviously broken patches, documentation/comment changes, any
+      other minor changes.</li>
+
+  <li>You are allowed to commit patches without approval to those portions of
+      LLVM that you have contributed or maintain (i.e., have been assigned
+      responsibility for), with the proviso that such commits must not break the
+      build.  This is a "trust but verify" policy and commits of this nature are
+      reviewed after they are committed.</li>
+
+  <li>Multiple violations of these policies or a single egregious violation may
+      cause commit access to be revoked.</li>
+</ol>
+
+<p>In any case, your changes are still subject to <a href="#reviews">code
+   review</a> (either before or after they are committed, depending on the
+   nature of the change).  You are encouraged to review other peoples' patches
+   as well, but you aren't required to.</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="newwork">Making a Major Change</a></h3>
+<div>
+<p>When a developer begins a major new project with the aim of contributing it
+   back to LLVM, s/he should inform the community with an email to
+   the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a>
+   email list, to the extent possible. The reason for this is to:
+
+<ol>
+  <li>keep the community informed about future changes to LLVM, </li>
+
+  <li>avoid duplication of effort by preventing multiple parties working on the
+      same thing and not knowing about it, and</li>
+
+  <li>ensure that any technical issues around the proposed work are discussed
+      and resolved before any significant work is done.</li>
+</ol>
+  
+<p>The design of LLVM is carefully controlled to ensure that all the pieces fit
+   together well and are as consistent as possible. If you plan to make a major
+   change to the way LLVM works or want to add a major new extension, it is a
+   good idea to get consensus with the development community before you start
+   working on it.</p>
+  
+<p>Once the design of the new feature is finalized, the work itself should be
+   done as a series of <a href="#incremental">incremental changes</a>, not as a
+   long-term development branch.</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="incremental">Incremental Development</a></h3>
+<div>
+<p>In the LLVM project, we do all significant changes as a series of incremental
+   patches.  We have a strong dislike for huge changes or long-term development
+   branches.  Long-term development branches have a number of drawbacks:</p>
+
+<ol>
+  <li>Branches must have mainline merged into them periodically.  If the branch
+      development and mainline development occur in the same pieces of code,
+      resolving merge conflicts can take a lot of time.</li>
+
+  <li>Other people in the community tend to ignore work on branches.</li>
+
+  <li>Huge changes (produced when a branch is merged back onto mainline) are
+      extremely difficult to <a href="#reviews">code review</a>.</li>
+
+  <li>Branches are not routinely tested by our nightly tester
+      infrastructure.</li>
+
+  <li>Changes developed as monolithic large changes often don't work until the
+      entire set of changes is done.  Breaking it down into a set of smaller
+      changes increases the odds that any of the work will be committed to the
+      main repository.</li>
+</ol>    
+  
+<p>To address these problems, LLVM uses an incremental development style and we
+   require contributors to follow this practice when making a large/invasive
+   change.  Some tips:</p>
+
+<ul>
+  <li>Large/invasive changes usually have a number of secondary changes that are
+      required before the big change can be made (e.g. API cleanup, etc).  These
+      sorts of changes can often be done before the major change is done,
+      independently of that work.</li>
+
+  <li>The remaining inter-related work should be decomposed into unrelated sets
+      of changes if possible.  Once this is done, define the first increment and
+      get consensus on what the end goal of the change is.</li>
+
+  <li>Each change in the set can be stand alone (e.g. to fix a bug), or part of
+      a planned series of changes that works towards the development goal.</li>
+    
+  <li>Each change should be kept as small as possible. This simplifies your work
+      (into a logical progression), simplifies code review and reduces the
+      chance that you will get negative feedback on the change. Small increments
+      also facilitate the maintenance of a high quality code base.</li>
+
+  <li>Often, an independent precursor to a big change is to add a new API and
+      slowly migrate clients to use the new API.  Each change to use the new API
+      is often "obvious" and can be committed without review.  Once the new API
+      is in place and used, it is much easier to replace the underlying
+      implementation of the API.  This implementation change is logically
+      separate from the API change.</li>
+</ul>
+  
+<p>If you are interested in making a large change, and this scares you, please
+   make sure to first <a href="#newwork">discuss the change/gather consensus</a>
+   then ask about the best way to go about making the change.</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="attribution">Attribution of Changes</a></h3>
+<div>
+<p>We believe in correct attribution of contributions to their contributors.
+   However, we do not want the source code to be littered with random
+   attributions "this code written by J. Random Hacker" (this is noisy and
+   distracting).  In practice, the revision control system keeps a perfect
+   history of who changed what, and the CREDITS.txt file describes higher-level
+   contributions.  If you commit a patch for someone else, please say "patch
+   contributed by J. Random Hacker!" in the commit message.</p>
+
+<p>Overall, please do not add contributor names to the source code.</p>
+</div>
+
+</div>
+
+<!--=========================================================================-->
+<h2>
+  <a name="clp">Copyright, License, and Patents</a>
+</h2>
+<!--=========================================================================-->
+
+<div>
+
+<div class="doc_notes">
+<p style="text-align:center;font-weight:bold">NOTE: This section deals with
+   legal matters but does not provide legal advice.  We are not lawyers — 
+   please seek legal counsel from an attorney.</p>
+</div>
+
+<div>
+<p>This section addresses the issues of copyright, license and patents for the
+   LLVM project.  The copyright for the code is held by the individual
+   contributors of the code and the terms of its license to LLVM users and 
+   developers is the
+   <a href="http://www.opensource.org/licenses/UoI-NCSA.php">University of 
+   Illinois/NCSA Open Source License</a> (with portions dual licensed under the
+   <a href="http://www.opensource.org/licenses/mit-license.php">MIT License</a>,
+   see below).  As contributor to the LLVM project, you agree to allow any 
+   contributions to the project to licensed under these terms.</p>
+
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="copyright">Copyright</a></h3>
+<div>
+
+<p>The LLVM project does not require copyright assignments, which means that the
+   copyright for the code in the project is held by its respective contributors
+   who have each agreed to release their contributed code under the terms of the
+   <a href="#license">LLVM License</a>.</p>
+   
+<p>An implication of this is that the LLVM license is unlikely to ever change:
+   changing it would require tracking down all the contributors to LLVM and
+   getting them to agree that a license change is acceptable for their
+   contribution.  Since there are no plans to change the license, this is not a
+   cause for concern.</p>
+   
+<p>As a contributor to the project, this means that you (or your company) retain
+   ownership of the code you contribute, that it cannot be used in a way that
+   contradicts the license (which is a liberal BSD-style license), and that the
+   license for your contributions won't change without your approval in the
+   future.</p>
+   
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="license">License</a></h3>
+<div>
+<p>We intend to keep LLVM perpetually open source and to use a liberal open
+   source license.  <b>As a contributor to the project, you agree that any 
+   contributions be licensed under the terms of the corresponding 
+   subproject.</b>
+   All of the code in LLVM is available under the
+   <a href="http://www.opensource.org/licenses/UoI-NCSA.php">University of
+   Illinois/NCSA Open Source License</a>, which boils down to this:</p>
+
+<ul>
+  <li>You can freely distribute LLVM.</li>
+  <li>You must retain the copyright notice if you redistribute LLVM.</li>
+  <li>Binaries derived from LLVM must reproduce the copyright notice (e.g. in an
+      included readme file).</li>
+  <li>You can't use our names to promote your LLVM derived products.</li>
+  <li>There's no warranty on LLVM at all.</li>
+</ul>
+  
+<p>We believe this fosters the widest adoption of LLVM because it <b>allows
+   commercial products to be derived from LLVM</b> with few restrictions and
+   without a requirement for making any derived works also open source (i.e.
+   LLVM's license is not a "copyleft" license like the GPL). We suggest that you
+   read the <a href="http://www.opensource.org/licenses/UoI-NCSA.php">License</a>
+   if further clarification is needed.</p>
+   
+<p>In addition to the UIUC license, the runtime library components of LLVM
+   (<b>compiler_rt, libc++, and libclc</b>) are also licensed under the <a
+   href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>,
+   which does not contain the binary redistribution clause.  As a user of these
+   runtime libraries, it means that you can choose to use the code under either
+   license (and thus don't need the binary redistribution clause), and as a
+   contributor to the code that you agree that any contributions to these
+   libraries be licensed under both licenses.  We feel that this is important
+   for runtime libraries, because they are implicitly linked into applications
+   and therefore should not subject those applications to the binary
+   redistribution clause. This also means that it is ok to move code from (e.g.)
+   libc++ to the LLVM core without concern, but that code cannot be moved from
+   the LLVM core to libc++ without the copyright owner's permission.
+</p>
+
+<p>Note that the LLVM Project does distribute llvm-gcc and dragonegg, <b>which  
+   are GPL.</b>
+   This means that anything "linked" into llvm-gcc must itself be compatible
+   with the GPL, and must be releasable under the terms of the GPL.  This
+   implies that <b>any code linked into llvm-gcc and distributed to others may
+   be subject to the viral aspects of the GPL</b> (for example, a proprietary
+   code generator linked into llvm-gcc must be made available under the GPL).
+   This is not a problem for code already distributed under a more liberal
+   license (like the UIUC license), and GPL-containing subprojects are kept
+   in separate SVN repositories whose LICENSE.txt files specifically indicate
+   that they contain GPL code.</p>
+  
+<p>We have no plans to change the license of LLVM.  If you have questions or
+   comments about the license, please contact the
+   <a href="mailto:llvmdev at cs.uiuc.edu">LLVM Developer's Mailing List</a>.</p>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h3><a name="patents">Patents</a></h3>
+<div>
+<p>To the best of our knowledge, LLVM does not infringe on any patents (we have
+   actually removed code from LLVM in the past that was found to infringe).
+   Having code in LLVM that infringes on patents would violate an important goal
+   of the project by making it hard or impossible to reuse the code for
+   arbitrary purposes (including commercial use).</p>
+   
+<p>When contributing code, we expect contributors to notify us of any potential
+   for patent-related trouble with their changes (including from third parties).  
+   If you or your employer own
+   the rights to a patent and would like to contribute code to LLVM that relies
+   on it, we require that the copyright owner sign an agreement that allows any
+   other user of LLVM to freely use your patent.  Please contact
+   the <a href="mailto:llvm-oversight at cs.uiuc.edu">oversight group</a> for more
+   details.</p>
+</div>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+  Written by the 
+  <a href="mailto:llvm-oversight at cs.uiuc.edu">LLVM Oversight Group</a><br>
+  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date: 2012-03-27 04:25:16 -0700 (Tue, 27 Mar 2012) $
+</address>
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/ExceptionHandling.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/ExceptionHandling.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/ExceptionHandling.html (added)
+++ www-releases/trunk/3.1/docs/ExceptionHandling.html Tue May 22 14:32:29 2012
@@ -0,0 +1,563 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <title>Exception Handling in LLVM</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <meta name="description"
+        content="Exception Handling in LLVM.">
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+
+<body>
+
+<h1>Exception Handling in LLVM</h1>
+
+<table class="layout" style="width:100%">
+  <tr class="layout">
+    <td class="left">
+<ul>
+  <li><a href="#introduction">Introduction</a>
+  <ol>
+    <li><a href="#itanium">Itanium ABI Zero-cost Exception Handling</a></li>
+    <li><a href="#sjlj">Setjmp/Longjmp Exception Handling</a></li>
+    <li><a href="#overview">Overview</a></li>
+  </ol></li>
+  <li><a href="#codegen">LLVM Code Generation</a>
+  <ol>
+    <li><a href="#throw">Throw</a></li>
+    <li><a href="#try_catch">Try/Catch</a></li>
+    <li><a href="#cleanups">Cleanups</a></li>
+    <li><a href="#throw_filters">Throw Filters</a></li>
+    <li><a href="#restrictions">Restrictions</a></li>
+  </ol></li>
+  <li><a href="#format_common_intrinsics">Exception Handling Intrinsics</a>
+  <ol>
+  	<li><a href="#llvm_eh_typeid_for"><tt>llvm.eh.typeid.for</tt></a></li>
+  	<li><a href="#llvm_eh_sjlj_setjmp"><tt>llvm.eh.sjlj.setjmp</tt></a></li>
+  	<li><a href="#llvm_eh_sjlj_longjmp"><tt>llvm.eh.sjlj.longjmp</tt></a></li>
+  	<li><a href="#llvm_eh_sjlj_lsda"><tt>llvm.eh.sjlj.lsda</tt></a></li>
+  	<li><a href="#llvm_eh_sjlj_callsite"><tt>llvm.eh.sjlj.callsite</tt></a></li>
+  </ol></li>
+  <li><a href="#asm">Asm Table Formats</a>
+  <ol>
+    <li><a href="#unwind_tables">Exception Handling Frame</a></li>
+    <li><a href="#exception_tables">Exception Tables</a></li>
+  </ol></li>
+</ul>
+</td>
+</tr></table>
+
+<div class="doc_author">
+  <p>Written by the <a href="http://llvm.org/">LLVM Team</a></p>
+</div>
+
+
+<!-- *********************************************************************** -->
+<h2><a name="introduction">Introduction</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>This document is the central repository for all information pertaining to
+   exception handling in LLVM.  It describes the format that LLVM exception
+   handling information takes, which is useful for those interested in creating
+   front-ends or dealing directly with the information.  Further, this document
+   provides specific examples of what exception handling information is used for
+   in C and C++.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="itanium">Itanium ABI Zero-cost Exception Handling</a>
+</h3>
+
+<div>
+
+<p>Exception handling for most programming languages is designed to recover from
+   conditions that rarely occur during general use of an application.  To that
+   end, exception handling should not interfere with the main flow of an
+   application's algorithm by performing checkpointing tasks, such as saving the
+   current pc or register state.</p>
+
+<p>The Itanium ABI Exception Handling Specification defines a methodology for
+   providing outlying data in the form of exception tables without inlining
+   speculative exception handling code in the flow of an application's main
+   algorithm.  Thus, the specification is said to add "zero-cost" to the normal
+   execution of an application.</p>
+
+<p>A more complete description of the Itanium ABI exception handling runtime
+   support of can be found at
+   <a href="http://www.codesourcery.com/cxx-abi/abi-eh.html">Itanium C++ ABI:
+   Exception Handling</a>. A description of the exception frame format can be
+   found at
+   <a href="http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html">Exception
+   Frames</a>, with details of the DWARF 4 specification at
+   <a href="http://dwarfstd.org/Dwarf4Std.php">DWARF 4 Standard</a>.
+   A description for the C++ exception table formats can be found at
+   <a href="http://www.codesourcery.com/cxx-abi/exceptions.pdf">Exception Handling
+   Tables</a>.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="sjlj">Setjmp/Longjmp Exception Handling</a>
+</h3>
+
+<div>
+
+<p>Setjmp/Longjmp (SJLJ) based exception handling uses LLVM intrinsics
+   <a href="#llvm_eh_sjlj_setjmp"><tt>llvm.eh.sjlj.setjmp</tt></a> and
+   <a href="#llvm_eh_sjlj_longjmp"><tt>llvm.eh.sjlj.longjmp</tt></a> to
+   handle control flow for exception handling.</p>
+
+<p>For each function which does exception processing — be
+   it <tt>try</tt>/<tt>catch</tt> blocks or cleanups — that function
+   registers itself on a global frame list. When exceptions are unwinding, the
+   runtime uses this list to identify which functions need processing.<p>
+
+<p>Landing pad selection is encoded in the call site entry of the function
+   context. The runtime returns to the function via
+   <a href="#llvm_eh_sjlj_longjmp"><tt>llvm.eh.sjlj.longjmp</tt></a>, where
+   a switch table transfers control to the appropriate landing pad based on
+   the index stored in the function context.</p>
+
+<p>In contrast to DWARF exception handling, which encodes exception regions
+   and frame information in out-of-line tables, SJLJ exception handling
+   builds and removes the unwind frame context at runtime. This results in
+   faster exception handling at the expense of slower execution when no
+   exceptions are thrown. As exceptions are, by their nature, intended for
+   uncommon code paths, DWARF exception handling is generally preferred to
+   SJLJ.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="overview">Overview</a>
+</h3>
+
+<div>
+
+<p>When an exception is thrown in LLVM code, the runtime does its best to find a
+   handler suited to processing the circumstance.</p>
+
+<p>The runtime first attempts to find an <i>exception frame</i> corresponding to
+   the function where the exception was thrown.  If the programming language
+   supports exception handling (e.g. C++), the exception frame contains a
+   reference to an exception table describing how to process the exception.  If
+   the language does not support exception handling (e.g. C), or if the
+   exception needs to be forwarded to a prior activation, the exception frame
+   contains information about how to unwind the current activation and restore
+   the state of the prior activation.  This process is repeated until the
+   exception is handled. If the exception is not handled and no activations
+   remain, then the application is terminated with an appropriate error
+   message.</p>
+
+<p>Because different programming languages have different behaviors when
+   handling exceptions, the exception handling ABI provides a mechanism for
+   supplying <i>personalities</i>. An exception handling personality is defined
+   by way of a <i>personality function</i> (e.g. <tt>__gxx_personality_v0</tt>
+   in C++), which receives the context of the exception, an <i>exception
+   structure</i> containing the exception object type and value, and a reference
+   to the exception table for the current function.  The personality function
+   for the current compile unit is specified in a <i>common exception
+   frame</i>.</p>
+
+<p>The organization of an exception table is language dependent. For C++, an
+   exception table is organized as a series of code ranges defining what to do
+   if an exception occurs in that range. Typically, the information associated
+   with a range defines which types of exception objects (using C++ <i>type
+   info</i>) that are handled in that range, and an associated action that
+   should take place. Actions typically pass control to a <i>landing
+   pad</i>.</p>
+
+<p>A landing pad corresponds roughly to the code found in the <tt>catch</tt>
+   portion of a <tt>try</tt>/<tt>catch</tt> sequence. When execution resumes at
+   a landing pad, it receives an <i>exception structure</i> and a
+   <i>selector value</i> corresponding to the <i>type</i> of exception
+   thrown. The selector is then used to determine which <i>catch</i> should
+   actually process the exception.</p>
+
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h2>
+  <a name="codegen">LLVM Code Generation</a>
+</h2>
+
+<div>
+
+<p>From a C++ developer's perspective, exceptions are defined in terms of the
+   <tt>throw</tt> and <tt>try</tt>/<tt>catch</tt> statements. In this section
+   we will describe the implementation of LLVM exception handling in terms of
+   C++ examples.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="throw">Throw</a>
+</h3>
+
+<div>
+
+<p>Languages that support exception handling typically provide a <tt>throw</tt>
+   operation to initiate the exception process. Internally, a <tt>throw</tt>
+   operation breaks down into two steps.</p>
+
+<ol>
+  <li>A request is made to allocate exception space for an exception structure.
+      This structure needs to survive beyond the current activation. This
+      structure will contain the type and value of the object being thrown.</li>
+
+  <li>A call is made to the runtime to raise the exception, passing the
+      exception structure as an argument.</li>
+</ol>
+
+<p>In C++, the allocation of the exception structure is done by the
+   <tt>__cxa_allocate_exception</tt> runtime function. The exception raising is
+   handled by <tt>__cxa_throw</tt>. The type of the exception is represented
+   using a C++ RTTI structure.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="try_catch">Try/Catch</a>
+</h3>
+
+<div>
+
+<p>A call within the scope of a <i>try</i> statement can potentially raise an
+   exception. In those circumstances, the LLVM C++ front-end replaces the call
+   with an <tt>invoke</tt> instruction. Unlike a call, the <tt>invoke</tt> has
+   two potential continuation points:</p>
+
+<ol>
+  <li>where to continue when the call succeeds as per normal, and</li>
+
+  <li>where to continue if the call raises an exception, either by a throw or
+      the unwinding of a throw</li>
+</ol>
+
+<p>The term used to define a the place where an <tt>invoke</tt> continues after
+   an exception is called a <i>landing pad</i>. LLVM landing pads are
+   conceptually alternative function entry points where an exception structure
+   reference and a type info index are passed in as arguments. The landing pad
+   saves the exception structure reference and then proceeds to select the catch
+   block that corresponds to the type info of the exception object.</p>
+
+<p>The LLVM <a href="LangRef.html#i_landingpad"><tt>landingpad</tt>
+   instruction</a> is used to convey information about the landing pad to the
+   back end. For C++, the <tt>landingpad</tt> instruction returns a pointer and
+   integer pair corresponding to the pointer to the <i>exception structure</i>
+   and the <i>selector value</i> respectively.</p>
+
+<p>The <tt>landingpad</tt> instruction takes a reference to the personality
+   function to be used for this <tt>try</tt>/<tt>catch</tt> sequence. The
+   remainder of the instruction is a list of <i>cleanup</i>, <i>catch</i>,
+   and <i>filter</i> clauses. The exception is tested against the clauses
+   sequentially from first to last. The selector value is a positive number if
+   the exception matched a type info, a negative number if it matched a filter,
+   and zero if it matched a cleanup. If nothing is matched, the behavior of
+   the program is <a href="#restrictions">undefined</a>. If a type info matched,
+   then the selector value is the index of the type info in the exception table,
+   which can be obtained using the
+   <a href="#llvm_eh_typeid_for"><tt>llvm.eh.typeid.for</tt></a> intrinsic.</p>
+
+<p>Once the landing pad has the type info selector, the code branches to the
+   code for the first catch. The catch then checks the value of the type info
+   selector against the index of type info for that catch.  Since the type info
+   index is not known until all the type infos have been gathered in the
+   backend, the catch code must call the
+   <a href="#llvm_eh_typeid_for"><tt>llvm.eh.typeid.for</tt></a> intrinsic to
+   determine the index for a given type info. If the catch fails to match the
+   selector then control is passed on to the next catch.</p>
+
+<p>Finally, the entry and exit of catch code is bracketed with calls to
+   <tt>__cxa_begin_catch</tt> and <tt>__cxa_end_catch</tt>.</p>
+
+<ul>
+  <li><tt>__cxa_begin_catch</tt> takes an exception structure reference as an
+      argument and returns the value of the exception object.</li>
+
+  <li><tt>__cxa_end_catch</tt> takes no arguments. This function:<br><br>
+    <ol>
+      <li>Locates the most recently caught exception and decrements its handler
+          count,</li>
+      <li>Removes the exception from the <i>caught</i> stack if the handler
+          count goes to zero, and</li>
+      <li>Destroys the exception if the handler count goes to zero and the
+          exception was not re-thrown by throw.</li>
+    </ol>
+    <p><b>Note:</b> a rethrow from within the catch may replace this call with
+       a <tt>__cxa_rethrow</tt>.</p></li>
+</ul>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="cleanups">Cleanups</a>
+</h3>
+
+<div>
+
+<p>A cleanup is extra code which needs to be run as part of unwinding a scope.
+   C++ destructors are a typical example, but other languages and language
+   extensions provide a variety of different kinds of cleanups. In general, a
+   landing pad may need to run arbitrary amounts of cleanup code before actually
+   entering a catch block. To indicate the presence of cleanups, a
+   <a href="LangRef.html#i_landingpad"><tt>landingpad</tt> instruction</a>
+   should have a <i>cleanup</i> clause. Otherwise, the unwinder will not stop at
+   the landing pad if there are no catches or filters that require it to.</p>
+
+<p><b>Note:</b> Do not allow a new exception to propagate out of the execution
+   of a cleanup. This can corrupt the internal state of the unwinder.
+   Different languages describe different high-level semantics for these
+   situations: for example, C++ requires that the process be terminated, whereas
+   Ada cancels both exceptions and throws a third.</p>
+
+<p>When all cleanups are finished, if the exception is not handled by the
+   current function, resume unwinding by calling the
+   <a href="LangRef.html#i_resume"><tt>resume</tt> instruction</a>, passing in
+   the result of the <tt>landingpad</tt> instruction for the original landing
+   pad.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="throw_filters">Throw Filters</a>
+</h3>
+
+<div>
+
+<p>C++ allows the specification of which exception types may be thrown from a
+   function. To represent this, a top level landing pad may exist to filter out
+   invalid types. To express this in LLVM code the
+   <a href="LangRef.html#i_landingpad"><tt>landingpad</tt> instruction</a> will
+   have a filter clause. The clause consists of an array of type infos.
+   <tt>landingpad</tt> will return a negative value if the exception does not
+   match any of the type infos. If no match is found then a call
+   to <tt>__cxa_call_unexpected</tt> should be made, otherwise
+   <tt>_Unwind_Resume</tt>.  Each of these functions requires a reference to the
+   exception structure.  Note that the most general form of a
+   <a href="LangRef.html#i_landingpad"><tt>landingpad</tt> instruction</a> can
+   have any number of catch, cleanup, and filter clauses (though having more
+   than one cleanup is pointless). The LLVM C++ front-end can generate such
+   <a href="LangRef.html#i_landingpad"><tt>landingpad</tt> instructions</a> due
+   to inlining creating nested exception handling scopes.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="restrictions">Restrictions</a>
+</h3>
+
+<div>
+
+<p>The unwinder delegates the decision of whether to stop in a call frame to
+   that call frame's language-specific personality function. Not all unwinders
+   guarantee that they will stop to perform cleanups. For example, the GNU C++
+   unwinder doesn't do so unless the exception is actually caught somewhere
+   further up the stack.</p>
+
+<p>In order for inlining to behave correctly, landing pads must be prepared to
+   handle selector results that they did not originally advertise. Suppose that
+   a function catches exceptions of type <tt>A</tt>, and it's inlined into a
+   function that catches exceptions of type <tt>B</tt>. The inliner will update
+   the <tt>landingpad</tt> instruction for the inlined landing pad to include
+   the fact that <tt>B</tt> is also caught. If that landing pad assumes that it
+   will only be entered to catch an <tt>A</tt>, it's in for a rude awakening.
+   Consequently, landing pads must test for the selector results they understand
+   and then resume exception propagation with the
+   <a href="LangRef.html#i_resume"><tt>resume</tt> instruction</a> if none of
+   the conditions match.</p>
+
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h2>
+  <a name="format_common_intrinsics">Exception Handling Intrinsics</a>
+</h2>
+
+<div>
+
+<p>In addition to the
+   <a href="LangRef.html#i_landingpad"><tt>landingpad</tt></a> and
+   <a href="LangRef.html#i_resume"><tt>resume</tt></a> instructions, LLVM uses
+   several intrinsic functions (name prefixed with <i><tt>llvm.eh</tt></i>) to
+   provide exception handling information at various points in generated
+   code.</p>
+
+<!-- ======================================================================= -->
+<h4>
+  <a name="llvm_eh_typeid_for">llvm.eh.typeid.for</a>
+</h4>
+
+<div>
+
+<pre>
+  i32 @llvm.eh.typeid.for(i8* %type_info)
+</pre>
+
+<p>This intrinsic returns the type info index in the exception table of the
+   current function.  This value can be used to compare against the result
+   of <a href="LangRef.html#i_landingpad"><tt>landingpad</tt> instruction</a>.
+   The single argument is a reference to a type info.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h4>
+  <a name="llvm_eh_sjlj_setjmp">llvm.eh.sjlj.setjmp</a>
+</h4>
+
+<div>
+
+<pre>
+  i32 @llvm.eh.sjlj.setjmp(i8* %setjmp_buf)
+</pre>
+
+<p>For SJLJ based exception handling, this intrinsic forces register saving for
+   the current function and stores the address of the following instruction for
+   use as a destination address
+   by <a href="#llvm_eh_sjlj_longjmp"><tt>llvm.eh.sjlj.longjmp</tt></a>. The
+   buffer format and the overall functioning of this intrinsic is compatible
+   with the GCC <tt>__builtin_setjmp</tt> implementation allowing code built
+   with the clang and GCC to interoperate.</p>
+
+<p>The single parameter is a pointer to a five word buffer in which the calling
+   context is saved. The front end places the frame pointer in the first word,
+   and the target implementation of this intrinsic should place the destination
+   address for a
+   <a href="#llvm_eh_sjlj_longjmp"><tt>llvm.eh.sjlj.longjmp</tt></a> in the
+   second word. The following three words are available for use in a
+   target-specific manner.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h4>
+  <a name="llvm_eh_sjlj_longjmp">llvm.eh.sjlj.longjmp</a>
+</h4>
+
+<div>
+
+<pre>
+  void @llvm.eh.sjlj.longjmp(i8* %setjmp_buf)
+</pre>
+
+<p>For SJLJ based exception handling, the <tt>llvm.eh.sjlj.longjmp</tt>
+   intrinsic is used to implement <tt>__builtin_longjmp()</tt>. The single
+   parameter is a pointer to a buffer populated
+   by <a href="#llvm_eh_sjlj_setjmp"><tt>llvm.eh.sjlj.setjmp</tt></a>. The frame
+   pointer and stack pointer are restored from the buffer, then control is
+   transferred to the destination address.</p>
+
+</div>
+<!-- ======================================================================= -->
+<h4>
+  <a name="llvm_eh_sjlj_lsda">llvm.eh.sjlj.lsda</a>
+</h4>
+
+<div>
+
+<pre>
+  i8* @llvm.eh.sjlj.lsda()
+</pre>
+
+<p>For SJLJ based exception handling, the <tt>llvm.eh.sjlj.lsda</tt> intrinsic
+   returns the address of the Language Specific Data Area (LSDA) for the current
+   function. The SJLJ front-end code stores this address in the exception
+   handling function context for use by the runtime.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h4>
+  <a name="llvm_eh_sjlj_callsite">llvm.eh.sjlj.callsite</a>
+</h4>
+
+<div>
+
+<pre>
+  void @llvm.eh.sjlj.callsite(i32 %call_site_num)
+</pre>
+
+<p>For SJLJ based exception handling, the <tt>llvm.eh.sjlj.callsite</tt>
+   intrinsic identifies the callsite value associated with the
+   following <tt>invoke</tt> instruction. This is used to ensure that landing
+   pad entries in the LSDA are generated in matching order.</p>
+
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h2>
+  <a name="asm">Asm Table Formats</a>
+</h2>
+
+<div>
+
+<p>There are two tables that are used by the exception handling runtime to
+   determine which actions should be taken when an exception is thrown.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="unwind_tables">Exception Handling Frame</a>
+</h3>
+
+<div>
+
+<p>An exception handling frame <tt>eh_frame</tt> is very similar to the unwind
+   frame used by DWARF debug info. The frame contains all the information
+   necessary to tear down the current frame and restore the state of the prior
+   frame. There is an exception handling frame for each function in a compile
+   unit, plus a common exception handling frame that defines information common
+   to all functions in the unit.</p>
+
+<!-- Todo - Table details here. -->
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="exception_tables">Exception Tables</a>
+</h3>
+
+<div>
+
+<p>An exception table contains information about what actions to take when an
+   exception is thrown in a particular part of a function's code. There is one
+   exception table per function, except leaf functions and functions that have
+   calls only to non-throwing functions. They do not need an exception
+   table.</p>
+
+<!-- Todo - Table details here. -->
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+
+  <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date: 2012-03-27 04:25:16 -0700 (Tue, 27 Mar 2012) $
+</address>
+
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/ExtendedIntegerResults.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/ExtendedIntegerResults.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/ExtendedIntegerResults.txt (added)
+++ www-releases/trunk/3.1/docs/ExtendedIntegerResults.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,133 @@
+//===----------------------------------------------------------------------===//
+// Representing sign/zero extension of function results
+//===----------------------------------------------------------------------===//
+
+Mar 25, 2009  - Initial Revision
+
+Most ABIs specify that functions which return small integers do so in a
+specific integer GPR.  This is an efficient way to go, but raises the question:
+if the returned value is smaller than the register, what do the high bits hold?
+
+There are three (interesting) possible answers: undefined, zero extended, or
+sign extended.  The number of bits in question depends on the data-type that
+the front-end is referencing (typically i1/i8/i16/i32).
+
+Knowing the answer to this is important for two reasons: 1) we want to be able
+to implement the ABI correctly.  If we need to sign extend the result according
+to the ABI, we really really do need to do this to preserve correctness.  2)
+this information is often useful for optimization purposes, and we want the
+mid-level optimizers to be able to process this (e.g. eliminate redundant
+extensions).
+
+For example, lets pretend that X86 requires the caller to properly extend the
+result of a return (I'm not sure this is the case, but the argument doesn't
+depend on this).  Given this, we should compile this:
+
+int a();
+short b() { return a(); }
+
+into:
+
+_b:
+	subl	$12, %esp
+	call	L_a$stub
+	addl	$12, %esp
+	cwtl
+	ret
+
+An optimization example is that we should be able to eliminate the explicit
+sign extension in this example:
+
+short y();
+int z() {
+  return ((int)y() << 16) >> 16;
+}
+
+_z:
+	subl	$12, %esp
+	call	_y
+	;;  movswl %ax, %eax   -> not needed because eax is already sext'd
+	addl	$12, %esp
+	ret
+
+//===----------------------------------------------------------------------===//
+// What we have right now.
+//===----------------------------------------------------------------------===//
+
+Currently, these sorts of things are modelled by compiling a function to return
+the small type and a signext/zeroext marker is used.  For example, we compile
+Z into:
+
+define i32 @z() nounwind {
+entry:
+	%0 = tail call signext i16 (...)* @y() nounwind
+	%1 = sext i16 %0 to i32
+	ret i32 %1
+}
+
+and b into:
+
+define signext i16 @b() nounwind {
+entry:
+	%0 = tail call i32 (...)* @a() nounwind		; <i32> [#uses=1]
+	%retval12 = trunc i32 %0 to i16		; <i16> [#uses=1]
+	ret i16 %retval12
+}
+
+This has some problems: 1) the actual precise semantics are really poorly
+defined (see PR3779).  2) some targets might want the caller to extend, some
+might want the callee to extend 3) the mid-level optimizer doesn't know the
+size of the GPR, so it doesn't know that %0 is sign extended up to 32-bits 
+here, and even if it did, it could not eliminate the sext. 4) the code
+generator has historically assumed that the result is extended to i32, which is
+a problem on PIC16 (and is also probably wrong on alpha and other 64-bit
+targets).
+
+//===----------------------------------------------------------------------===//
+// The proposal
+//===----------------------------------------------------------------------===//
+
+I suggest that we have the front-end fully lower out the ABI issues here to
+LLVM IR.  This makes it 100% explicit what is going on and means that there is
+no cause for confusion.  For example, the cases above should compile into:
+
+define i32 @z() nounwind {
+entry:
+        %0 = tail call i32 (...)* @y() nounwind
+	%1 = trunc i32 %0 to i16
+        %2 = sext i16 %1 to i32
+        ret i32 %2
+}
+define i32 @b() nounwind {
+entry:
+	%0 = tail call i32 (...)* @a() nounwind
+	%retval12 = trunc i32 %0 to i16
+	%tmp = sext i16 %retval12 to i32
+	ret i32 %tmp
+}
+
+In this model, no functions will return an i1/i8/i16 (and on a x86-64 target
+that extends results to i64, no i32).  This solves the ambiguity issue, allows us 
+to fully describe all possible ABIs, and now allows the optimizers to reason
+about and eliminate these extensions.
+
+The one thing that is missing is the ability for the front-end and optimizer to
+specify/infer the guarantees provided by the ABI to allow other optimizations.
+For example, in the y/z case, since y is known to return a sign extended value,
+the trunc/sext in z should be eliminable.
+
+This can be done by introducing new sext/zext attributes which mean "I know
+that the result of the function is sign extended at least N bits.  Given this,
+and given that it is stuck on the y function, the mid-level optimizer could
+easily eliminate the extensions etc with existing functionality.
+
+The major disadvantage of doing this sort of thing is that it makes the ABI
+lowering stuff even more explicit in the front-end, and that we would like to
+eventually move to having the code generator do more of this work.  However,
+the sad truth of the matter is that this is a) unlikely to happen anytime in
+the near future, and b) this is no worse than we have now with the existing
+attributes.
+
+C compilers fundamentally have to reason about the target in many ways.  
+This is ugly and horrible, but a fact of life.
+

Added: www-releases/trunk/3.1/docs/ExtendingLLVM.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/ExtendingLLVM.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/ExtendingLLVM.html (added)
+++ www-releases/trunk/3.1/docs/ExtendingLLVM.html Tue May 22 14:32:29 2012
@@ -0,0 +1,379 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>Extending LLVM: Adding instructions, intrinsics, types, etc.</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+
+<body>
+
+<h1>
+  Extending LLVM: Adding instructions, intrinsics, types, etc.
+</h1>
+
+<ol>
+  <li><a href="#introduction">Introduction and Warning</a></li>
+  <li><a href="#intrinsic">Adding a new intrinsic function</a></li>
+  <li><a href="#instruction">Adding a new instruction</a></li>
+  <li><a href="#sdnode">Adding a new SelectionDAG node</a></li>
+  <li><a href="#type">Adding a new type</a>
+  <ol>
+    <li><a href="#fund_type">Adding a new fundamental type</a></li>
+    <li><a href="#derived_type">Adding a new derived type</a></li>
+  </ol></li>
+</ol>
+
+<div class="doc_author">    
+  <p>Written by <a href="http://misha.brukman.net">Misha Brukman</a>,
+  Brad Jones, Nate Begeman,
+  and <a href="http://nondot.org/sabre">Chris Lattner</a></p>
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="introduction">Introduction and Warning</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>During the course of using LLVM, you may wish to customize it for your
+research project or for experimentation. At this point, you may realize that
+you need to add something to LLVM, whether it be a new fundamental type, a new
+intrinsic function, or a whole new instruction.</p>
+
+<p>When you come to this realization, stop and think. Do you really need to
+extend LLVM? Is it a new fundamental capability that LLVM does not support at
+its current incarnation or can it be synthesized from already pre-existing LLVM
+elements? If you are not sure, ask on the <a
+href="http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVM-dev</a> list. The
+reason is that extending LLVM will get involved as you need to update all the
+different passes that you intend to use with your extension, and there are
+<em>many</em> LLVM analyses and transformations, so it may be quite a bit of
+work.</p>
+
+<p>Adding an <a href="#intrinsic">intrinsic function</a> is far easier than
+adding an instruction, and is transparent to optimization passes.  If your added
+functionality can be expressed as a
+function call, an intrinsic function is the method of choice for LLVM
+extension.</p>
+
+<p>Before you invest a significant amount of effort into a non-trivial
+extension, <span class="doc_warning">ask on the list</span> if what you are
+looking to do can be done with already-existing infrastructure, or if maybe
+someone else is already working on it. You will save yourself a lot of time and
+effort by doing so.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="intrinsic">Adding a new intrinsic function</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>Adding a new intrinsic function to LLVM is much easier than adding a new
+instruction.  Almost all extensions to LLVM should start as an intrinsic
+function and then be turned into an instruction if warranted.</p>
+
+<ol>
+<li><tt>llvm/docs/LangRef.html</tt>:
+    Document the intrinsic.  Decide whether it is code generator specific and
+    what the restrictions are.  Talk to other people about it so that you are
+    sure it's a good idea.</li>
+
+<li><tt>llvm/include/llvm/Intrinsics*.td</tt>:
+    Add an entry for your intrinsic.  Describe its memory access characteristics
+    for optimization (this controls whether it will be DCE'd, CSE'd, etc). Note
+    that any intrinsic using the <tt>llvm_int_ty</tt> type for an argument will
+    be deemed by <tt>tblgen</tt> as overloaded and the corresponding suffix 
+    will be required on the intrinsic's name.</li>
+
+<li><tt>llvm/lib/Analysis/ConstantFolding.cpp</tt>: If it is possible to 
+    constant fold your intrinsic, add support to it in the 
+    <tt>canConstantFoldCallTo</tt> and <tt>ConstantFoldCall</tt> functions.</li>
+
+<li><tt>llvm/test/Regression/*</tt>: Add test cases for your test cases to the 
+    test suite</li>
+</ol>
+
+<p>Once the intrinsic has been added to the system, you must add code generator
+support for it.  Generally you must do the following steps:</p>
+
+<dl>
+
+<dt>Add support to the .td file for the target(s) of your choice in 
+   <tt>lib/Target/*/*.td</tt>.</dt>
+
+<dd>This is usually a matter of adding a pattern to the .td file that matches
+    the intrinsic, though it may obviously require adding the instructions you
+    want to generate as well.  There are lots of examples in the PowerPC and X86
+    backend to follow.</dd>
+</dl>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="sdnode">Adding a new SelectionDAG node</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>As with intrinsics, adding a new SelectionDAG node to LLVM is much easier
+than adding a new instruction.  New nodes are often added to help represent
+instructions common to many targets.  These nodes often map to an LLVM
+instruction (add, sub) or intrinsic (byteswap, population count).  In other
+cases, new nodes have been added to allow many targets to perform a common task
+(converting between floating point and integer representation) or capture more
+complicated behavior in a single node (rotate).</p>
+
+<ol>
+<li><tt>include/llvm/CodeGen/ISDOpcodes.h</tt>:
+    Add an enum value for the new SelectionDAG node.</li>
+<li><tt>lib/CodeGen/SelectionDAG/SelectionDAG.cpp</tt>:
+    Add code to print the node to <tt>getOperationName</tt>.  If your new node
+    can be evaluated at compile time when given constant arguments (such as an
+    add of a constant with another constant), find the <tt>getNode</tt> method
+    that takes the appropriate number of arguments, and add a case for your node
+    to the switch statement that performs constant folding for nodes that take
+    the same number of arguments as your new node.</li>
+<li><tt>lib/CodeGen/SelectionDAG/LegalizeDAG.cpp</tt>:
+    Add code to <a href="CodeGenerator.html#selectiondag_legalize">legalize, 
+    promote, and expand</a> the node as necessary.  At a minimum, you will need
+    to add a case statement for your node in <tt>LegalizeOp</tt> which calls
+    LegalizeOp on the node's operands, and returns a new node if any of the
+    operands changed as a result of being legalized.  It is likely that not all
+    targets supported by the SelectionDAG framework will natively support the
+    new node.  In this case, you must also add code in your node's case
+    statement in <tt>LegalizeOp</tt> to Expand your node into simpler, legal
+    operations.  The case for <tt>ISD::UREM</tt> for expanding a remainder into
+    a divide, multiply, and a subtract is a good example.</li>
+<li><tt>lib/CodeGen/SelectionDAG/LegalizeDAG.cpp</tt>:
+    If targets may support the new node being added only at certain sizes, you 
+    will also need to add code to your node's case statement in 
+    <tt>LegalizeOp</tt> to Promote your node's operands to a larger size, and 
+    perform the correct operation.  You will also need to add code to 
+    <tt>PromoteOp</tt> to do this as well.  For a good example, see 
+    <tt>ISD::BSWAP</tt>,
+    which promotes its operand to a wider size, performs the byteswap, and then
+    shifts the correct bytes right to emulate the narrower byteswap in the
+    wider type.</li>
+<li><tt>lib/CodeGen/SelectionDAG/LegalizeDAG.cpp</tt>:
+    Add a case for your node in <tt>ExpandOp</tt> to teach the legalizer how to
+    perform the action represented by the new node on a value that has been
+    split into high and low halves.  This case will be used to support your 
+    node with a 64 bit operand on a 32 bit target.</li>
+<li><tt>lib/CodeGen/SelectionDAG/DAGCombiner.cpp</tt>:
+    If your node can be combined with itself, or other existing nodes in a 
+    peephole-like fashion, add a visit function for it, and call that function
+    from <tt></tt>.  There are several good examples for simple combines you
+    can do; <tt>visitFABS</tt> and <tt>visitSRL</tt> are good starting places.
+    </li>
+<li><tt>lib/Target/PowerPC/PPCISelLowering.cpp</tt>:
+    Each target has an implementation of the <tt>TargetLowering</tt> class,
+    usually in its own file (although some targets include it in the same
+    file as the DAGToDAGISel).  The default behavior for a target is to
+    assume that your new node is legal for all types that are legal for
+    that target.  If this target does not natively support your node, then
+    tell the target to either Promote it (if it is supported at a larger
+    type) or Expand it.  This will cause the code you wrote in 
+    <tt>LegalizeOp</tt> above to decompose your new node into other legal
+    nodes for this target.</li>
+<li><tt>lib/Target/TargetSelectionDAG.td</tt>:
+    Most current targets supported by LLVM generate code using the DAGToDAG
+    method, where SelectionDAG nodes are pattern matched to target-specific
+    nodes, which represent individual instructions.  In order for the targets
+    to match an instruction to your new node, you must add a def for that node
+    to the list in this file, with the appropriate type constraints. Look at
+    <tt>add</tt>, <tt>bswap</tt>, and <tt>fadd</tt> for examples.</li>
+<li><tt>lib/Target/PowerPC/PPCInstrInfo.td</tt>:
+    Each target has a tablegen file that describes the target's instruction
+    set.  For targets that use the DAGToDAG instruction selection framework,
+    add a pattern for your new node that uses one or more target nodes.
+    Documentation for this is a bit sparse right now, but there are several
+    decent examples.  See the patterns for <tt>rotl</tt> in 
+    <tt>PPCInstrInfo.td</tt>.</li>
+<li>TODO: document complex patterns.</li>
+<li><tt>llvm/test/Regression/CodeGen/*</tt>: Add test cases for your new node
+    to the test suite.  <tt>llvm/test/Regression/CodeGen/X86/bswap.ll</tt> is
+    a good example.</li>
+</ol>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="instruction">Adding a new instruction</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p><span class="doc_warning">WARNING: adding instructions changes the bitcode
+format, and it will take some effort to maintain compatibility with
+the previous version.</span> Only add an instruction if it is absolutely
+necessary.</p>
+
+<ol>
+
+<li><tt>llvm/include/llvm/Instruction.def</tt>:
+    add a number for your instruction and an enum name</li>
+
+<li><tt>llvm/include/llvm/Instructions.h</tt>:
+    add a definition for the class that will represent your instruction</li>
+
+<li><tt>llvm/include/llvm/Support/InstVisitor.h</tt>:
+    add a prototype for a visitor to your new instruction type</li>
+
+<li><tt>llvm/lib/AsmParser/Lexer.l</tt>:
+    add a new token to parse your instruction from assembly text file</li>
+
+<li><tt>llvm/lib/AsmParser/llvmAsmParser.y</tt>:
+    add the grammar on how your instruction can be read and what it will
+    construct as a result</li>
+
+<li><tt>llvm/lib/Bitcode/Reader/Reader.cpp</tt>:
+    add a case for your instruction and how it will be parsed from bitcode</li>
+
+<li><tt>llvm/lib/VMCore/Instruction.cpp</tt>:
+    add a case for how your instruction will be printed out to assembly</li>
+
+<li><tt>llvm/lib/VMCore/Instructions.cpp</tt>:
+    implement the class you defined in
+    <tt>llvm/include/llvm/Instructions.h</tt></li>
+
+<li>Test your instruction</li>
+
+<li><tt>llvm/lib/Target/*</tt>: 
+    Add support for your instruction to code generators, or add a lowering
+    pass.</li>
+
+<li><tt>llvm/test/Regression/*</tt>: add your test cases to the test suite.</li>
+
+</ol>
+
+<p>Also, you need to implement (or modify) any analyses or passes that you want
+to understand this new instruction.</p>
+
+</div>
+
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="type">Adding a new type</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p><span class="doc_warning">WARNING: adding new types changes the bitcode
+format, and will break compatibility with currently-existing LLVM
+installations.</span> Only add new types if it is absolutely necessary.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="fund_type">Adding a fundamental type</a>
+</h3>
+
+<div>
+
+<ol>
+
+<li><tt>llvm/include/llvm/Type.h</tt>:
+    add enum for the new type; add static <tt>Type*</tt> for this type</li>
+
+<li><tt>llvm/lib/VMCore/Type.cpp</tt>:
+    add mapping from <tt>TypeID</tt> => <tt>Type*</tt>;
+    initialize the static <tt>Type*</tt></li>
+
+<li><tt>llvm/lib/AsmReader/Lexer.l</tt>:
+    add ability to parse in the type from text assembly</li>
+
+<li><tt>llvm/lib/AsmReader/llvmAsmParser.y</tt>:
+    add a token for that type</li>
+
+</ol>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="derived_type">Adding a derived type</a>
+</h3>
+
+<div>
+
+<ol>
+<li><tt>llvm/include/llvm/Type.h</tt>:
+    add enum for the new type; add a forward declaration of the type
+    also</li>
+
+<li><tt>llvm/include/llvm/DerivedTypes.h</tt>:
+    add new class to represent new class in the hierarchy; add forward 
+    declaration to the TypeMap value type</li>
+
+<li><tt>llvm/lib/VMCore/Type.cpp</tt>:
+    add support for derived type to: 
+<div class="doc_code">
+<pre>
+std::string getTypeDescription(const Type &Ty,
+  std::vector<const Type*> &TypeStack)
+bool TypesEqual(const Type *Ty, const Type *Ty2,
+  std::map<const Type*, const Type*> & EqTypes)
+</pre>
+</div>
+    add necessary member functions for type, and factory methods</li>
+
+<li><tt>llvm/lib/AsmReader/Lexer.l</tt>:
+    add ability to parse in the type from text assembly</li>
+
+<li><tt>llvm/lib/BitCode/Writer/Writer.cpp</tt>:
+    modify <tt>void BitcodeWriter::outputType(const Type *T)</tt> to serialize
+    your type</li>
+
+<li><tt>llvm/lib/BitCode/Reader/Reader.cpp</tt>:
+    modify <tt>const Type *BitcodeReader::ParseType()</tt> to read your data
+    type</li> 
+
+<li><tt>llvm/lib/VMCore/AsmWriter.cpp</tt>:
+    modify
+<div class="doc_code">
+<pre>
+void calcTypeName(const Type *Ty,
+                  std::vector<const Type*> &TypeStack,
+                  std::map<const Type*,std::string> &TypeNames,
+                  std::string & Result)
+</pre>
+</div>
+    to output the new derived type
+</li>  
+ 
+
+</ol>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+
+  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a>
+  <br>
+  Last modified: $Date: 2012-03-22 22:50:46 -0700 (Thu, 22 Mar 2012) $
+</address>
+
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/FAQ.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/FAQ.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/FAQ.html (added)
+++ www-releases/trunk/3.1/docs/FAQ.html Tue May 22 14:32:29 2012
@@ -0,0 +1,948 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>LLVM: Frequently Asked Questions</title>
+  <style type="text/css">
+    @import url("llvm.css");
+    .question { font-weight: bold }
+    .answer   { margin-left: 2em  }
+  </style>
+</head>
+<body>
+
+<h1>
+  LLVM: Frequently Asked Questions
+</h1>
+
+<ol>
+  <li><a href="#license">License</a>
+  <ol>
+    <li>Why are the LLVM source code and the front-end distributed under
+        different licenses?</li>
+
+    <li>Does the University of Illinois Open Source License really qualify as an
+       "open source" license?</li>
+
+    <li>Can I modify LLVM source code and redistribute the modified source?</li>
+
+    <li>Can I modify LLVM source code and redistribute binaries or other tools
+        based on it, without redistributing the source?</li>
+  </ol></li>
+
+  <li><a href="#source">Source code</a>
+  <ol>
+    <li>In what language is LLVM written?</li>
+
+    <li>How portable is the LLVM source code?</li>
+  </ol></li>
+
+  <li><a href="#build">Build Problems</a>
+  <ol>
+    <li>When I run configure, it finds the wrong C compiler.</li>
+
+    <li>The <tt>configure</tt> script finds the right C compiler, but it uses
+        the LLVM linker from a previous build.  What do I do?</li>
+
+    <li>When creating a dynamic library, I get a strange GLIBC error.</li>
+
+    <li>I've updated my source tree from Subversion, and now my build is trying
+        to use a file/directory that doesn't exist.</li>
+
+    <li>I've modified a Makefile in my source tree, but my build tree keeps
+        using the old version.  What do I do?</li>
+
+    <li>I've upgraded to a new version of LLVM, and I get strange build
+        errors.</li>
+
+    <li>I've built LLVM and am testing it, but the tests freeze.</li>
+
+    <li>Why do test results differ when I perform different types of
+        builds?</li>
+
+    <li>Compiling LLVM with GCC 3.3.2 fails, what should I do?</li>
+
+    <li>Compiling LLVM with GCC succeeds, but the resulting tools do not work,
+        what can be wrong?</li>
+
+    <li>When I use the test suite, all of the C Backend tests fail.  What is
+        wrong?</li>
+
+    <li>After Subversion update, rebuilding gives the error "No rule to make
+        target".</li>
+
+    <li><a href="#srcdir-objdir">When I compile LLVM-GCC with srcdir == objdir,
+        it fails. Why?</a></li>
+  </ol></li>
+
+  <li><a href="#felangs">Source Languages</a>
+  <ol>
+    <li><a href="#langs">What source languages are supported?</a></li>
+
+    <li><a href="#langirgen">I'd like to write a self-hosting LLVM compiler. How
+        should I interface with the LLVM middle-end optimizers and back-end code
+        generators?</a></li>
+
+    <li><a href="#langhlsupp">What support is there for higher level source
+        language constructs for building a compiler?</a></li>
+
+    <li><a href="GetElementPtr.html">I don't understand the GetElementPtr
+      instruction. Help!</a></li>
+  </ol>
+
+  <li><a href="#cfe">Using the GCC Front End</a>
+  <ol>
+    <li>When I compile software that uses a configure script, the configure
+        script thinks my system has all of the header files and libraries it is
+        testing for.  How do I get configure to work correctly?</li>
+
+    <li>When I compile code using the LLVM GCC front end, it complains that it
+        cannot find libcrtend.a?</li>
+
+    <li>How can I disable all optimizations when compiling code using the LLVM
+        GCC front end?</li>
+
+    <li><a href="#translatecxx">Can I use LLVM to convert C++ code to C
+        code?</a></li>
+
+    <li><a href="#platformindependent">Can I compile C or C++ code to
+        platform-independent LLVM bitcode?</a></li>
+  </ol>
+  </li>
+
+  <li><a href="#cfe_code">Questions about code generated by the GCC front-end</a>
+  <ol>
+     <li><a href="#iosinit">What is this <tt>llvm.global_ctors</tt> and
+          <tt>_GLOBAL__I__tmp_webcompile...</tt> stuff that happens when I
+          #include <iostream>?</a></li>
+
+     <li><a href="#codedce">Where did all of my code go??</a></li>
+
+     <li><a href="#undef">What is this "<tt>undef</tt>" thing that shows up in
+         my code?</a></li>
+         
+      <li><a href="#callconvwrong">Why does instcombine + simplifycfg turn
+   a call to a function with a mismatched calling convention into "unreachable"?
+   Why not make the verifier reject it?</a></li>
+  </ol>
+  </li>
+</ol>
+
+<div class="doc_author">
+  <p>Written by <a href="http://llvm.org/">The LLVM Team</a></p>
+</div>
+
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="license">License</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<div class="question">
+<p>Why are the LLVM source code and the front-end distributed under different
+   licenses?</p>
+</div>
+	
+<div class="answer">
+<p>The C/C++ front-ends are based on GCC and must be distributed under the GPL.
+   Our aim is to distribute LLVM source code under a <em>much less
+   restrictive</em> license, in particular one that does not compel users who
+   distribute tools based on modifying the source to redistribute the modified
+   source code as well.</p>
+</div>
+
+<div class="question">
+<p>Does the University of Illinois Open Source License really qualify as an
+   "open source" license?</p>
+</div>
+
+<div class="answer">
+<p>Yes, the license
+   is <a href="http://www.opensource.org/licenses/UoI-NCSA.php">certified</a> by
+   the Open Source Initiative (OSI).</p>
+</div>
+
+<div class="question">
+<p>Can I modify LLVM source code and redistribute the modified source?</p>
+</div>
+
+<div class="answer">
+<p>Yes.  The modified source distribution must retain the copyright notice and
+   follow the three bulletted conditions listed in
+   the <a href="http://llvm.org/svn/llvm-project/llvm/trunk/LICENSE.TXT">LLVM
+   license</a>.</p>
+</div>
+
+<div class="question">
+<p>Can I modify LLVM source code and redistribute binaries or other tools based
+   on it, without redistributing the source?</p>
+</div>
+
+<div class="answer">
+<p>Yes. This is why we distribute LLVM under a less restrictive license than
+   GPL, as explained in the first question above.</p>
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="source">Source Code</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<div class="question">
+<p>In what language is LLVM written?</p>
+</div>
+
+<div class="answer">
+<p>All of the LLVM tools and libraries are written in C++ with extensive use of
+   the STL.</p>
+</div>
+
+<div class="question">
+<p>How portable is the LLVM source code?</p>
+</div>
+
+<div class="answer">
+<p>The LLVM source code should be portable to most modern UNIX-like operating
+systems.  Most of the code is written in standard C++ with operating system
+services abstracted to a support library.  The tools required to build and test
+LLVM have been ported to a plethora of platforms.</p>
+
+<p>Some porting problems may exist in the following areas:</p>
+
+<ul>
+  <li>The GCC front end code is not as portable as the LLVM suite, so it may not
+      compile as well on unsupported platforms.</li>
+
+  <li>The LLVM build system relies heavily on UNIX shell tools, like the Bourne
+      Shell and sed.  Porting to systems without these tools (MacOS 9, Plan 9)
+      will require more effort.</li>
+</ul>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="build">Build Problems</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<div class="question">
+<p>When I run configure, it finds the wrong C compiler.</p>
+</div>
+
+<div class="answer">
+<p>The <tt>configure</tt> script attempts to locate first <tt>gcc</tt> and then
+   <tt>cc</tt>, unless it finds compiler paths set in <tt>CC</tt>
+   and <tt>CXX</tt> for the C and C++ compiler, respectively.</p>
+
+<p>If <tt>configure</tt> finds the wrong compiler, either adjust your
+   <tt>PATH</tt> environment variable or set <tt>CC</tt> and <tt>CXX</tt>
+   explicitly.</p>
+
+</div>
+
+<div class="question">
+<p>The <tt>configure</tt> script finds the right C compiler, but it uses the
+   LLVM linker from a previous build.  What do I do?</p>
+</div>
+
+<div class="answer">
+<p>The <tt>configure</tt> script uses the <tt>PATH</tt> to find executables, so
+   if it's grabbing the wrong linker/assembler/etc, there are two ways to fix
+   it:</p>
+
+<ol>
+  <li><p>Adjust your <tt>PATH</tt> environment variable so that the correct
+      program appears first in the <tt>PATH</tt>.  This may work, but may not be
+      convenient when you want them <i>first</i> in your path for other
+      work.</p></li>
+
+  <li><p>Run <tt>configure</tt> with an alternative <tt>PATH</tt> that is
+      correct. In a Borne compatible shell, the syntax would be:</p>
+
+<pre class="doc_code">
+% PATH=[the path without the bad program] ./configure ...
+</pre>
+
+      <p>This is still somewhat inconvenient, but it allows <tt>configure</tt>
+         to do its work without having to adjust your <tt>PATH</tt>
+         permanently.</p></li>
+</ol>
+</div>
+
+<div class="question">
+<p>When creating a dynamic library, I get a strange GLIBC error.</p>
+</div>
+
+<div class="answer">
+<p>Under some operating systems (i.e. Linux), libtool does not work correctly if
+   GCC was compiled with the --disable-shared option.  To work around this,
+   install your own version of GCC that has shared libraries enabled by
+   default.</p>
+</div>
+
+<div class="question">
+<p>I've updated my source tree from Subversion, and now my build is trying to
+   use a file/directory that doesn't exist.</p>
+</div>
+
+<div class="answer">
+<p>You need to re-run configure in your object directory.  When new Makefiles
+   are added to the source tree, they have to be copied over to the object tree
+   in order to be used by the build.</p>
+</div>
+
+<div class="question">
+<p>I've modified a Makefile in my source tree, but my build tree keeps using the
+   old version.  What do I do?</p>
+</div>
+
+<div class="answer">
+<p>If the Makefile already exists in your object tree, you can just run the
+   following command in the top level directory of your object tree:</p>
+
+<pre class="doc_code">
+% ./config.status <relative path to Makefile>
+</pre>
+
+<p>If the Makefile is new, you will have to modify the configure script to copy
+   it over.</p>
+</div>
+
+<div class="question">
+<p>I've upgraded to a new version of LLVM, and I get strange build errors.</p>
+</div>
+
+<div class="answer">
+
+<p>Sometimes, changes to the LLVM source code alters how the build system works.
+   Changes in libtool, autoconf, or header file dependencies are especially
+   prone to this sort of problem.</p>
+
+<p>The best thing to try is to remove the old files and re-build.  In most
+   cases, this takes care of the problem.  To do this, just type <tt>make
+   clean</tt> and then <tt>make</tt> in the directory that fails to build.</p>
+</div>
+
+<div class="question">
+<p>I've built LLVM and am testing it, but the tests freeze.</p>
+</div>
+
+<div class="answer">
+<p>This is most likely occurring because you built a profile or release
+   (optimized) build of LLVM and have not specified the same information on the
+   <tt>gmake</tt> command line.</p>
+
+<p>For example, if you built LLVM with the command:</p>
+
+<pre class="doc_code">
+% gmake ENABLE_PROFILING=1
+</pre>
+
+<p>...then you must run the tests with the following commands:</p>
+
+<pre class="doc_code">
+% cd llvm/test
+% gmake ENABLE_PROFILING=1
+</pre>
+</div>
+
+<div class="question">
+<p>Why do test results differ when I perform different types of builds?</p>
+</div>
+
+<div class="answer">
+<p>The LLVM test suite is dependent upon several features of the LLVM tools and
+   libraries.</p>
+
+<p>First, the debugging assertions in code are not enabled in optimized or
+   profiling builds.  Hence, tests that used to fail may pass.</p>
+	
+<p>Second, some tests may rely upon debugging options or behavior that is only
+   available in the debug build.  These tests will fail in an optimized or
+   profile build.</p>
+</div>
+
+<div class="question">
+<p>Compiling LLVM with GCC 3.3.2 fails, what should I do?</p>
+</div>
+
+<div class="answer">
+<p>This is <a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13392">a bug in
+   GCC</a>, and affects projects other than LLVM.  Try upgrading or downgrading
+   your GCC.</p>
+</div>
+
+<div class="question">
+<p>Compiling LLVM with GCC succeeds, but the resulting tools do not work, what
+   can be wrong?</p>
+</div>
+
+<div class="answer">
+<p>Several versions of GCC have shown a weakness in miscompiling the LLVM
+   codebase. Please consult your compiler version (<tt>gcc --version</tt>) to
+   find out whether it is <a href="GettingStarted.html#brokengcc">broken</a>.
+   If so, your only option is to upgrade GCC to a known good version.</p>
+</div>
+
+<div class="question">
+<p>After Subversion update, rebuilding gives the error "No rule to make
+   target".</p>
+</div>
+
+<div class="answer">
+<p>If the error is of the form:</p>
+
+<pre class="doc_code">
+gmake[2]: *** No rule to make target `/path/to/somefile', needed by
+`/path/to/another/file.d'.<br>
+Stop.
+</pre>
+
+<p>This may occur anytime files are moved within the Subversion repository or
+   removed entirely.  In this case, the best solution is to erase all
+   <tt>.d</tt> files, which list dependencies for source files, and rebuild:</p>
+
+<pre class="doc_code">
+% cd $LLVM_OBJ_DIR
+% rm -f `find . -name \*\.d` 
+% gmake 
+</pre>
+
+<p>In other cases, it may be necessary to run <tt>make clean</tt> before
+   rebuilding.</p>
+</div>
+
+<div class="question">
+<p><a name="srcdir-objdir">When I compile LLVM-GCC with srcdir == objdir, it
+   fails. Why?</a></p>
+</div>
+
+<div class="answer">
+<p>The <tt>GNUmakefile</tt> in the top-level directory of LLVM-GCC is a special
+   <tt>Makefile</tt> used by Apple to invoke the <tt>build_gcc</tt> script after
+   setting up a special environment. This has the unfortunate side-effect that
+   trying to build LLVM-GCC with srcdir == objdir in a "non-Apple way" invokes
+   the <tt>GNUmakefile</tt> instead of <tt>Makefile</tt>. Because the
+   environment isn't set up correctly to do this, the build fails.</p>
+
+<p>People not building LLVM-GCC the "Apple way" need to build LLVM-GCC with
+   srcdir != objdir, or simply remove the GNUmakefile entirely.</p>
+
+<p>We regret the inconvenience.</p>
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="felangs">Source Languages</a>
+</h2>
+
+<div>
+
+<div class="question">
+<p><a name="langs">What source languages are supported?</a></p>
+</div>
+
+<div class="answer">
+<p>LLVM currently has full support for C and C++ source languages. These are
+   available through a special version of GCC that LLVM calls the
+   <a href="#cfe">C Front End</a></p>
+
+<p>There is an incomplete version of a Java front end available in the
+   <tt>java</tt> module. There is no documentation on this yet so you'll need to
+   download the code, compile it, and try it.</p>
+
+<p>The PyPy developers are working on integrating LLVM into the PyPy backend so
+   that PyPy language can translate to LLVM.</p>
+</div>
+
+<div class="question">
+<p><a name="langirgen">I'd like to write a self-hosting LLVM compiler. How
+   should I interface with the LLVM middle-end optimizers and back-end code
+   generators?</a></p>
+</div>
+
+<div class="answer">
+<p>Your compiler front-end will communicate with LLVM by creating a module in
+   the LLVM intermediate representation (IR) format. Assuming you want to write
+   your language's compiler in the language itself (rather than C++), there are
+   3 major ways to tackle generating LLVM IR from a front-end:</p>
+
+<ul>
+  <li><strong>Call into the LLVM libraries code using your language's FFI
+      (foreign function interface).</strong>
+
+    <ul>
+      <li><em>for:</em> best tracks changes to the LLVM IR, .ll syntax, and .bc
+          format</li>
+
+      <li><em>for:</em> enables running LLVM optimization passes without a
+          emit/parse overhead</li>
+
+      <li><em>for:</em> adapts well to a JIT context</li>
+
+      <li><em>against:</em> lots of ugly glue code to write</li>
+    </ul></li>
+
+  <li>  <strong>Emit LLVM assembly from your compiler's native language.</strong>
+    <ul>
+      <li><em>for:</em> very straightforward to get started</li>
+
+      <li><em>against:</em> the .ll parser is slower than the bitcode reader
+          when interfacing to the middle end</li>
+
+      <li><em>against:</em> you'll have to re-engineer the LLVM IR object model
+          and asm writer in your language</li>
+
+      <li><em>against:</em> it may be harder to track changes to the IR</li>
+    </ul></li>
+
+  <li><strong>Emit LLVM bitcode from your compiler's native language.</strong>
+
+    <ul>
+      <li><em>for:</em> can use the more-efficient bitcode reader when
+          interfacing to the middle end</li>
+
+      <li><em>against:</em> you'll have to re-engineer the LLVM IR object 
+          model and bitcode writer in your language</li>
+
+      <li><em>against:</em> it may be harder to track changes to the IR</li>
+    </ul></li>
+</ul>
+
+<p>If you go with the first option, the C bindings in include/llvm-c should help
+   a lot, since most languages have strong support for interfacing with C. The
+   most common hurdle with calling C from managed code is interfacing with the
+   garbage collector. The C interface was designed to require very little memory
+   management, and so is straightforward in this regard.</p>
+</div>
+
+<div class="question">
+<p><a name="langhlsupp">What support is there for a higher level source language
+   constructs for building a compiler?</a></p>
+</div>
+
+<div class="answer">
+<p>Currently, there isn't much. LLVM supports an intermediate representation
+   which is useful for code representation but will not support the high level
+   (abstract syntax tree) representation needed by most compilers. There are no
+   facilities for lexical nor semantic analysis.</p>
+</div>
+
+<div class="question">
+<p><a name="getelementptr">I don't understand the GetElementPtr
+   instruction. Help!</a></p>
+</div>
+
+<div class="answer">
+<p>See <a href="GetElementPtr.html">The Often Misunderstood GEP
+   Instruction</a>.</p>
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="cfe">Using the GCC Front End</a>
+</h2>
+
+<div>
+
+<div class="question">
+<p>When I compile software that uses a configure script, the configure script
+   thinks my system has all of the header files and libraries it is testing for.
+   How do I get configure to work correctly?</p>
+</div>
+
+<div class="answer">
+<p>The configure script is getting things wrong because the LLVM linker allows
+   symbols to be undefined at link time (so that they can be resolved during JIT
+   or translation to the C back end).  That is why configure thinks your system
+   "has everything."</p>
+
+<p>To work around this, perform the following steps:</p>
+
+<ol>
+  <li>Make sure the CC and CXX environment variables contains the full path to
+      the LLVM GCC front end.</li>
+
+  <li>Make sure that the regular C compiler is first in your PATH. </li>
+
+  <li>Add the string "-Wl,-native" to your CFLAGS environment variable.</li>
+</ol>
+
+<p>This will allow the <tt>llvm-ld</tt> linker to create a native code
+   executable instead of shell script that runs the JIT.  Creating native code
+   requires standard linkage, which in turn will allow the configure script to
+   find out if code is not linking on your system because the feature isn't
+   available on your system.</p>
+</div>
+
+<div class="question">
+<p>When I compile code using the LLVM GCC front end, it complains that it cannot
+   find libcrtend.a.
+</p>
+</div>
+
+<div class="answer">
+<p>The only way this can happen is if you haven't installed the runtime
+   library. To correct this, do:</p>
+
+<pre class="doc_code">
+% cd llvm/runtime
+% make clean ; make install-bytecode
+</pre>
+</div>
+
+<div class="question">
+<p>How can I disable all optimizations when compiling code using the LLVM GCC
+   front end?</p>
+</div>
+
+<div class="answer">
+<p>Passing "-Wa,-disable-opt -Wl,-disable-opt" will disable *all* cleanup and
+   optimizations done at the llvm level, leaving you with the truly horrible
+   code that you desire.</p>
+</div>
+
+
+<div class="question">
+<p><a name="translatecxx">Can I use LLVM to convert C++ code to C code?</a></p>
+</div>
+
+<div class="answer">
+<p>Yes, you can use LLVM to convert code from any language LLVM supports to C.
+   Note that the generated C code will be very low level (all loops are lowered
+   to gotos, etc) and not very pretty (comments are stripped, original source
+   formatting is totally lost, variables are renamed, expressions are
+   regrouped), so this may not be what you're looking for. Also, there are
+   several limitations noted below.<p>
+
+<p>Use commands like this:</p>
+
+<ol>
+  <li><p>Compile your program with llvm-g++:</p>
+
+<pre class="doc_code">
+% llvm-g++ -emit-llvm x.cpp -o program.bc -c
+</pre>
+
+      <p>or:</p>
+
+<pre class="doc_code">
+% llvm-g++ a.cpp -c -emit-llvm
+% llvm-g++ b.cpp -c -emit-llvm
+% llvm-ld a.o b.o -o program
+</pre>
+
+   <p>This will generate program and program.bc.  The .bc
+      file is the LLVM version of the program all linked together.</p></li>
+
+  <li><p>Convert the LLVM code to C code, using the LLC tool with the C
+      backend:</p>
+
+<pre class="doc_code">
+% llc -march=c program.bc -o program.c
+</pre></li>
+
+  <li><p>Finally, compile the C file:</p>
+
+<pre class="doc_code">
+% cc x.c -lstdc++
+</pre></li>
+
+</ol>
+
+<p>Using LLVM does not eliminate the need for C++ library support.  If you use
+   the llvm-g++ front-end, the generated code will depend on g++'s C++ support
+   libraries in the same way that code generated from g++ would.  If you use
+   another C++ front-end, the generated code will depend on whatever library
+   that front-end would normally require.</p>
+
+<p>If you are working on a platform that does not provide any C++ libraries, you
+   may be able to manually compile libstdc++ to LLVM bitcode, statically link it
+   into your program, then use the commands above to convert the whole result
+   into C code.  Alternatively, you might compile the libraries and your
+   application into two different chunks of C code and link them.</p>
+
+<p>Note that, by default, the C back end does not support exception handling.
+   If you want/need it for a certain program, you can enable it by passing
+   "-enable-correct-eh-support" to the llc program.  The resultant code will use
+   setjmp/longjmp to implement exception support that is relatively slow, and
+   not C++-ABI-conforming on most platforms, but otherwise correct.</p>
+
+<p>Also, there are a number of other limitations of the C backend that cause it
+   to produce code that does not fully conform to the C++ ABI on most
+   platforms. Some of the C++ programs in LLVM's test suite are known to fail
+   when compiled with the C back end because of ABI incompatibilities with
+   standard C++ libraries.</p>
+</div>
+
+<div class="question">
+<p><a name="platformindependent">Can I compile C or C++ code to
+   platform-independent LLVM bitcode?</a></p>
+</div>
+
+<div class="answer">
+<p>No. C and C++ are inherently platform-dependent languages. The most obvious
+   example of this is the preprocessor. A very common way that C code is made
+   portable is by using the preprocessor to include platform-specific code. In
+   practice, information about other platforms is lost after preprocessing, so
+   the result is inherently dependent on the platform that the preprocessing was
+   targeting.</p>
+
+<p>Another example is <tt>sizeof</tt>. It's common for <tt>sizeof(long)</tt> to
+   vary between platforms. In most C front-ends, <tt>sizeof</tt> is expanded to
+   a constant immediately, thus hard-wiring a platform-specific detail.</p>
+
+<p>Also, since many platforms define their ABIs in terms of C, and since LLVM is
+   lower-level than C, front-ends currently must emit platform-specific IR in
+   order to have the result conform to the platform ABI.</p>
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="cfe_code">Questions about code generated by the GCC front-end</a>
+</h2>
+
+<div>
+
+<div class="question">
+<p><a name="iosinit">What is this <tt>llvm.global_ctors</tt> and
+   <tt>_GLOBAL__I__tmp_webcompile...</tt> stuff that happens when I <tt>#include
+   <iostream></tt>?</a></p>
+</div>
+
+<div class="answer">
+<p>If you <tt>#include</tt> the <tt><iostream></tt> header into a C++
+   translation unit, the file will probably use
+   the <tt>std::cin</tt>/<tt>std::cout</tt>/... global objects.  However, C++
+   does not guarantee an order of initialization between static objects in
+   different translation units, so if a static ctor/dtor in your .cpp file
+   used <tt>std::cout</tt>, for example, the object would not necessarily be
+   automatically initialized before your use.</p>
+
+<p>To make <tt>std::cout</tt> and friends work correctly in these scenarios, the
+   STL that we use declares a static object that gets created in every
+   translation unit that includes <tt><iostream></tt>.  This object has a
+   static constructor and destructor that initializes and destroys the global
+   iostream objects before they could possibly be used in the file.  The code
+   that you see in the .ll file corresponds to the constructor and destructor
+   registration code.
+</p>
+
+<p>If you would like to make it easier to <b>understand</b> the LLVM code
+   generated by the compiler in the demo page, consider using <tt>printf()</tt>
+   instead of <tt>iostream</tt>s to print values.</p>
+</div>
+
+<!--=========================================================================-->
+
+<div class="question">
+<p><a name="codedce">Where did all of my code go??</a></p>
+</div>
+
+<div class="answer">
+<p>If you are using the LLVM demo page, you may often wonder what happened to
+   all of the code that you typed in.  Remember that the demo script is running
+   the code through the LLVM optimizers, so if your code doesn't actually do
+   anything useful, it might all be deleted.</p>
+
+<p>To prevent this, make sure that the code is actually needed.  For example, if
+   you are computing some expression, return the value from the function instead
+   of leaving it in a local variable.  If you really want to constrain the
+   optimizer, you can read from and assign to <tt>volatile</tt> global
+   variables.</p>
+</div>
+
+<!--=========================================================================-->
+
+<div class="question">
+<p><a name="undef">What is this "<tt>undef</tt>" thing that shows up in my
+   code?</a></p>
+</div>
+
+<div class="answer">
+<p><a href="LangRef.html#undef"><tt>undef</tt></a> is the LLVM way of
+   representing a value that is not defined.  You can get these if you do not
+   initialize a variable before you use it.  For example, the C function:</p>
+
+<pre class="doc_code">
+int X() { int i; return i; }
+</pre>
+
+<p>Is compiled to "<tt>ret i32 undef</tt>" because "<tt>i</tt>" never has a
+   value specified for it.</p>
+</div>
+
+<!--=========================================================================-->
+
+<div class="question">
+<p><a name="callconvwrong">Why does instcombine + simplifycfg turn
+   a call to a function with a mismatched calling convention into "unreachable"?
+   Why not make the verifier reject it?</a></p>
+</div>
+
+<div class="answer">
+<p>This is a common problem run into by authors of front-ends that are using
+custom calling conventions: you need to make sure to set the right calling
+convention on both the function and on each call to the function.  For example,
+this code:</p>
+
+<pre class="doc_code">
+define fastcc void @foo() {
+        ret void
+}
+define void @bar() {
+        call void @foo()
+        ret void
+}
+</pre>
+
+<p>Is optimized to:</p>
+
+<pre class="doc_code">
+define fastcc void @foo() {
+	ret void
+}
+define void @bar() {
+	unreachable
+}
+</pre>
+
+<p>... with "opt -instcombine -simplifycfg".  This often bites people because
+"all their code disappears".  Setting the calling convention on the caller and
+callee is required for indirect calls to work, so people often ask why not make
+the verifier reject this sort of thing.</p>
+
+<p>The answer is that this code has undefined behavior, but it is not illegal.
+If we made it illegal, then every transformation that could potentially create
+this would have to ensure that it doesn't, and there is valid code that can
+create this sort of construct (in dead code).  The sorts of things that can
+cause this to happen are fairly contrived, but we still need to accept them.
+Here's an example:</p>
+
+<pre class="doc_code">
+define fastcc void @foo() {
+        ret void
+}
+define internal void @bar(void()* %FP, i1 %cond) {
+        br i1 %cond, label %T, label %F
+T:  
+        call void %FP()
+        ret void
+F:
+        call fastcc void %FP()
+        ret void
+}
+define void @test() {
+        %X = or i1 false, false
+        call void @bar(void()* @foo, i1 %X)
+        ret void
+} 
+</pre>
+
+<p>In this example, "test" always passes @foo/false into bar, which ensures that
+   it is dynamically called with the right calling conv (thus, the code is
+   perfectly well defined).  If you run this through the inliner, you get this
+   (the explicit "or" is there so that the inliner doesn't dead code eliminate
+   a bunch of stuff):
+</p>
+
+<pre class="doc_code">
+define fastcc void @foo() {
+	ret void
+}
+define void @test() {
+	%X = or i1 false, false
+	br i1 %X, label %T.i, label %F.i
+T.i:
+	call void @foo()
+	br label %bar.exit
+F.i:
+	call fastcc void @foo()
+	br label %bar.exit
+bar.exit:
+	ret void
+}
+</pre>
+
+<p>Here you can see that the inlining pass made an undefined call to @foo with
+  the wrong calling convention.  We really don't want to make the inliner have
+  to know about this sort of thing, so it needs to be valid code.  In this case,
+  dead code elimination can trivially remove the undefined code.  However, if %X
+  was an input argument to @test, the inliner would produce this:
+</p>
+
+<pre class="doc_code">
+define fastcc void @foo() {
+	ret void
+}
+
+define void @test(i1 %X) {
+	br i1 %X, label %T.i, label %F.i
+T.i:
+	call void @foo()
+	br label %bar.exit
+F.i:
+	call fastcc void @foo()
+	br label %bar.exit
+bar.exit:
+	ret void
+}
+</pre>
+
+<p>The interesting thing about this is that %X <em>must</em> be false for the
+code to be well-defined, but no amount of dead code elimination will be able to
+delete the broken call as unreachable.  However, since instcombine/simplifycfg
+turns the undefined call into unreachable, we end up with a branch on a
+condition that goes to unreachable: a branch to unreachable can never happen, so
+"-inline -instcombine -simplifycfg" is able to produce:</p>
+
+<pre class="doc_code">
+define fastcc void @foo() {
+	ret void
+}
+define void @test(i1 %X) {
+F.i:
+	call fastcc void @foo()
+	ret void
+}
+</pre>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+
+  <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date: 2012-03-27 04:25:16 -0700 (Tue, 27 Mar 2012) $
+</address>
+
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/GCCFEBuildInstrs.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/GCCFEBuildInstrs.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/GCCFEBuildInstrs.html (added)
+++ www-releases/trunk/3.1/docs/GCCFEBuildInstrs.html Tue May 22 14:32:29 2012
@@ -0,0 +1,279 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <link rel="stylesheet" href="llvm.css" type="text/css" media="screen">
+  <title>Building the LLVM GCC Front-End</title>
+</head>
+<body>
+
+<h1>
+  Building the LLVM GCC Front-End
+</h1>
+
+<ol>
+  <li><a href="#instructions">Building llvm-gcc from Source</a></li>
+  <li><a href="#ada">Building the Ada front-end</a></li>
+  <li><a href="#fortran">Building the Fortran front-end</a></li>
+  <li><a href="#license">License Information</a></li>
+</ol>
+
+<div class="doc_author">    
+  <p>Written by the LLVM Team</p>
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="instructions">Building llvm-gcc from Source</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>This section describes how to acquire and build llvm-gcc 4.2, which is based
+on the GCC 4.2.1 front-end.  Supported languages are Ada, C, C++, Fortran,
+Objective-C and Objective-C++.  Note that the instructions for building these
+front-ends are completely different (and much easier!) than those for building
+llvm-gcc3 in the past.</p>
+
+<ol>
+  <li><p>Retrieve the appropriate llvm-gcc-4.2-<i>version</i>.source.tar.gz
+         archive from the <a href="http://llvm.org/releases/">LLVM web
+         site</a>.</p>
+
+      <p>It is also possible to download the sources of the llvm-gcc front end
+         from a read-only mirror using subversion.  To check out the 4.2 code
+         for first time use:</p>
+
+<div class="doc_code">
+<pre>
+svn co http://llvm.org/svn/llvm-project/llvm-gcc-4.2/trunk <i>dst-directory</i>
+</pre>
+</div>
+
+      <p>After that, the code can be be updated in the destination directory
+         using:</p>
+
+<div class="doc_code">
+<pre>svn update</pre>
+</div>
+
+      <p>The mirror is brought up to date every evening.</p></li>
+
+  <li>Follow the directions in the top-level <tt>README.LLVM</tt> file for
+      up-to-date instructions on how to build llvm-gcc.  See below for building
+      with support for Ada or Fortran.
+</ol>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="ada">Building the Ada front-end</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+<p>Building with support for Ada amounts to following the directions in the
+top-level <tt>README.LLVM</tt> file, adding ",ada" to EXTRALANGS, for example:
+<tt>EXTRALANGS=,ada</tt></p>
+
+<p>There are some complications however:</p>
+
+<ol>
+  <li><p>The only platform for which the Ada front-end is known to build is
+      32 bit intel x86 running linux.  It is unlikely to build for other
+      systems without some work.</p></li>
+  <li><p>The build requires having a compiler that supports Ada, C and C++.
+      The Ada front-end is written in Ada so an Ada compiler is needed to
+      build it.  Compilers known to work with the
+      <a href="http://llvm.org/releases/download.html">LLVM 2.7 release</a>
+      are <a href="http://gcc.gnu.org/releases.html">gcc-4.2</a> and the
+      2005, 2006 and 2007 versions of the
+      <a href="http://libre.adacore.com/">GNAT GPL Edition</a>.
+      <b>GNAT GPL 2008, gcc-4.3 and later will not work</b>.
+      The LLVM parts of llvm-gcc are written in C++ so a C++ compiler is
+      needed to build them.  The rest of gcc is written in C.
+      Some linux distributions provide a version of gcc that supports all
+      three languages (the Ada part often comes as an add-on package to
+      the rest of gcc).  Otherwise it is possible to combine two versions
+      of gcc, one that supports Ada and C (such as the
+      <a href="http://libre.adacore.com/">2007 GNAT GPL Edition</a>)
+      and another which supports C++, see below.</p></li>
+  <li><p>Because the Ada front-end is experimental, it is wise to build the
+      compiler with checking enabled.  This causes it to run much slower, but
+      helps catch mistakes in the compiler (please report any problems using
+      <a href="http://llvm.org/bugs/">LLVM bugzilla</a>).</p></li>
+  <li><p>The Ada front-end <a href="http://llvm.org/PR2007">fails to
+      bootstrap</a>, due to lack of LLVM support for
+      <tt>setjmp</tt>/<tt>longjmp</tt> style exception handling (used
+      internally by the compiler), so you must specify
+      <tt>--disable-bootstrap</tt>.</p></li>
+</ol>
+
+<p>Supposing appropriate compilers are available, llvm-gcc with Ada support can
+   be built on an x86-32 linux box using the following recipe:</p>
+
+<ol>
+  <li><p>Download the <a href="http://llvm.org/releases/download.html">LLVM source</a>
+      and unpack it:</p>
+
+<pre class="doc_code">
+wget http://llvm.org/releases/2.7/llvm-2.7.tgz
+tar xzf llvm-2.7.tgz
+mv llvm-2.7 llvm
+</pre>
+
+      <p>or <a href="GettingStarted.html#checkout">check out the
+      latest version from subversion</a>:</p>
+
+<pre class="doc_code">svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</pre>
+
+      </li>
+
+  <li><p>Download the
+      <a href="http://llvm.org/releases/download.html">llvm-gcc-4.2 source</a>
+      and unpack it:</p>
+
+<pre class="doc_code">
+wget http://llvm.org/releases/2.7/llvm-gcc-4.2-2.7.source.tgz
+tar xzf llvm-gcc-4.2-2.7.source.tgz
+mv llvm-gcc-4.2-2.7.source llvm-gcc-4.2
+</pre>
+
+      <p>or <a href="GettingStarted.html#checkout">check out the
+      latest version from subversion</a>:</p>
+
+<pre class="doc_code">
+svn co http://llvm.org/svn/llvm-project/llvm-gcc-4.2/trunk llvm-gcc-4.2
+</pre>
+      </li>
+
+  <li><p>Make a build directory <tt>llvm-objects</tt> for llvm and make it the
+      current directory:</p>
+
+<pre class="doc_code">
+mkdir llvm-objects
+cd llvm-objects
+</pre>
+      </li>
+
+  <li><p>Configure LLVM (here it is configured to install into <tt>/usr/local</tt>):</p>
+
+<pre class="doc_code">
+../llvm/configure --prefix=<b>/usr/local</b> --enable-optimized --enable-assertions
+</pre>
+
+      <p>If you have a multi-compiler setup and the C++ compiler is not the
+      default, then you can configure like this:</p>
+
+<pre class="doc_code">
+CXX=<b>PATH_TO_C++_COMPILER</b> ../llvm/configure --prefix=<b>/usr/local</b> --enable-optimized --enable-assertions
+</pre>
+
+      <p>To compile without checking (not recommended), replace
+      <tt>--enable-assertions</tt> with <tt>--disable-assertions</tt>.</p>
+
+      </li>
+
+  <li><p>Build LLVM:</p>
+
+<pre class="doc_code">
+make
+</pre>
+      </li>
+
+  <li><p>Install LLVM (optional):</p>
+
+<pre class="doc_code">
+make install
+</pre>
+      </li>
+
+  <li><p>Make a build directory <tt>llvm-gcc-4.2-objects</tt> for llvm-gcc and make it the
+      current directory:</p>
+
+<pre class="doc_code">
+cd ..
+mkdir llvm-gcc-4.2-objects
+cd llvm-gcc-4.2-objects
+</pre>
+      </li>
+
+  <li><p>Configure llvm-gcc (here it is configured to install into <tt>/usr/local</tt>).
+      The <tt>--enable-checking</tt> flag turns on sanity checks inside the compiler.
+      To turn off these checks (not recommended), replace <tt>--enable-checking</tt>
+      with <tt>--disable-checking</tt>.
+      Additional languages can be appended to the <tt>--enable-languages</tt> switch,
+      for example <tt>--enable-languages=ada,c,c++</tt>.</p>
+
+<pre class="doc_code">
+../llvm-gcc-4.2/configure --prefix=<b>/usr/local</b> --enable-languages=ada,c \
+                          --enable-checking --enable-llvm=$PWD/../llvm-objects \
+			  --disable-bootstrap --disable-multilib
+</pre>
+
+      <p>If you have a multi-compiler setup, then you can configure like this:</p>
+
+<pre class="doc_code">
+export CC=<b>PATH_TO_C_AND_ADA_COMPILER</b>
+export CXX=<b>PATH_TO_C++_COMPILER</b>
+../llvm-gcc-4.2/configure --prefix=<b>/usr/local</b> --enable-languages=ada,c \
+                          --enable-checking --enable-llvm=$PWD/../llvm-objects \
+			  --disable-bootstrap --disable-multilib
+</pre>
+      </li>
+
+  <li><p>Build and install the compiler:</p>
+
+<pre class="doc_code">
+make
+make install
+</pre>
+      </li>
+</ol>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="fortran">Building the Fortran front-end</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+<p>To build with support for Fortran, follow the directions in the top-level
+<tt>README.LLVM</tt> file, adding ",fortran" to EXTRALANGS, for example:</p>
+
+<pre class="doc_code">
+EXTRALANGS=,fortran
+</pre>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="license">License Information</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+<p>
+The LLVM GCC frontend is licensed to you under the GNU General Public License
+and the GNU Lesser General Public License.  Please see the files COPYING and
+COPYING.LIB for more details.
+</p>
+
+<p>
+More information is <a href="FAQ.html#license">available in the FAQ</a>.
+</p>
+</div>
+
+<!-- *********************************************************************** -->
+
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+
+  <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date: 2011-04-22 17:30:22 -0700 (Fri, 22 Apr 2011) $
+</address>
+
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/GarbageCollection.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/GarbageCollection.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/GarbageCollection.html (added)
+++ www-releases/trunk/3.1/docs/GarbageCollection.html Tue May 22 14:32:29 2012
@@ -0,0 +1,1389 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" Content="text/html; charset=UTF-8" >
+  <title>Accurate Garbage Collection with LLVM</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+  <style type="text/css">
+    .rowhead { text-align: left; background: inherit; }
+    .indent { padding-left: 1em; }
+    .optl { color: #BFBFBF; }
+  </style>
+</head>
+<body>
+
+<h1>
+  Accurate Garbage Collection with LLVM
+</h1>
+
+<ol>
+  <li><a href="#introduction">Introduction</a>
+    <ul>
+    <li><a href="#feature">Goals and non-goals</a></li>
+    </ul>
+  </li>
+
+  <li><a href="#quickstart">Getting started</a>
+    <ul>
+    <li><a href="#quickstart-compiler">In your compiler</a></li>
+    <li><a href="#quickstart-runtime">In your runtime library</a></li>
+    <li><a href="#shadow-stack">About the shadow stack</a></li>
+    </ul>
+  </li>
+
+  <li><a href="#core">Core support</a>
+    <ul>
+    <li><a href="#gcattr">Specifying GC code generation:
+      <tt>gc "..."</tt></a></li>
+    <li><a href="#gcroot">Identifying GC roots on the stack:
+      <tt>llvm.gcroot</tt></a></li>
+    <li><a href="#barriers">Reading and writing references in the heap</a>
+      <ul>
+      <li><a href="#gcwrite">Write barrier: <tt>llvm.gcwrite</tt></a></li>
+      <li><a href="#gcread">Read barrier: <tt>llvm.gcread</tt></a></li>
+      </ul>
+    </li>
+    </ul>
+  </li>
+  
+  <li><a href="#plugin">Compiler plugin interface</a>
+    <ul>
+    <li><a href="#collector-algos">Overview of available features</a></li>
+    <li><a href="#stack-map">Computing stack maps</a></li>
+    <li><a href="#init-roots">Initializing roots to null:
+      <tt>InitRoots</tt></a></li>
+    <li><a href="#custom">Custom lowering of intrinsics: <tt>CustomRoots</tt>, 
+      <tt>CustomReadBarriers</tt>, and <tt>CustomWriteBarriers</tt></a></li>
+    <li><a href="#safe-points">Generating safe points:
+      <tt>NeededSafePoints</tt></a></li>
+    <li><a href="#assembly">Emitting assembly code:
+      <tt>GCMetadataPrinter</tt></a></li>
+    </ul>
+  </li>
+
+  <li><a href="#runtime-impl">Implementing a collector runtime</a>
+    <ul>
+      <li><a href="#gcdescriptors">Tracing GC pointers from heap
+      objects</a></li>
+    </ul>
+  </li>
+  
+  <li><a href="#references">References</a></li>
+  
+</ol>
+
+<div class="doc_author">
+  <p>Written by <a href="mailto:sabre at nondot.org">Chris Lattner</a> and
+     Gordon Henriksen</p>
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="introduction">Introduction</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>Garbage collection is a widely used technique that frees the programmer from
+having to know the lifetimes of heap objects, making software easier to produce
+and maintain. Many programming languages rely on garbage collection for
+automatic memory management. There are two primary forms of garbage collection:
+conservative and accurate.</p>
+
+<p>Conservative garbage collection often does not require any special support
+from either the language or the compiler: it can handle non-type-safe
+programming languages (such as C/C++) and does not require any special
+information from the compiler. The
+<a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/">Boehm collector</a> is
+an example of a state-of-the-art conservative collector.</p>
+
+<p>Accurate garbage collection requires the ability to identify all pointers in
+the program at run-time (which requires that the source-language be type-safe in
+most cases). Identifying pointers at run-time requires compiler support to
+locate all places that hold live pointer variables at run-time, including the
+<a href="#gcroot">processor stack and registers</a>.</p>
+
+<p>Conservative garbage collection is attractive because it does not require any
+special compiler support, but it does have problems. In particular, because the
+conservative garbage collector cannot <i>know</i> that a particular word in the
+machine is a pointer, it cannot move live objects in the heap (preventing the
+use of compacting and generational GC algorithms) and it can occasionally suffer
+from memory leaks due to integer values that happen to point to objects in the
+program. In addition, some aggressive compiler transformations can break
+conservative garbage collectors (though these seem rare in practice).</p>
+
+<p>Accurate garbage collectors do not suffer from any of these problems, but
+they can suffer from degraded scalar optimization of the program. In particular,
+because the runtime must be able to identify and update all pointers active in
+the program, some optimizations are less effective. In practice, however, the
+locality and performance benefits of using aggressive garbage collection
+techniques dominates any low-level losses.</p>
+
+<p>This document describes the mechanisms and interfaces provided by LLVM to
+support accurate garbage collection.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="feature">Goals and non-goals</a>
+</h3>
+
+<div>
+
+<p>LLVM's intermediate representation provides <a href="#intrinsics">garbage
+collection intrinsics</a> that offer support for a broad class of
+collector models. For instance, the intrinsics permit:</p>
+
+<ul>
+  <li>semi-space collectors</li>
+  <li>mark-sweep collectors</li>
+  <li>generational collectors</li>
+  <li>reference counting</li>
+  <li>incremental collectors</li>
+  <li>concurrent collectors</li>
+  <li>cooperative collectors</li>
+</ul>
+
+<p>We hope that the primitive support built into the LLVM IR is sufficient to
+support a broad class of garbage collected languages including Scheme, ML, Java,
+C#, Perl, Python, Lua, Ruby, other scripting languages, and more.</p>
+
+<p>However, LLVM does not itself provide a garbage collector—this should
+be part of your language's runtime library. LLVM provides a framework for
+compile time <a href="#plugin">code generation plugins</a>. The role of these
+plugins is to generate code and data structures which conforms to the <em>binary
+interface</em> specified by the <em>runtime library</em>. This is similar to the
+relationship between LLVM and DWARF debugging info, for example. The
+difference primarily lies in the lack of an established standard in the domain
+of garbage collection—thus the plugins.</p>
+
+<p>The aspects of the binary interface with which LLVM's GC support is
+concerned are:</p>
+
+<ul>
+  <li>Creation of GC-safe points within code where collection is allowed to
+      execute safely.</li>
+  <li>Computation of the stack map. For each safe point in the code, object
+      references within the stack frame must be identified so that the
+      collector may traverse and perhaps update them.</li>
+  <li>Write barriers when storing object references to the heap. These are
+      commonly used to optimize incremental scans in generational
+      collectors.</li>
+  <li>Emission of read barriers when loading object references. These are
+      useful for interoperating with concurrent collectors.</li>
+</ul>
+
+<p>There are additional areas that LLVM does not directly address:</p>
+
+<ul>
+  <li>Registration of global roots with the runtime.</li>
+  <li>Registration of stack map entries with the runtime.</li>
+  <li>The functions used by the program to allocate memory, trigger a
+      collection, etc.</li>
+  <li>Computation or compilation of type maps, or registration of them with
+      the runtime. These are used to crawl the heap for object
+      references.</li>
+</ul>
+
+<p>In general, LLVM's support for GC does not include features which can be
+adequately addressed with other features of the IR and does not specify a
+particular binary interface. On the plus side, this means that you should be
+able to integrate LLVM with an existing runtime. On the other hand, it leaves
+a lot of work for the developer of a novel language. However, it's easy to get
+started quickly and scale up to a more sophisticated implementation as your
+compiler matures.</p>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="quickstart">Getting started</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>Using a GC with LLVM implies many things, for example:</p>
+
+<ul>
+  <li>Write a runtime library or find an existing one which implements a GC
+      heap.<ol>
+    <li>Implement a memory allocator.</li>
+    <li>Design a binary interface for the stack map, used to identify
+        references within a stack frame on the machine stack.*</li>
+    <li>Implement a stack crawler to discover functions on the call stack.*</li>
+    <li>Implement a registry for global roots.</li>
+    <li>Design a binary interface for type maps, used to identify references
+        within heap objects.</li>
+    <li>Implement a collection routine bringing together all of the above.</li>
+  </ol></li>
+  <li>Emit compatible code from your compiler.<ul>
+    <li>Initialization in the main function.</li>
+    <li>Use the <tt>gc "..."</tt> attribute to enable GC code generation
+        (or <tt>F.setGC("...")</tt>).</li>
+    <li>Use <tt>@llvm.gcroot</tt> to mark stack roots.</li>
+    <li>Use <tt>@llvm.gcread</tt> and/or <tt>@llvm.gcwrite</tt> to
+        manipulate GC references, if necessary.</li>
+    <li>Allocate memory using the GC allocation routine provided by the
+        runtime library.</li>
+    <li>Generate type maps according to your runtime's binary interface.</li>
+  </ul></li>
+  <li>Write a compiler plugin to interface LLVM with the runtime library.*<ul>
+    <li>Lower <tt>@llvm.gcread</tt> and <tt>@llvm.gcwrite</tt> to appropriate
+        code sequences.*</li>
+    <li>Compile LLVM's stack map to the binary form expected by the
+        runtime.</li>
+  </ul></li>
+  <li>Load the plugin into the compiler. Use <tt>llc -load</tt> or link the
+      plugin statically with your language's compiler.*</li>
+  <li>Link program executables with the runtime.</li>
+</ul>
+
+<p>To help with several of these tasks (those indicated with a *), LLVM
+includes a highly portable, built-in ShadowStack code generator. It is compiled
+into <tt>llc</tt> and works even with the interpreter and C backends.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="quickstart-compiler">In your compiler</a>
+</h3>
+
+<div>
+
+<p>To turn the shadow stack on for your functions, first call:</p>
+
+<div class="doc_code"><pre
+>F.setGC("shadow-stack");</pre></div>
+
+<p>for each function your compiler emits. Since the shadow stack is built into
+LLVM, you do not need to load a plugin.</p>
+
+<p>Your compiler must also use <tt>@llvm.gcroot</tt> as documented.
+Don't forget to create a root for each intermediate value that is generated
+when evaluating an expression. In <tt>h(f(), g())</tt>, the result of
+<tt>f()</tt> could easily be collected if evaluating <tt>g()</tt> triggers a
+collection.</p>
+
+<p>There's no need to use <tt>@llvm.gcread</tt> and <tt>@llvm.gcwrite</tt> over
+plain <tt>load</tt> and <tt>store</tt> for now. You will need them when
+switching to a more advanced GC.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="quickstart-runtime">In your runtime</a>
+</h3>
+
+<div>
+
+<p>The shadow stack doesn't imply a memory allocation algorithm. A semispace
+collector or building atop <tt>malloc</tt> are great places to start, and can
+be implemented with very little code.</p>
+
+<p>When it comes time to collect, however, your runtime needs to traverse the
+stack roots, and for this it needs to integrate with the shadow stack. Luckily,
+doing so is very simple. (This code is heavily commented to help you
+understand the data structure, but there are only 20 lines of meaningful
+code.)</p>
+
+<pre class="doc_code">
+/// @brief The map for a single function's stack frame. One of these is
+///        compiled as constant data into the executable for each function.
+/// 
+/// Storage of metadata values is elided if the %metadata parameter to
+/// @llvm.gcroot is null.
+struct FrameMap {
+  int32_t NumRoots;    //< Number of roots in stack frame.
+  int32_t NumMeta;     //< Number of metadata entries. May be < NumRoots.
+  const void *Meta[0]; //< Metadata for each root.
+};
+
+/// @brief A link in the dynamic shadow stack. One of these is embedded in the
+///        stack frame of each function on the call stack.
+struct StackEntry {
+  StackEntry *Next;    //< Link to next stack entry (the caller's).
+  const FrameMap *Map; //< Pointer to constant FrameMap.
+  void *Roots[0];      //< Stack roots (in-place array).
+};
+
+/// @brief The head of the singly-linked list of StackEntries. Functions push
+///        and pop onto this in their prologue and epilogue.
+/// 
+/// Since there is only a global list, this technique is not threadsafe.
+StackEntry *llvm_gc_root_chain;
+
+/// @brief Calls Visitor(root, meta) for each GC root on the stack.
+///        root and meta are exactly the values passed to
+///        <tt>@llvm.gcroot</tt>.
+/// 
+/// Visitor could be a function to recursively mark live objects. Or it
+/// might copy them to another heap or generation.
+/// 
+/// @param Visitor A function to invoke for every GC root on the stack.
+void visitGCRoots(void (*Visitor)(void **Root, const void *Meta)) {
+  for (StackEntry *R = llvm_gc_root_chain; R; R = R->Next) {
+    unsigned i = 0;
+    
+    // For roots [0, NumMeta), the metadata pointer is in the FrameMap.
+    for (unsigned e = R->Map->NumMeta; i != e; ++i)
+      Visitor(&R->Roots[i], R->Map->Meta[i]);
+    
+    // For roots [NumMeta, NumRoots), the metadata pointer is null.
+    for (unsigned e = R->Map->NumRoots; i != e; ++i)
+      Visitor(&R->Roots[i], NULL);
+  }
+}</pre>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="shadow-stack">About the shadow stack</a>
+</h3>
+
+<div>
+
+<p>Unlike many GC algorithms which rely on a cooperative code generator to
+compile stack maps, this algorithm carefully maintains a linked list of stack
+roots [<a href="#henderson02">Henderson2002</a>]. This so-called "shadow stack"
+mirrors the machine stack. Maintaining this data structure is slower than using
+a stack map compiled into the executable as constant data, but has a significant
+portability advantage because it requires no special support from the target
+code generator, and does not require tricky platform-specific code to crawl
+the machine stack.</p>
+
+<p>The tradeoff for this simplicity and portability is:</p>
+
+<ul>
+  <li>High overhead per function call.</li>
+  <li>Not thread-safe.</li>
+</ul>
+
+<p>Still, it's an easy way to get started. After your compiler and runtime are
+up and running, writing a <a href="#plugin">plugin</a> will allow you to take
+advantage of <a href="#collector-algos">more advanced GC features</a> of LLVM
+in order to improve performance.</p>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="core">IR features</a><a name="intrinsics"></a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>This section describes the garbage collection facilities provided by the
+<a href="LangRef.html">LLVM intermediate representation</a>. The exact behavior
+of these IR features is specified by the binary interface implemented by a
+<a href="#plugin">code generation plugin</a>, not by this document.</p>
+
+<p>These facilities are limited to those strictly necessary; they are not
+intended to be a complete interface to any garbage collector. A program will
+need to interface with the GC library using the facilities provided by that
+program.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="gcattr">Specifying GC code generation: <tt>gc "..."</tt></a>
+</h3>
+
+<div>
+
+<div class="doc_code"><tt>
+  define <i>ty</i> @<i>name</i>(...) <span style="text-decoration: underline">gc "<i>name</i>"</span> { ...
+</tt></div>
+
+<p>The <tt>gc</tt> function attribute is used to specify the desired GC style
+to the compiler. Its programmatic equivalent is the <tt>setGC</tt> method of
+<tt>Function</tt>.</p>
+
+<p>Setting <tt>gc "<i>name</i>"</tt> on a function triggers a search for a
+matching code generation plugin "<i>name</i>"; it is that plugin which defines
+the exact nature of the code generated to support GC. If none is found, the
+compiler will raise an error.</p>
+
+<p>Specifying the GC style on a per-function basis allows LLVM to link together
+programs that use different garbage collection algorithms (or none at all).</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="gcroot">Identifying GC roots on the stack: <tt>llvm.gcroot</tt></a>
+</h3>
+
+<div>
+
+<div class="doc_code"><tt>
+  void @llvm.gcroot(i8** %ptrloc, i8* %metadata)
+</tt></div>
+
+<p>The <tt>llvm.gcroot</tt> intrinsic is used to inform LLVM that a stack
+variable references an object on the heap and is to be tracked for garbage
+collection. The exact impact on generated code is specified by a <a
+href="#plugin">compiler plugin</a>. All calls to <tt>llvm.gcroot</tt> <b>must</b> reside
+ inside the first basic block.</p>
+
+<p>A compiler which uses mem2reg to raise imperative code using <tt>alloca</tt>
+into SSA form need only add a call to <tt>@llvm.gcroot</tt> for those variables
+which a pointers into the GC heap.</p>
+
+<p>It is also important to mark intermediate values with <tt>llvm.gcroot</tt>.
+For example, consider <tt>h(f(), g())</tt>. Beware leaking the result of
+<tt>f()</tt> in the case that <tt>g()</tt> triggers a collection. Note, that
+stack variables must be initialized and marked with <tt>llvm.gcroot</tt> in
+function's prologue.</p>
+
+<p>The first argument <b>must</b> be a value referring to an alloca instruction
+or a bitcast of an alloca. The second contains a pointer to metadata that
+should be associated with the pointer, and <b>must</b> be a constant or global
+value address. If your target collector uses tags, use a null pointer for
+metadata.</p>
+
+<p>The <tt>%metadata</tt> argument can be used to avoid requiring heap objects
+to have 'isa' pointers or tag bits. [<a href="#appel89">Appel89</a>, <a
+href="#goldberg91">Goldberg91</a>, <a href="#tolmach94">Tolmach94</a>] If
+specified, its value will be tracked along with the location of the pointer in
+the stack frame.</p>
+
+<p>Consider the following fragment of Java code:</p>
+
+<pre class="doc_code">
+       {
+         Object X;   // A null-initialized reference to an object
+         ...
+       }
+</pre>
+
+<p>This block (which may be located in the middle of a function or in a loop
+nest), could be compiled to this LLVM code:</p>
+
+<pre class="doc_code">
+Entry:
+   ;; In the entry block for the function, allocate the
+   ;; stack space for X, which is an LLVM pointer.
+   %X = alloca %Object*
+   
+   ;; Tell LLVM that the stack space is a stack root.
+   ;; Java has type-tags on objects, so we pass null as metadata.
+   %tmp = bitcast %Object** %X to i8**
+   call void @llvm.gcroot(i8** %X, i8* null)
+   ...
+
+   ;; "CodeBlock" is the block corresponding to the start
+   ;;  of the scope above.
+CodeBlock:
+   ;; Java null-initializes pointers.
+   store %Object* null, %Object** %X
+
+   ...
+
+   ;; As the pointer goes out of scope, store a null value into
+   ;; it, to indicate that the value is no longer live.
+   store %Object* null, %Object** %X
+   ...
+</pre>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="barriers">Reading and writing references in the heap</a>
+</h3>
+
+<div>
+
+<p>Some collectors need to be informed when the mutator (the program that needs
+garbage collection) either reads a pointer from or writes a pointer to a field
+of a heap object. The code fragments inserted at these points are called
+<em>read barriers</em> and <em>write barriers</em>, respectively. The amount of
+code that needs to be executed is usually quite small and not on the critical
+path of any computation, so the overall performance impact of the barrier is
+tolerable.</p>
+
+<p>Barriers often require access to the <em>object pointer</em> rather than the
+<em>derived pointer</em> (which is a pointer to the field within the
+object). Accordingly, these intrinsics take both pointers as separate arguments
+for completeness. In this snippet, <tt>%object</tt> is the object pointer, and 
+<tt>%derived</tt> is the derived pointer:</p>
+
+<blockquote><pre>
+    ;; An array type.
+    %class.Array = type { %class.Object, i32, [0 x %class.Object*] }
+    ...
+
+    ;; Load the object pointer from a gcroot.
+    %object = load %class.Array** %object_addr
+
+    ;; Compute the derived pointer.
+    %derived = getelementptr %object, i32 0, i32 2, i32 %n</pre></blockquote>
+
+<p>LLVM does not enforce this relationship between the object and derived
+pointer (although a <a href="#plugin">plugin</a> might). However, it would be
+an unusual collector that violated it.</p>
+
+<p>The use of these intrinsics is naturally optional if the target GC does
+require the corresponding barrier. Such a GC plugin will replace the intrinsic
+calls with the corresponding <tt>load</tt> or <tt>store</tt> instruction if they
+are used.</p>
+
+<!-- ======================================================================= -->
+<h4>
+  <a name="gcwrite">Write barrier: <tt>llvm.gcwrite</tt></a>
+</h4>
+
+<div>
+
+<div class="doc_code"><tt>
+void @llvm.gcwrite(i8* %value, i8* %object, i8** %derived)
+</tt></div>
+
+<p>For write barriers, LLVM provides the <tt>llvm.gcwrite</tt> intrinsic
+function. It has exactly the same semantics as a non-volatile <tt>store</tt> to
+the derived pointer (the third argument). The exact code generated is specified
+by a <a href="#plugin">compiler plugin</a>.</p>
+
+<p>Many important algorithms require write barriers, including generational
+and concurrent collectors. Additionally, write barriers could be used to
+implement reference counting.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h4>
+  <a name="gcread">Read barrier: <tt>llvm.gcread</tt></a>
+</h4>
+
+<div>
+
+<div class="doc_code"><tt>
+i8* @llvm.gcread(i8* %object, i8** %derived)<br>
+</tt></div>
+
+<p>For read barriers, LLVM provides the <tt>llvm.gcread</tt> intrinsic function.
+It has exactly the same semantics as a non-volatile <tt>load</tt> from the
+derived pointer (the second argument). The exact code generated is specified by
+a <a href="#plugin">compiler plugin</a>.</p>
+
+<p>Read barriers are needed by fewer algorithms than write barriers, and may
+have a greater performance impact since pointer reads are more frequent than
+writes.</p>
+
+</div>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="plugin">Implementing a collector plugin</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>User code specifies which GC code generation to use with the <tt>gc</tt>
+function attribute or, equivalently, with the <tt>setGC</tt> method of
+<tt>Function</tt>.</p>
+
+<p>To implement a GC plugin, it is necessary to subclass
+<tt>llvm::GCStrategy</tt>, which can be accomplished in a few lines of
+boilerplate code. LLVM's infrastructure provides access to several important
+algorithms. For an uncontroversial collector, all that remains may be to
+compile LLVM's computed stack map to assembly code (using the binary
+representation expected by the runtime library). This can be accomplished in
+about 100 lines of code.</p>
+
+<p>This is not the appropriate place to implement a garbage collected heap or a
+garbage collector itself. That code should exist in the language's runtime
+library. The compiler plugin is responsible for generating code which
+conforms to the binary interface defined by library, most essentially the
+<a href="#stack-map">stack map</a>.</p>
+
+<p>To subclass <tt>llvm::GCStrategy</tt> and register it with the compiler:</p>
+
+<blockquote><pre>// lib/MyGC/MyGC.cpp - Example LLVM GC plugin
+
+#include "llvm/CodeGen/GCStrategy.h"
+#include "llvm/CodeGen/GCMetadata.h"
+#include "llvm/Support/Compiler.h"
+
+using namespace llvm;
+
+namespace {
+  class LLVM_LIBRARY_VISIBILITY MyGC : public GCStrategy {
+  public:
+    MyGC() {}
+  };
+  
+  GCRegistry::Add<MyGC>
+  X("mygc", "My bespoke garbage collector.");
+}</pre></blockquote>
+
+<p>This boilerplate collector does nothing. More specifically:</p>
+
+<ul>
+  <li><tt>llvm.gcread</tt> calls are replaced with the corresponding
+      <tt>load</tt> instruction.</li>
+  <li><tt>llvm.gcwrite</tt> calls are replaced with the corresponding
+      <tt>store</tt> instruction.</li>
+  <li>No safe points are added to the code.</li>
+  <li>The stack map is not compiled into the executable.</li>
+</ul>
+
+<p>Using the LLVM makefiles (like the <a
+href="http://llvm.org/viewvc/llvm-project/llvm/trunk/projects/sample/">sample
+project</a>), this code can be compiled as a plugin using a simple
+makefile:</p>
+
+<blockquote><pre
+># lib/MyGC/Makefile
+
+LEVEL := ../..
+LIBRARYNAME = <var>MyGC</var>
+LOADABLE_MODULE = 1
+
+include $(LEVEL)/Makefile.common</pre></blockquote>
+
+<p>Once the plugin is compiled, code using it may be compiled using <tt>llc
+-load=<var>MyGC.so</var></tt> (though <var>MyGC.so</var> may have some other
+platform-specific extension):</p>
+
+<blockquote><pre
+>$ cat sample.ll
+define void @f() gc "mygc" {
+entry:
+        ret void
+}
+$ llvm-as < sample.ll | llc -load=MyGC.so</pre></blockquote>
+
+<p>It is also possible to statically link the collector plugin into tools, such
+as a language-specific compiler front-end.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="collector-algos">Overview of available features</a>
+</h3>
+
+<div>
+
+<p><tt>GCStrategy</tt> provides a range of features through which a plugin
+may do useful work. Some of these are callbacks, some are algorithms that can
+be enabled, disabled, or customized. This matrix summarizes the supported (and
+planned) features and correlates them with the collection techniques which
+typically require them.</p>
+
+<table>
+  <tr>
+    <th>Algorithm</th>
+    <th>Done</th>
+    <th>shadow stack</th>
+    <th>refcount</th>
+    <th>mark-sweep</th>
+    <th>copying</th>
+    <th>incremental</th>
+    <th>threaded</th>
+    <th>concurrent</th>
+  </tr>
+  <tr>
+    <th class="rowhead"><a href="#stack-map">stack map</a></th>
+    <td>✔</td>
+    <td></td>
+    <td></td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+  </tr>
+  <tr>
+    <th class="rowhead"><a href="#init-roots">initialize roots</a></th>
+    <td>✔</td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+  </tr>
+  <tr class="doc_warning">
+    <th class="rowhead">derived pointers</th>
+    <td>NO</td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td>✘*</td>
+    <td>✘*</td>
+  </tr>
+  <tr>
+    <th class="rowhead"><em><a href="#custom">custom lowering</a></em></th>
+    <td>✔</td>
+    <th></th>
+    <th></th>
+    <th></th>
+    <th></th>
+    <th></th>
+    <th></th>
+    <th></th>
+  </tr>
+  <tr>
+    <th class="rowhead indent">gcroot</th>
+    <td>✔</td>
+    <td>✘</td>
+    <td>✘</td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+  </tr>
+  <tr>
+    <th class="rowhead indent">gcwrite</th>
+    <td>✔</td>
+    <td></td>
+    <td>✘</td>
+    <td></td>
+    <td></td>
+    <td>✘</td>
+    <td></td>
+    <td>✘</td>
+  </tr>
+  <tr>
+    <th class="rowhead indent">gcread</th>
+    <td>✔</td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td>✘</td>
+  </tr>
+  <tr>
+    <th class="rowhead"><em><a href="#safe-points">safe points</a></em></th>
+    <td></td>
+    <th></th>
+    <th></th>
+    <th></th>
+    <th></th>
+    <th></th>
+    <th></th>
+    <th></th>
+  </tr>
+  <tr>
+    <th class="rowhead indent">in calls</th>
+    <td>✔</td>
+    <td></td>
+    <td></td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+  </tr>
+  <tr>
+    <th class="rowhead indent">before calls</th>
+    <td>✔</td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td>✘</td>
+    <td>✘</td>
+  </tr>
+  <tr class="doc_warning">
+    <th class="rowhead indent">for loops</th>
+    <td>NO</td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td>✘</td>
+    <td>✘</td>
+  </tr>
+  <tr>
+    <th class="rowhead indent">before escape</th>
+    <td>✔</td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td>✘</td>
+    <td>✘</td>
+  </tr>
+  <tr class="doc_warning">
+    <th class="rowhead">emit code at safe points</th>
+    <td>NO</td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td>✘</td>
+    <td>✘</td>
+  </tr>
+  <tr>
+    <th class="rowhead"><em>output</em></th>
+    <td></td>
+    <th></th>
+    <th></th>
+    <th></th>
+    <th></th>
+    <th></th>
+    <th></th>
+    <th></th>
+  </tr>
+  <tr>
+    <th class="rowhead indent"><a href="#assembly">assembly</a></th>
+    <td>✔</td>
+    <td></td>
+    <td></td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+    <td>✘</td>
+  </tr>
+  <tr class="doc_warning">
+    <th class="rowhead indent">JIT</th>
+    <td>NO</td>
+    <td></td>
+    <td></td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+  </tr>
+  <tr class="doc_warning">
+    <th class="rowhead indent">obj</th>
+    <td>NO</td>
+    <td></td>
+    <td></td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+  </tr>
+  <tr class="doc_warning">
+    <th class="rowhead">live analysis</th>
+    <td>NO</td>
+    <td></td>
+    <td></td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+  </tr>
+  <tr class="doc_warning">
+    <th class="rowhead">register map</th>
+    <td>NO</td>
+    <td></td>
+    <td></td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+    <td class="optl">✘</td>
+  </tr>
+  <tr>
+    <td colspan="10">
+      <div><span class="doc_warning">*</span> Derived pointers only pose a
+           hazard to copying collectors.</div>
+      <div><span class="optl">✘</span> in gray denotes a feature which
+           could be utilized if available.</div>
+    </td>
+  </tr>
+</table>
+
+<p>To be clear, the collection techniques above are defined as:</p>
+
+<dl>
+  <dt>Shadow Stack</dt>
+  <dd>The mutator carefully maintains a linked list of stack roots.</dd>
+  <dt>Reference Counting</dt>
+  <dd>The mutator maintains a reference count for each object and frees an
+      object when its count falls to zero.</dd>
+  <dt>Mark-Sweep</dt>
+  <dd>When the heap is exhausted, the collector marks reachable objects starting
+      from the roots, then deallocates unreachable objects in a sweep
+      phase.</dd>
+  <dt>Copying</dt>
+  <dd>As reachability analysis proceeds, the collector copies objects from one
+      heap area to another, compacting them in the process. Copying collectors
+      enable highly efficient "bump pointer" allocation and can improve locality
+      of reference.</dd>
+  <dt>Incremental</dt>
+  <dd>(Including generational collectors.) Incremental collectors generally have
+      all the properties of a copying collector (regardless of whether the
+      mature heap is compacting), but bring the added complexity of requiring
+      write barriers.</dd>
+  <dt>Threaded</dt>
+  <dd>Denotes a multithreaded mutator; the collector must still stop the mutator
+      ("stop the world") before beginning reachability analysis. Stopping a
+      multithreaded mutator is a complicated problem. It generally requires
+      highly platform specific code in the runtime, and the production of
+      carefully designed machine code at safe points.</dd>
+  <dt>Concurrent</dt>
+  <dd>In this technique, the mutator and the collector run concurrently, with
+      the goal of eliminating pause times. In a <em>cooperative</em> collector,
+      the mutator further aids with collection should a pause occur, allowing
+      collection to take advantage of multiprocessor hosts. The "stop the world"
+      problem of threaded collectors is generally still present to a limited
+      extent. Sophisticated marking algorithms are necessary. Read barriers may
+      be necessary.</dd>
+</dl>
+
+<p>As the matrix indicates, LLVM's garbage collection infrastructure is already
+suitable for a wide variety of collectors, but does not currently extend to
+multithreaded programs. This will be added in the future as there is
+interest.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="stack-map">Computing stack maps</a>
+</h3>
+
+<div>
+
+<p>LLVM automatically computes a stack map. One of the most important features
+of a <tt>GCStrategy</tt> is to compile this information into the executable in
+the binary representation expected by the runtime library.</p>
+
+<p>The stack map consists of the location and identity of each GC root in the
+each function in the module. For each root:</p>
+
+<ul>
+  <li><tt>RootNum</tt>: The index of the root.</li>
+  <li><tt>StackOffset</tt>: The offset of the object relative to the frame
+      pointer.</li>
+  <li><tt>RootMetadata</tt>: The value passed as the <tt>%metadata</tt>
+      parameter to the <a href="#gcroot"><tt>@llvm.gcroot</tt></a> intrinsic.</li>
+</ul>
+
+<p>Also, for the function as a whole:</p>
+
+<ul>
+  <li><tt>getFrameSize()</tt>: The overall size of the function's initial
+      stack frame, not accounting for any dynamic allocation.</li>
+  <li><tt>roots_size()</tt>: The count of roots in the function.</li>
+</ul>
+
+<p>To access the stack map, use <tt>GCFunctionMetadata::roots_begin()</tt> and
+-<tt>end()</tt> from the <tt><a
+href="#assembly">GCMetadataPrinter</a></tt>:</p>
+
+<blockquote><pre
+>for (iterator I = begin(), E = end(); I != E; ++I) {
+  GCFunctionInfo *FI = *I;
+  unsigned FrameSize = FI->getFrameSize();
+  size_t RootCount = FI->roots_size();
+
+  for (GCFunctionInfo::roots_iterator RI = FI->roots_begin(),
+                                      RE = FI->roots_end();
+                                      RI != RE; ++RI) {
+    int RootNum = RI->Num;
+    int RootStackOffset = RI->StackOffset;
+    Constant *RootMetadata = RI->Metadata;
+  }
+}</pre></blockquote>
+
+<p>If the <tt>llvm.gcroot</tt> intrinsic is eliminated before code generation by
+a custom lowering pass, LLVM will compute an empty stack map. This may be useful
+for collector plugins which implement reference counting or a shadow stack.</p>
+
+</div>
+
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="init-roots">Initializing roots to null: <tt>InitRoots</tt></a>
+</h3>
+
+<div>
+
+<blockquote><pre
+>MyGC::MyGC() {
+  InitRoots = true;
+}</pre></blockquote>
+
+<p>When set, LLVM will automatically initialize each root to <tt>null</tt> upon
+entry to the function. This prevents the GC's sweep phase from visiting
+uninitialized pointers, which will almost certainly cause it to crash. This
+initialization occurs before custom lowering, so the two may be used
+together.</p>
+
+<p>Since LLVM does not yet compute liveness information, there is no means of
+distinguishing an uninitialized stack root from an initialized one. Therefore,
+this feature should be used by all GC plugins. It is enabled by default.</p>
+
+</div>
+
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="custom">Custom lowering of intrinsics: <tt>CustomRoots</tt>, 
+    <tt>CustomReadBarriers</tt>, and <tt>CustomWriteBarriers</tt></a>
+</h3>
+
+<div>
+
+<p>For GCs which use barriers or unusual treatment of stack roots, these
+flags allow the collector to perform arbitrary transformations of the LLVM
+IR:</p>
+
+<blockquote><pre
+>class MyGC : public GCStrategy {
+public:
+  MyGC() {
+    CustomRoots = true;
+    CustomReadBarriers = true;
+    CustomWriteBarriers = true;
+  }
+  
+  virtual bool initializeCustomLowering(Module &M);
+  virtual bool performCustomLowering(Function &F);
+};</pre></blockquote>
+
+<p>If any of these flags are set, then LLVM suppresses its default lowering for
+the corresponding intrinsics and instead calls
+<tt>performCustomLowering</tt>.</p>
+
+<p>LLVM's default action for each intrinsic is as follows:</p>
+
+<ul>
+  <li><tt>llvm.gcroot</tt>: Leave it alone. The code generator must see it
+                            or the stack map will not be computed.</li>
+  <li><tt>llvm.gcread</tt>: Substitute a <tt>load</tt> instruction.</li>
+  <li><tt>llvm.gcwrite</tt>: Substitute a <tt>store</tt> instruction.</li>
+</ul>
+
+<p>If <tt>CustomReadBarriers</tt> or <tt>CustomWriteBarriers</tt> are specified,
+then <tt>performCustomLowering</tt> <strong>must</strong> eliminate the
+corresponding barriers.</p>
+
+<p><tt>performCustomLowering</tt> must comply with the same restrictions as <a
+href="WritingAnLLVMPass.html#runOnFunction"><tt
+>FunctionPass::runOnFunction</tt></a>.
+Likewise, <tt>initializeCustomLowering</tt> has the same semantics as <a
+href="WritingAnLLVMPass.html#doInitialization_mod"><tt
+>Pass::doInitialization(Module&)</tt></a>.</p>
+
+<p>The following can be used as a template:</p>
+
+<blockquote><pre
+>#include "llvm/Module.h"
+#include "llvm/IntrinsicInst.h"
+
+bool MyGC::initializeCustomLowering(Module &M) {
+  return false;
+}
+
+bool MyGC::performCustomLowering(Function &F) {
+  bool MadeChange = false;
+  
+  for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB)
+    for (BasicBlock::iterator II = BB->begin(), E = BB->end(); II != E; )
+      if (IntrinsicInst *CI = dyn_cast<IntrinsicInst>(II++))
+        if (Function *F = CI->getCalledFunction())
+          switch (F->getIntrinsicID()) {
+          case Intrinsic::gcwrite:
+            // Handle llvm.gcwrite.
+            CI->eraseFromParent();
+            MadeChange = true;
+            break;
+          case Intrinsic::gcread:
+            // Handle llvm.gcread.
+            CI->eraseFromParent();
+            MadeChange = true;
+            break;
+          case Intrinsic::gcroot:
+            // Handle llvm.gcroot.
+            CI->eraseFromParent();
+            MadeChange = true;
+            break;
+          }
+  
+  return MadeChange;
+}</pre></blockquote>
+
+</div>
+
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="safe-points">Generating safe points: <tt>NeededSafePoints</tt></a>
+</h3>
+
+<div>
+
+<p>LLVM can compute four kinds of safe points:</p>
+
+<blockquote><pre
+>namespace GC {
+  /// PointKind - The type of a collector-safe point.
+  /// 
+  enum PointKind {
+    Loop,    //< Instr is a loop (backwards branch).
+    Return,  //< Instr is a return instruction.
+    PreCall, //< Instr is a call instruction.
+    PostCall //< Instr is the return address of a call.
+  };
+}</pre></blockquote>
+
+<p>A collector can request any combination of the four by setting the 
+<tt>NeededSafePoints</tt> mask:</p>
+
+<blockquote><pre
+>MyGC::MyGC() {
+  NeededSafePoints = 1 << GC::Loop
+                   | 1 << GC::Return
+                   | 1 << GC::PreCall
+                   | 1 << GC::PostCall;
+}</pre></blockquote>
+
+<p>It can then use the following routines to access safe points.</p>
+
+<blockquote><pre
+>for (iterator I = begin(), E = end(); I != E; ++I) {
+  GCFunctionInfo *MD = *I;
+  size_t PointCount = MD->size();
+
+  for (GCFunctionInfo::iterator PI = MD->begin(),
+                                PE = MD->end(); PI != PE; ++PI) {
+    GC::PointKind PointKind = PI->Kind;
+    unsigned PointNum = PI->Num;
+  }
+}
+</pre></blockquote>
+
+<p>Almost every collector requires <tt>PostCall</tt> safe points, since these
+correspond to the moments when the function is suspended during a call to a
+subroutine.</p>
+
+<p>Threaded programs generally require <tt>Loop</tt> safe points to guarantee
+that the application will reach a safe point within a bounded amount of time,
+even if it is executing a long-running loop which contains no function
+calls.</p>
+
+<p>Threaded collectors may also require <tt>Return</tt> and <tt>PreCall</tt>
+safe points to implement "stop the world" techniques using self-modifying code,
+where it is important that the program not exit the function without reaching a
+safe point (because only the topmost function has been patched).</p>
+
+</div>
+
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="assembly">Emitting assembly code: <tt>GCMetadataPrinter</tt></a>
+</h3>
+
+<div>
+
+<p>LLVM allows a plugin to print arbitrary assembly code before and after the
+rest of a module's assembly code. At the end of the module, the GC can compile
+the LLVM stack map into assembly code. (At the beginning, this information is not
+yet computed.)</p>
+
+<p>Since AsmWriter and CodeGen are separate components of LLVM, a separate
+abstract base class and registry is provided for printing assembly code, the
+<tt>GCMetadaPrinter</tt> and <tt>GCMetadataPrinterRegistry</tt>. The AsmWriter
+will look for such a subclass if the <tt>GCStrategy</tt> sets
+<tt>UsesMetadata</tt>:</p>
+
+<blockquote><pre
+>MyGC::MyGC() {
+  UsesMetadata = true;
+}</pre></blockquote>
+
+<p>This separation allows JIT-only clients to be smaller.</p>
+
+<p>Note that LLVM does not currently have analogous APIs to support code
+generation in the JIT, nor using the object writers.</p>
+
+<blockquote><pre
+>// lib/MyGC/MyGCPrinter.cpp - Example LLVM GC printer
+
+#include "llvm/CodeGen/GCMetadataPrinter.h"
+#include "llvm/Support/Compiler.h"
+
+using namespace llvm;
+
+namespace {
+  class LLVM_LIBRARY_VISIBILITY MyGCPrinter : public GCMetadataPrinter {
+  public:
+    virtual void beginAssembly(std::ostream &OS, AsmPrinter &AP,
+                               const TargetAsmInfo &TAI);
+  
+    virtual void finishAssembly(std::ostream &OS, AsmPrinter &AP,
+                                const TargetAsmInfo &TAI);
+  };
+  
+  GCMetadataPrinterRegistry::Add<MyGCPrinter>
+  X("mygc", "My bespoke garbage collector.");
+}</pre></blockquote>
+
+<p>The collector should use <tt>AsmPrinter</tt> and <tt>TargetAsmInfo</tt> to
+print portable assembly code to the <tt>std::ostream</tt>. The collector itself
+contains the stack map for the entire module, and may access the
+<tt>GCFunctionInfo</tt> using its own <tt>begin()</tt> and <tt>end()</tt>
+methods. Here's a realistic example:</p>
+
+<blockquote><pre
+>#include "llvm/CodeGen/AsmPrinter.h"
+#include "llvm/Function.h"
+#include "llvm/Target/TargetMachine.h"
+#include "llvm/Target/TargetData.h"
+#include "llvm/Target/TargetAsmInfo.h"
+
+void MyGCPrinter::beginAssembly(std::ostream &OS, AsmPrinter &AP,
+                                const TargetAsmInfo &TAI) {
+  // Nothing to do.
+}
+
+void MyGCPrinter::finishAssembly(std::ostream &OS, AsmPrinter &AP,
+                                 const TargetAsmInfo &TAI) {
+  // Set up for emitting addresses.
+  const char *AddressDirective;
+  int AddressAlignLog;
+  if (AP.TM.getTargetData()->getPointerSize() == sizeof(int32_t)) {
+    AddressDirective = TAI.getData32bitsDirective();
+    AddressAlignLog = 2;
+  } else {
+    AddressDirective = TAI.getData64bitsDirective();
+    AddressAlignLog = 3;
+  }
+  
+  // Put this in the data section.
+  AP.SwitchToDataSection(TAI.getDataSection());
+  
+  // For each function...
+  for (iterator FI = begin(), FE = end(); FI != FE; ++FI) {
+    GCFunctionInfo &MD = **FI;
+    
+    // Emit this data structure:
+    // 
+    // struct {
+    //   int32_t PointCount;
+    //   struct {
+    //     void *SafePointAddress;
+    //     int32_t LiveCount;
+    //     int32_t LiveOffsets[LiveCount];
+    //   } Points[PointCount];
+    // } __gcmap_<FUNCTIONNAME>;
+    
+    // Align to address width.
+    AP.EmitAlignment(AddressAlignLog);
+    
+    // Emit the symbol by which the stack map entry can be found.
+    std::string Symbol;
+    Symbol += TAI.getGlobalPrefix();
+    Symbol += "__gcmap_";
+    Symbol += MD.getFunction().getName();
+    if (const char *GlobalDirective = TAI.getGlobalDirective())
+      OS << GlobalDirective << Symbol << "\n";
+    OS << TAI.getGlobalPrefix() << Symbol << ":\n";
+    
+    // Emit PointCount.
+    AP.EmitInt32(MD.size());
+    AP.EOL("safe point count");
+    
+    // And each safe point...
+    for (GCFunctionInfo::iterator PI = MD.begin(),
+                                     PE = MD.end(); PI != PE; ++PI) {
+      // Align to address width.
+      AP.EmitAlignment(AddressAlignLog);
+      
+      // Emit the address of the safe point.
+      OS << AddressDirective
+         << TAI.getPrivateGlobalPrefix() << "label" << PI->Num;
+      AP.EOL("safe point address");
+      
+      // Emit the stack frame size.
+      AP.EmitInt32(MD.getFrameSize());
+      AP.EOL("stack frame size");
+      
+      // Emit the number of live roots in the function.
+      AP.EmitInt32(MD.live_size(PI));
+      AP.EOL("live root count");
+      
+      // And for each live root...
+      for (GCFunctionInfo::live_iterator LI = MD.live_begin(PI),
+                                            LE = MD.live_end(PI);
+                                            LI != LE; ++LI) {
+        // Print its offset within the stack frame.
+        AP.EmitInt32(LI->StackOffset);
+        AP.EOL("stack offset");
+      }
+    }
+  }
+}
+</pre></blockquote>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="references">References</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p><a name="appel89">[Appel89]</a> Runtime Tags Aren't Necessary. Andrew
+W. Appel. Lisp and Symbolic Computation 19(7):703-705, July 1989.</p>
+
+<p><a name="goldberg91">[Goldberg91]</a> Tag-free garbage collection for
+strongly typed programming languages. Benjamin Goldberg. ACM SIGPLAN
+PLDI'91.</p>
+
+<p><a name="tolmach94">[Tolmach94]</a> Tag-free garbage collection using
+explicit type parameters. Andrew Tolmach. Proceedings of the 1994 ACM
+conference on LISP and functional programming.</p>
+
+<p><a name="henderson02">[Henderson2002]</a> <a
+href="http://citeseer.ist.psu.edu/henderson02accurate.html">
+Accurate Garbage Collection in an Uncooperative Environment</a>.
+Fergus Henderson. International Symposium on Memory Management 2002.</p>
+
+</div>
+
+
+<!-- *********************************************************************** -->
+
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+
+  <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
+  <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date: 2012-03-02 20:32:33 -0800 (Fri, 02 Mar 2012) $
+</address>
+
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/GetElementPtr.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/GetElementPtr.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/GetElementPtr.html (added)
+++ www-releases/trunk/3.1/docs/GetElementPtr.html Tue May 22 14:32:29 2012
@@ -0,0 +1,753 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>The Often Misunderstood GEP Instruction</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+  <style type="text/css">
+    TABLE   { text-align: left; border: 1px solid black; border-collapse: collapse; margin: 0 0 0 0; }
+  </style>
+</head>
+<body>
+
+<h1>
+  The Often Misunderstood GEP Instruction
+</h1>
+
+<ol>
+  <li><a href="#intro">Introduction</a></li>
+  <li><a href="#addresses">Address Computation</a>
+  <ol>
+    <li><a href="#extra_index">Why is the extra 0 index required?</a></li>
+    <li><a href="#deref">What is dereferenced by GEP?</a></li>
+    <li><a href="#firstptr">Why can you index through the first pointer but not
+      subsequent ones?</a></li>
+    <li><a href="#lead0">Why don't GEP x,0,0,1 and GEP x,1 alias? </a></li>
+    <li><a href="#trail0">Why do GEP x,1,0,0 and GEP x,1 alias? </a></li>
+    <li><a href="#vectors">Can GEP index into vector elements?</a>
+    <li><a href="#addrspace">What effect do address spaces have on GEPs?</a>
+    <li><a href="#int">How is GEP different from ptrtoint, arithmetic, and inttoptr?</a></li>
+    <li><a href="#be">I'm writing a backend for a target which needs custom lowering for GEP. How do I do this?</a>
+    <li><a href="#vla">How does VLA addressing work with GEPs?</a>
+  </ol></li>
+  <li><a href="#rules">Rules</a>
+  <ol>
+    <li><a href="#bounds">What happens if an array index is out of bounds?</a>
+    <li><a href="#negative">Can array indices be negative?</a>
+    <li><a href="#compare">Can I compare two values computed with GEPs?</a>
+    <li><a href="#types">Can I do GEP with a different pointer type than the type of the underlying object?</a>
+    <li><a href="#null">Can I cast an object's address to integer and add it to null?</a>
+    <li><a href="#ptrdiff">Can I compute the distance between two objects, and add that value to one address to compute the other address?</a>
+    <li><a href="#tbaa">Can I do type-based alias analysis on LLVM IR?</a>
+    <li><a href="#overflow">What happens if a GEP computation overflows?</a>
+    <li><a href="#check">How can I tell if my front-end is following the rules?</a>
+  </ol></li>
+  <li><a href="#rationale">Rationale</a>
+  <ol>
+    <li><a href="#goals">Why is GEP designed this way?</a></li>
+    <li><a href="#i32">Why do struct member indices always use i32?</a></li>
+    <li><a href="#uglygep">What's an uglygep?</a>
+  </ol></li>
+  <li><a href="#summary">Summary</a></li>
+</ol>
+
+<div class="doc_author">
+  <p>Written by: <a href="mailto:rspencer at reidspencer.com">Reid Spencer</a>.</p>
+</div>
+
+
+<!-- *********************************************************************** -->
+<h2><a name="intro">Introduction</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+  <p>This document seeks to dispel the mystery and confusion surrounding LLVM's
+  <a href="LangRef.html#i_getelementptr">GetElementPtr</a> (GEP) instruction.
+  Questions about the wily GEP instruction are
+  probably the most frequently occurring questions once a developer gets down to
+  coding with LLVM. Here we lay out the sources of confusion and show that the
+  GEP instruction is really quite simple.
+  </p>
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="addresses">Address Computation</a></h2>
+<!-- *********************************************************************** -->
+<div>
+  <p>When people are first confronted with the GEP instruction, they tend to
+  relate it to known concepts from other programming paradigms, most notably C
+  array indexing and field selection. GEP closely resembles C array indexing
+  and field selection, however it's is a little different and this leads to
+  the following questions.</p>
+
+<!-- *********************************************************************** -->
+<h3>
+  <a name="firstptr">What is the first index of the GEP instruction?</a>
+</h3>
+<div>
+  <p>Quick answer: The index stepping through the first operand.</p> 
+  <p>The confusion with the first index usually arises from thinking about 
+  the GetElementPtr instruction as if it was a C index operator. They aren't the
+  same. For example, when we write, in "C":</p>
+
+<div class="doc_code">
+<pre>
+AType *Foo;
+...
+X = &Foo->F;
+</pre>
+</div>
+
+  <p>it is natural to think that there is only one index, the selection of the
+  field <tt>F</tt>.  However, in this example, <tt>Foo</tt> is a pointer. That 
+  pointer must be indexed explicitly in LLVM. C, on the other hand, indices
+  through it transparently.  To arrive at the same address location as the C 
+  code, you would provide the GEP instruction with two index operands. The 
+  first operand indexes through the pointer; the second operand indexes the 
+  field <tt>F</tt> of the structure, just as if you wrote:</p>
+
+<div class="doc_code">
+<pre>
+X = &Foo[0].F;
+</pre>
+</div>
+
+  <p>Sometimes this question gets rephrased as:</p>
+  <blockquote><p><i>Why is it okay to index through the first pointer, but 
+      subsequent pointers won't be dereferenced?</i></p></blockquote> 
+  <p>The answer is simply because memory does not have to be accessed to 
+  perform the computation. The first operand to the GEP instruction must be a 
+  value of a pointer type. The value of the pointer is provided directly to 
+  the GEP instruction as an operand without any need for accessing memory. It 
+  must, therefore be indexed and requires an index operand. Consider this 
+  example:</p>
+
+<div class="doc_code">
+<pre>
+struct munger_struct {
+  int f1;
+  int f2;
+};
+void munge(struct munger_struct *P) {
+  P[0].f1 = P[1].f1 + P[2].f2;
+}
+...
+munger_struct Array[3];
+...
+munge(Array);
+</pre>
+</div>
+
+  <p>In this "C" example, the front end compiler (llvm-gcc) will generate three
+  GEP instructions for the three indices through "P" in the assignment
+  statement.  The function argument <tt>P</tt> will be the first operand of each
+  of these GEP instructions.  The second operand indexes through that pointer.
+  The third operand will be the field offset into the 
+  <tt>struct munger_struct</tt> type,  for either the <tt>f1</tt> or 
+  <tt>f2</tt> field. So, in LLVM assembly the <tt>munge</tt> function looks 
+  like:</p>
+
+<div class="doc_code">
+<pre>
+void %munge(%struct.munger_struct* %P) {
+entry:
+  %tmp = getelementptr %struct.munger_struct* %P, i32 1, i32 0
+  %tmp = load i32* %tmp
+  %tmp6 = getelementptr %struct.munger_struct* %P, i32 2, i32 1
+  %tmp7 = load i32* %tmp6
+  %tmp8 = add i32 %tmp7, %tmp
+  %tmp9 = getelementptr %struct.munger_struct* %P, i32 0, i32 0
+  store i32 %tmp8, i32* %tmp9
+  ret void
+}
+</pre>
+</div>
+
+  <p>In each case the first operand is the pointer through which the GEP
+  instruction starts. The same is true whether the first operand is an
+  argument, allocated memory, or a global variable. </p>
+  <p>To make this clear, let's consider a more obtuse example:</p>
+
+<div class="doc_code">
+<pre>
+%MyVar = uninitialized global i32
+...
+%idx1 = getelementptr i32* %MyVar, i64 0
+%idx2 = getelementptr i32* %MyVar, i64 1
+%idx3 = getelementptr i32* %MyVar, i64 2
+</pre>
+</div>
+
+  <p>These GEP instructions are simply making address computations from the 
+  base address of <tt>MyVar</tt>.  They compute, as follows (using C syntax):
+  </p>
+
+<div class="doc_code">
+<pre>
+idx1 = (char*) &MyVar + 0
+idx2 = (char*) &MyVar + 4
+idx3 = (char*) &MyVar + 8
+</pre>
+</div>
+
+  <p>Since the type <tt>i32</tt> is known to be four bytes long, the indices 
+  0, 1 and 2 translate into memory offsets of 0, 4, and 8, respectively. No 
+  memory is accessed to make these computations because the address of 
+  <tt>%MyVar</tt> is passed directly to the GEP instructions.</p>
+  <p>The obtuse part of this example is in the cases of <tt>%idx2</tt> and 
+  <tt>%idx3</tt>. They result in the computation of addresses that point to
+  memory past the end of the <tt>%MyVar</tt> global, which is only one
+  <tt>i32</tt> long, not three <tt>i32</tt>s long.  While this is legal in LLVM,
+  it is inadvisable because any load or store with the pointer that results 
+  from these GEP instructions would produce undefined results.</p>
+</div>
+
+<!-- *********************************************************************** -->
+<h3>
+  <a name="extra_index">Why is the extra 0 index required?</a>
+</h3>
+<!-- *********************************************************************** -->
+<div>
+  <p>Quick answer: there are no superfluous indices.</p>
+  <p>This question arises most often when the GEP instruction is applied to a
+  global variable which is always a pointer type. For example, consider
+  this:</p>
+
+<div class="doc_code">
+<pre>
+%MyStruct = uninitialized global { float*, i32 }
+...
+%idx = getelementptr { float*, i32 }* %MyStruct, i64 0, i32 1
+</pre>
+</div>
+
+  <p>The GEP above yields an <tt>i32*</tt> by indexing the <tt>i32</tt> typed 
+  field of the structure <tt>%MyStruct</tt>. When people first look at it, they 
+  wonder why the <tt>i64 0</tt> index is needed. However, a closer inspection 
+  of how globals and GEPs work reveals the need. Becoming aware of the following
+  facts will dispel the confusion:</p>
+  <ol>
+    <li>The type of <tt>%MyStruct</tt> is <i>not</i> <tt>{ float*, i32 }</tt> 
+    but rather <tt>{ float*, i32 }*</tt>. That is, <tt>%MyStruct</tt> is a 
+    pointer to a structure containing a pointer to a <tt>float</tt> and an 
+    <tt>i32</tt>.</li>
+    <li>Point #1 is evidenced by noticing the type of the first operand of 
+    the GEP instruction (<tt>%MyStruct</tt>) which is 
+    <tt>{ float*, i32 }*</tt>.</li>
+    <li>The first index, <tt>i64 0</tt> is required to step over the global
+    variable <tt>%MyStruct</tt>.  Since the first argument to the GEP
+    instruction must always be a value of pointer type, the first index 
+    steps through that pointer. A value of 0 means 0 elements offset from that
+    pointer.</li>
+    <li>The second index, <tt>i32 1</tt> selects the second field of the
+    structure (the <tt>i32</tt>). </li>
+  </ol>
+</div>
+
+<!-- *********************************************************************** -->
+<h3>
+  <a name="deref">What is dereferenced by GEP?</a>
+</h3>
+<div>
+  <p>Quick answer: nothing.</p> 
+  <p>The GetElementPtr instruction dereferences nothing. That is, it doesn't
+  access memory in any way. That's what the Load and Store instructions are for.
+  GEP is only involved in the computation of addresses. For example, consider 
+  this:</p>
+
+<div class="doc_code">
+<pre>
+%MyVar = uninitialized global { [40 x i32 ]* }
+...
+%idx = getelementptr { [40 x i32]* }* %MyVar, i64 0, i32 0, i64 0, i64 17
+</pre>
+</div>
+
+  <p>In this example, we have a global variable, <tt>%MyVar</tt> that is a
+  pointer to a structure containing a pointer to an array of 40 ints. The 
+  GEP instruction seems to be accessing the 18th integer of the structure's
+  array of ints. However, this is actually an illegal GEP instruction. It 
+  won't compile. The reason is that the pointer in the structure <i>must</i>
+  be dereferenced in order to index into the array of 40 ints. Since the 
+  GEP instruction never accesses memory, it is illegal.</p>
+  <p>In order to access the 18th integer in the array, you would need to do the
+  following:</p>
+
+<div class="doc_code">
+<pre>
+%idx = getelementptr { [40 x i32]* }* %, i64 0, i32 0
+%arr = load [40 x i32]** %idx
+%idx = getelementptr [40 x i32]* %arr, i64 0, i64 17
+</pre>
+</div>
+
+  <p>In this case, we have to load the pointer in the structure with a load
+  instruction before we can index into the array. If the example was changed 
+  to:</p>
+
+<div class="doc_code">
+<pre>
+%MyVar = uninitialized global { [40 x i32 ] }
+...
+%idx = getelementptr { [40 x i32] }*, i64 0, i32 0, i64 17
+</pre>
+</div>
+
+  <p>then everything works fine. In this case, the structure does not contain a
+  pointer and the GEP instruction can index through the global variable,
+  into the first field of the structure and access the 18th <tt>i32</tt> in the 
+  array there.</p>
+</div>
+
+<!-- *********************************************************************** -->
+<h3>
+  <a name="lead0">Why don't GEP x,0,0,1 and GEP x,1 alias?</a>
+</h3>
+<div>
+  <p>Quick Answer: They compute different address locations.</p>
+  <p>If you look at the first indices in these GEP
+  instructions you find that they are different (0 and 1), therefore the address
+  computation diverges with that index. Consider this example:</p>
+
+<div class="doc_code">
+<pre>
+%MyVar = global { [10 x i32 ] }
+%idx1 = getelementptr { [10 x i32 ] }* %MyVar, i64 0, i32 0, i64 1
+%idx2 = getelementptr { [10 x i32 ] }* %MyVar, i64 1
+</pre>
+</div>
+
+  <p>In this example, <tt>idx1</tt> computes the address of the second integer
+  in the array that is in the structure in <tt>%MyVar</tt>, that is
+  <tt>MyVar+4</tt>. The type of <tt>idx1</tt> is <tt>i32*</tt>. However,
+  <tt>idx2</tt> computes the address of <i>the next</i> structure after
+  <tt>%MyVar</tt>. The type of <tt>idx2</tt> is <tt>{ [10 x i32] }*</tt> and its
+  value is equivalent to <tt>MyVar + 40</tt> because it indexes past the ten
+  4-byte integers in <tt>MyVar</tt>. Obviously, in such a situation, the
+  pointers don't alias.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h3>
+  <a name="trail0">Why do GEP x,1,0,0 and GEP x,1 alias?</a>
+</h3>
+<div>
+  <p>Quick Answer: They compute the same address location.</p>
+  <p>These two GEP instructions will compute the same address because indexing
+  through the 0th element does not change the address. However, it does change
+  the type. Consider this example:</p>
+
+<div class="doc_code">
+<pre>
+%MyVar = global { [10 x i32 ] }
+%idx1 = getelementptr { [10 x i32 ] }* %MyVar, i64 1, i32 0, i64 0
+%idx2 = getelementptr { [10 x i32 ] }* %MyVar, i64 1
+</pre>
+</div>
+
+  <p>In this example, the value of <tt>%idx1</tt> is <tt>%MyVar+40</tt> and
+  its type is <tt>i32*</tt>. The value of <tt>%idx2</tt> is also 
+  <tt>MyVar+40</tt> but its type is <tt>{ [10 x i32] }*</tt>.</p>
+</div>
+
+<!-- *********************************************************************** -->
+
+<h3>
+  <a name="vectors">Can GEP index into vector elements?</a>
+</h3>
+<div>
+  <p>This hasn't always been forcefully disallowed, though it's not recommended.
+     It leads to awkward special cases in the optimizers, and fundamental
+     inconsistency in the IR. In the future, it will probably be outright
+     disallowed.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<h3>
+  <a name="addrspace">What effect do address spaces have on GEPs?</a>
+</h3>
+<div>
+   <p>None, except that the address space qualifier on the first operand pointer
+      type always matches the address space qualifier on the result type.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<h3>
+  <a name="int">
+    How is GEP different from ptrtoint, arithmetic, and inttoptr?
+  </a>
+</h3>
+<div>
+  <p>It's very similar; there are only subtle differences.</p>
+
+  <p>With ptrtoint, you have to pick an integer type. One approach is to pick i64;
+     this is safe on everything LLVM supports (LLVM internally assumes pointers
+     are never wider than 64 bits in many places), and the optimizer will actually
+     narrow the i64 arithmetic down to the actual pointer size on targets which
+     don't support 64-bit arithmetic in most cases. However, there are some cases
+     where it doesn't do this. With GEP you can avoid this problem.
+
+  <p>Also, GEP carries additional pointer aliasing rules. It's invalid to take a
+     GEP from one object, address into a different separately allocated
+     object, and dereference it. IR producers (front-ends) must follow this rule,
+     and consumers (optimizers, specifically alias analysis) benefit from being
+     able to rely on it. See the <a href="#rules">Rules</a> section for more
+     information.</p>
+
+  <p>And, GEP is more concise in common cases.</p>
+
+  <p>However, for the underlying integer computation implied, there
+     is no difference.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<h3>
+  <a name="be">
+    I'm writing a backend for a target which needs custom lowering for GEP.
+    How do I do this?
+  </a>
+</h3>
+<div>
+  <p>You don't. The integer computation implied by a GEP is target-independent.
+     Typically what you'll need to do is make your backend pattern-match
+     expressions trees involving ADD, MUL, etc., which are what GEP is lowered
+     into. This has the advantage of letting your code work correctly in more
+     cases.</p>
+
+  <p>GEP does use target-dependent parameters for the size and layout of data
+     types, which targets can customize.</p>
+
+  <p>If you require support for addressing units which are not 8 bits, you'll
+     need to fix a lot of code in the backend, with GEP lowering being only a
+     small piece of the overall picture.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<h3>
+  <a name="vla">How does VLA addressing work with GEPs?</a>
+</h3>
+<div>
+  <p>GEPs don't natively support VLAs. LLVM's type system is entirely static,
+     and GEP address computations are guided by an LLVM type.</p>
+
+  <p>VLA indices can be implemented as linearized indices. For example, an
+     expression like X[a][b][c], must be effectively lowered into a form
+     like X[a*m+b*n+c], so that it appears to the GEP as a single-dimensional
+     array reference.</p>
+
+  <p>This means if you want to write an analysis which understands array
+     indices and you want to support VLAs, your code will have to be
+     prepared to reverse-engineer the linearization. One way to solve this
+     problem is to use the ScalarEvolution library, which always presents
+     VLA and non-VLA indexing in the same manner.</p>
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="rules">Rules</a></h2>
+<!-- *********************************************************************** -->
+<div>
+<!-- *********************************************************************** -->
+
+<h3>
+  <a name="bounds">What happens if an array index is out of bounds?</a>
+</h3>
+<div>
+  <p>There are two senses in which an array index can be out of bounds.</p>
+
+  <p>First, there's the array type which comes from the (static) type of
+     the first operand to the GEP. Indices greater than the number of elements
+     in the corresponding static array type are valid. There is no problem with
+     out of bounds indices in this sense. Indexing into an array only depends
+     on the size of the array element, not the number of elements.</p>
+     
+  <p>A common example of how this is used is arrays where the size is not known.
+     It's common to use array types with zero length to represent these. The
+     fact that the static type says there are zero elements is irrelevant; it's
+     perfectly valid to compute arbitrary element indices, as the computation
+     only depends on the size of the array element, not the number of
+     elements. Note that zero-sized arrays are not a special case here.</p>
+
+  <p>This sense is unconnected with <tt>inbounds</tt> keyword. The
+     <tt>inbounds</tt> keyword is designed to describe low-level pointer
+     arithmetic overflow conditions, rather than high-level array
+     indexing rules.
+
+  <p>Analysis passes which wish to understand array indexing should not
+     assume that the static array type bounds are respected.</p>
+
+  <p>The second sense of being out of bounds is computing an address that's
+     beyond the actual underlying allocated object.</p>
+
+  <p>With the <tt>inbounds</tt> keyword, the result value of the GEP is
+     undefined if the address is outside the actual underlying allocated
+     object and not the address one-past-the-end.</p>
+
+  <p>Without the <tt>inbounds</tt> keyword, there are no restrictions
+     on computing out-of-bounds addresses. Obviously, performing a load or
+     a store requires an address of allocated and sufficiently aligned
+     memory. But the GEP itself is only concerned with computing addresses.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h3>
+  <a name="negative">Can array indices be negative?</a>
+</h3>
+<div>
+  <p>Yes. This is basically a special case of array indices being out
+     of bounds.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h3>
+  <a name="compare">Can I compare two values computed with GEPs?</a>
+</h3>
+<div>
+  <p>Yes. If both addresses are within the same allocated object, or 
+     one-past-the-end, you'll get the comparison result you expect. If either
+     is outside of it, integer arithmetic wrapping may occur, so the
+     comparison may not be meaningful.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h3>
+  <a name="types">
+    Can I do GEP with a different pointer type than the type of
+    the underlying object?
+  </a>
+</h3>
+<div>
+  <p>Yes. There are no restrictions on bitcasting a pointer value to an arbitrary
+     pointer type. The types in a GEP serve only to define the parameters for the
+     underlying integer computation. They need not correspond with the actual
+     type of the underlying object.</p>
+
+  <p>Furthermore, loads and stores don't have to use the same types as the type
+     of the underlying object. Types in this context serve only to specify
+     memory size and alignment. Beyond that there are merely a hint to the
+     optimizer indicating how the value will likely be used.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h3>
+  <a name="null">
+    Can I cast an object's address to integer and add it to null?
+  </a>
+</h3>
+<div>
+  <p>You can compute an address that way, but if you use GEP to do the add,
+     you can't use that pointer to actually access the object, unless the
+     object is managed outside of LLVM.</p>
+
+  <p>The underlying integer computation is sufficiently defined; null has a
+     defined value -- zero -- and you can add whatever value you want to it.</p>
+
+  <p>However, it's invalid to access (load from or store to) an LLVM-aware
+     object with such a pointer. This includes GlobalVariables, Allocas, and
+     objects pointed to by noalias pointers.</p>
+
+  <p>If you really need this functionality, you can do the arithmetic with
+     explicit integer instructions, and use inttoptr to convert the result to
+     an address. Most of GEP's special aliasing rules do not apply to pointers
+     computed from ptrtoint, arithmetic, and inttoptr sequences.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h3>
+  <a name="ptrdiff">
+    Can I compute the distance between two objects, and add
+    that value to one address to compute the other address?
+  </a>
+</h3>
+<div>
+  <p>As with arithmetic on null, You can use GEP to compute an address that
+     way, but you can't use that pointer to actually access the object if you
+     do, unless the object is managed outside of LLVM.</p>
+
+  <p>Also as above, ptrtoint and inttoptr provide an alternative way to do this
+     which do not have this restriction.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h3>
+  <a name="tbaa">Can I do type-based alias analysis on LLVM IR?</a>
+</h3>
+<div>
+  <p>You can't do type-based alias analysis using LLVM's built-in type system,
+     because LLVM has no restrictions on mixing types in addressing, loads or
+     stores.</p>
+
+  <p>LLVM's type-based alias analysis pass uses metadata to describe a different
+     type system (such as the C type system), and performs type-based aliasing
+     on top of that.  Further details are in the
+     <a href="LangRef.html#tbaa">language reference</a>.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<h3>
+  <a name="overflow">What happens if a GEP computation overflows?</a>
+</h3>
+<div>
+   <p>If the GEP lacks the <tt>inbounds</tt> keyword, the value is the result
+      from evaluating the implied two's complement integer computation. However,
+      since there's no guarantee of where an object will be allocated in the
+      address space, such values have limited meaning.</p>
+
+  <p>If the GEP has the <tt>inbounds</tt> keyword, the result value is
+     undefined (a "<a href="LangRef.html#trapvalues">trap value</a>") if the GEP
+     overflows (i.e. wraps around the end of the address space).</p>
+  
+  <p>As such, there are some ramifications of this for inbounds GEPs: scales
+     implied by array/vector/pointer indices are always known to be "nsw" since
+     they are signed values that are scaled by the element size.  These values
+     are also allowed to be negative (e.g. "gep i32 *%P, i32 -1") but the
+     pointer itself is logically treated as an unsigned value.  This means that
+     GEPs have an asymmetric relation between the pointer base (which is treated
+     as unsigned) and the offset applied to it (which is treated as signed). The
+     result of the additions within the offset calculation cannot have signed
+     overflow, but when applied to the base pointer, there can be signed
+     overflow.
+  </p>
+  
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<h3>
+  <a name="check">
+    How can I tell if my front-end is following the rules?
+  </a>
+</h3>
+<div>
+   <p>There is currently no checker for the getelementptr rules. Currently,
+      the only way to do this is to manually check each place in your front-end
+      where GetElementPtr operators are created.</p>
+
+   <p>It's not possible to write a checker which could find all rule
+      violations statically. It would be possible to write a checker which
+      works by instrumenting the code with dynamic checks though. Alternatively,
+      it would be possible to write a static checker which catches a subset of
+      possible problems. However, no such checker exists today.</p>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="rationale">Rationale</a></h2>
+<!-- *********************************************************************** -->
+<div>
+<!-- *********************************************************************** -->
+
+<h3>
+  <a name="goals">Why is GEP designed this way?</a>
+</h3>
+<div>
+   <p>The design of GEP has the following goals, in rough unofficial
+      order of priority:</p>
+   <ul>
+     <li>Support C, C-like languages, and languages which can be
+         conceptually lowered into C (this covers a lot).</li>
+     <li>Support optimizations such as those that are common in
+         C compilers. In particular, GEP is a cornerstone of LLVM's
+         <a href="LangRef.html#pointeraliasing">pointer aliasing model</a>.</li>
+     <li>Provide a consistent method for computing addresses so that
+         address computations don't need to be a part of load and
+         store instructions in the IR.</li>
+     <li>Support non-C-like languages, to the extent that it doesn't
+         interfere with other goals.</li>
+     <li>Minimize target-specific information in the IR.</li>
+   </ul>
+</div>
+
+<!-- *********************************************************************** -->
+<h3>
+  <a name="i32">Why do struct member indices always use i32?</a>
+</h3>
+<div>
+  <p>The specific type i32 is probably just a historical artifact, however it's
+     wide enough for all practical purposes, so there's been no need to change it.
+     It doesn't necessarily imply i32 address arithmetic; it's just an identifier
+     which identifies a field in a struct. Requiring that all struct indices be
+     the same reduces the range of possibilities for cases where two GEPs are
+     effectively the same but have distinct operand types.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<h3>
+  <a name="uglygep">What's an uglygep?</a>
+</h3>
+<div>
+  <p>Some LLVM optimizers operate on GEPs by internally lowering them into
+     more primitive integer expressions, which allows them to be combined
+     with other integer expressions and/or split into multiple separate
+     integer expressions. If they've made non-trivial changes, translating
+     back into LLVM IR can involve reverse-engineering the structure of
+     the addressing in order to fit it into the static type of the original
+     first operand. It isn't always possibly to fully reconstruct this
+     structure; sometimes the underlying addressing doesn't correspond with
+     the static type at all. In such cases the optimizer instead will emit
+     a GEP with the base pointer casted to a simple address-unit pointer,
+     using the name "uglygep". This isn't pretty, but it's just as
+     valid, and it's sufficient to preserve the pointer aliasing guarantees
+     that GEP provides.</p>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="summary">Summary</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+  <p>In summary, here's some things to always remember about the GetElementPtr
+  instruction:</p>
+  <ol>
+    <li>The GEP instruction never accesses memory, it only provides pointer
+    computations.</li>
+    <li>The first operand to the GEP instruction is always a pointer and it must
+    be indexed.</li>
+    <li>There are no superfluous indices for the GEP instruction.</li>
+    <li>Trailing zero indices are superfluous for pointer aliasing, but not for
+    the types of the pointers.</li>
+    <li>Leading zero indices are not superfluous for pointer aliasing nor the
+    types of the pointers.</li>
+  </ol>
+</div>
+
+<!-- *********************************************************************** -->
+
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date: 2011-10-31 06:04:26 -0700 (Mon, 31 Oct 2011) $
+</address>
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/GettingStarted.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/GettingStarted.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/GettingStarted.html (added)
+++ www-releases/trunk/3.1/docs/GettingStarted.html Tue May 22 14:32:29 2012
@@ -0,0 +1,1763 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>Getting Started with LLVM System</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+<body>
+
+<h1>
+  Getting Started with the LLVM System  
+</h1>
+
+<ul>
+  <li><a href="#overview">Overview</a>
+  <li><a href="#quickstart">Getting Started Quickly (A Summary)</a>
+  <li><a href="#requirements">Requirements</a>
+    <ol>
+      <li><a href="#hardware">Hardware</a></li>
+      <li><a href="#software">Software</a></li>
+      <li><a href="#brokengcc">Broken versions of GCC and other tools</a></li>
+    </ol></li>
+
+  <li><a href="#starting">Getting Started with LLVM</a>
+    <ol>
+      <li><a href="#terminology">Terminology and Notation</a></li>
+      <li><a href="#environment">Setting Up Your Environment</a></li>
+      <li><a href="#unpack">Unpacking the LLVM Archives</a></li>
+      <li><a href="#checkout">Checkout LLVM from Subversion</a></li>
+      <li><a href="#git_mirror">LLVM GIT mirror</a></li>
+      <li><a href="#config">Local LLVM Configuration</a></li>
+      <li><a href="#compile">Compiling the LLVM Suite Source Code</a></li>
+      <li><a href="#cross-compile">Cross-Compiling LLVM</a></li>
+      <li><a href="#objfiles">The Location of LLVM Object Files</a></li>
+      <li><a href="#optionalconfig">Optional Configuration Items</a></li>
+    </ol></li>
+
+  <li><a href="#layout">Program layout</a>
+    <ol>
+      <li><a href="#examples"><tt>llvm/examples</tt></a></li>
+      <li><a href="#include"><tt>llvm/include</tt></a></li>
+      <li><a href="#lib"><tt>llvm/lib</tt></a></li>
+      <li><a href="#projects"><tt>llvm/projects</tt></a></li>
+      <li><a href="#runtime"><tt>llvm/runtime</tt></a></li>
+      <li><a href="#test"><tt>llvm/test</tt></a></li>
+      <li><a href="#test-suite"><tt>test-suite</tt></a></li>
+      <li><a href="#tools"><tt>llvm/tools</tt></a></li>
+      <li><a href="#utils"><tt>llvm/utils</tt></a></li>
+    </ol></li>
+
+  <li><a href="#tutorial">An Example Using the LLVM Tool Chain</a>
+      <ol>
+         <li><a href="#tutorial4">Example with Clang</a></li>
+      </ol>
+  <li><a href="#problems">Common Problems</a>
+  <li><a href="#links">Links</a>
+</ul>
+
+<div class="doc_author">
+  <p>Written by: 
+    <a href="mailto:criswell at uiuc.edu">John Criswell</a>, 
+    <a href="mailto:sabre at nondot.org">Chris Lattner</a>,
+    <a href="http://misha.brukman.net/">Misha Brukman</a>, 
+    <a href="http://www.cs.uiuc.edu/~vadve">Vikram Adve</a>, and
+    <a href="mailto:gshi1 at uiuc.edu">Guochun Shi</a>.
+  </p>
+</div>
+
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="overview">Overview</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>Welcome to LLVM! In order to get started, you first need to know some
+basic information.</p>
+
+<p>First, LLVM comes in three pieces. The first piece is the LLVM
+suite. This contains all of the tools, libraries, and header files
+needed to use LLVM.  It contains an assembler, disassembler, bitcode
+analyzer and bitcode optimizer.  It also contains basic regression tests that
+can be used to test the LLVM tools and the Clang front end.</p>
+
+<p>The second piece is the <a href="http://clang.llvm.org/">Clang</a> front end.
+This component compiles C, C++, Objective C, and Objective C++ code into LLVM
+bitcode. Once compiled into LLVM bitcode, a program can be manipulated with the
+LLVM tools from the LLVM suite.
+</p>
+
+<p>
+There is a third, optional piece called Test Suite.  It is a suite of programs
+with a testing harness that can be used to further test LLVM's functionality
+and performance.
+</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="quickstart">Getting Started Quickly (A Summary)</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>The LLVM Getting Started documentation may be out of date.  So, the Clang 
+<a href="http://clang.llvm.org/get_started.html">Getting Started</a> page might 
+also be a good place to start.</p>
+
+<p>Here's the short story for getting up and running quickly with LLVM:</p>
+
+<ol>
+  <li>Read the documentation.</li>
+  <li>Read the documentation.</li>
+  <li>Remember that you were warned twice about reading the documentation.</li>
+
+  <li>Checkout LLVM:
+  <ul>
+    <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
+    <li><tt>svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</tt></li>
+  </ul>
+  </li>
+
+  <li>Checkout Clang:
+  <ul>
+    <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
+    <li><tt>cd llvm/tools</tt>
+    <li><tt>svn co http://llvm.org/svn/llvm-project/cfe/trunk clang</tt></li>
+  </ul>
+  </li>
+
+  <li>Checkout Compiler-RT:
+  <ul>
+    <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
+    <li><tt>cd llvm/projects</tt>
+    <li><tt>svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk
+        compiler-rt</tt></li>
+  </ul>
+  </li>
+
+  <li>Get the Test Suite Source Code <b>[Optional]</b>
+  <ul>
+    <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
+    <li><tt>cd llvm/projects</tt>
+    <li><tt>svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite</tt></li>
+  </ul>
+  </li>
+
+  <li>Configure and build LLVM and Clang:
+  <ul>
+    <li><tt>cd <i>where-you-want-to-build-llvm</i></tt></li>
+    <li><tt>mkdir build</tt> (for building without polluting the source dir)</li>
+    <li><tt>cd build</tt></li>
+    <li><tt>../llvm/configure [options]</tt>
+    <br>Some common options:
+
+      <ul>
+        <li><tt>--prefix=<i>directory</i></tt> -
+        Specify for <i>directory</i> the full pathname of where you
+        want the LLVM tools and libraries to be installed (default
+        <tt>/usr/local</tt>).</li>
+      </ul>
+
+      <ul>
+        <li><tt>--enable-optimized</tt> -
+        Compile with optimizations enabled (default is NO).</li>
+      </ul>
+
+      <ul>
+        <li><tt>--enable-assertions</tt> -
+        Compile with assertion checks enabled (default is YES).</li>
+      </ul>
+   </li>
+    <li><tt>make [-j]</tt> - The -j specifies the number of jobs (commands) to 
+    run simultaneously.  This builds both LLVM and Clang for Debug+Asserts mode.
+    The --enabled-optimized configure option is used to specify a Release build.</li>
+    <li><tt>make check-all</tt> -
+    This run the regression tests to ensure everything is in working order.</li>
+    <li><tt>make update</tt> -
+    This command is used to update all the svn repositories at once, rather then
+    having to <tt>cd</tt> into the individual repositories and running
+    <tt>svn update</tt>.</li>
+    <li>It is also possible to use CMake instead of the makefiles. With CMake
+    it is also possible to generate project files for several IDEs: Eclipse
+    CDT4, CodeBlocks, Qt-Creator (use the CodeBlocks generator), KDevelop3.</li>
+    <li>If you get an "internal compiler error (ICE)" or test failures, see 
+        <a href="#brokengcc">below</a>.</li>
+
+  </ul>
+  </li>
+
+</ol>
+
+<p>Consult the <a href="#starting">Getting Started with LLVM</a> section for
+detailed information on configuring and compiling LLVM.  See <a
+href="#environment">Setting Up Your Environment</a> for tips that simplify
+working with the Clang front end and LLVM tools.  Go to <a href="#layout">Program
+Layout</a> to learn about the layout of the source code tree.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="requirements">Requirements</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>Before you begin to use the LLVM system, review the requirements given below.
+This may save you some trouble by knowing ahead of time what hardware and
+software you will need.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="hardware">Hardware</a>
+</h3>
+
+<div>
+
+<p>LLVM is known to work on the following platforms:</p>
+
+<table cellpadding="3" summary="Known LLVM platforms">
+<tr>
+  <th>OS</th>
+  <th>Arch</th>
+  <th>Compilers</th>
+</tr>
+<tr>
+  <td>AuroraUX</td>
+  <td>x86<sup><a href="#pf_1">1</a></sup></td>
+  <td>GCC</td>
+</tr>
+<tr>
+  <td>Linux</td>
+  <td>x86<sup><a href="#pf_1">1</a></sup></td>
+  <td>GCC</td>
+</tr>
+<tr>
+  <td>Linux</td>
+  <td>amd64</td>
+  <td>GCC</td>
+</tr>
+<tr>
+  <td>Solaris</td>
+  <td>V9 (Ultrasparc)</td>
+  <td>GCC</td>
+</tr>
+<tr>
+  <td>FreeBSD</td>
+  <td>x86<sup><a href="#pf_1">1</a></sup></td>
+  <td>GCC</td>
+</tr>
+<tr>
+  <td>FreeBSD</td>
+  <td>amd64</td>
+  <td>GCC</td>
+</tr>
+<tr>
+  <td>MacOS X<sup><a href="#pf_2">2</a></sup></td>
+  <td>PowerPC</td>
+  <td>GCC</td>
+</tr>
+<tr>
+  <td>MacOS X<sup><a href="#pf_2">2</a>,<a href="#pf_9">9</a></sup></td>
+  <td>x86</td>
+  <td>GCC</td>
+</tr>
+<tr>
+  <td>Cygwin/Win32</td>
+  <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_8">8</a>,
+     <a href="#pf_11">11</a></sup></td>
+  <td>GCC 3.4.X, binutils 2.20</td>
+</tr>
+<tr>
+  <td>MinGW/Win32</td>
+  <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_6">6</a>,
+     <a href="#pf_8">8</a>, <a href="#pf_10">10</a>,
+     <a href="#pf_11">11</a></sup></td>
+  <td>GCC 3.4.X, binutils 2.20</td>
+</tr>
+</table>
+
+<p>LLVM has partial support for the following platforms:</p>
+
+<table summary="LLVM partial platform support">
+<tr>
+  <th>OS</th>
+  <th>Arch</th>
+  <th>Compilers</th>
+</tr>
+<tr>
+  <td>Windows</td>
+  <td>x86<sup><a href="#pf_1">1</a></sup></td>
+  <td>Visual Studio 2008 or higher<sup><a href="#pf_4">4</a>,<a href="#pf_5">5</a></sup></td>
+<tr>
+  <td>AIX<sup><a href="#pf_3">3</a>,<a href="#pf_4">4</a></sup></td>
+  <td>PowerPC</td>
+  <td>GCC</td>
+</tr>
+<tr>
+  <td>Linux<sup><a href="#pf_3">3</a>,<a href="#pf_5">5</a></sup></td>
+  <td>PowerPC</td>
+  <td>GCC</td>
+</tr>
+
+<tr>
+  <td>Linux<sup><a href="#pf_7">7</a></sup></td>
+  <td>Alpha</td>
+  <td>GCC</td>
+</tr>
+<tr>
+  <td>Linux<sup><a href="#pf_7">7</a></sup></td>
+  <td>Itanium (IA-64)</td>
+  <td>GCC</td>
+</tr>
+<tr>
+  <td>HP-UX<sup><a href="#pf_7">7</a></sup></td>
+  <td>Itanium (IA-64)</td>
+  <td>HP aCC</td>
+</tr>
+<tr>
+  <td>Windows x64</td>
+  <td>x86-64</td>
+  <td>mingw-w64's GCC-4.5.x<sup><a href="#pf_12">12</a></sup></td>
+</tr>
+</table>
+
+<p><b>Notes:</b></p>
+
+<div class="doc_notes">
+<ol>
+<li><a name="pf_1">Code generation supported for Pentium processors and
+up</a></li>
+<li><a name="pf_2">Code generation supported for 32-bit ABI only</a></li>
+<li><a name="pf_3">No native code generation</a></li>
+<li><a name="pf_4">Build is not complete: one or more tools do not link or function</a></li>
+<li><a name="pf_5">The GCC-based C/C++ frontend does not build</a></li>
+<li><a name="pf_6">The port is done using the MSYS shell.</a></li>
+<li><a name="pf_7">Native code generation exists but is not complete.</a></li>
+<li><a name="pf_8">Binutils 2.20 or later is required to build the assembler
+    generated by LLVM properly.</a></li>
+<li><a name="pf_9">XCode 2.5 and gcc 4.0.1</a> (Apple Build 5370) will trip
+    internal LLVM assert messages when compiled for Release at optimization
+    levels greater than 0 (i.e., <i>"-O1"</i> and higher).
+    Add <i>OPTIMIZE_OPTION="-O0"</i> to the build command line
+    if compiling for LLVM Release or bootstrapping the LLVM toolchain.</li>
+<li><a name="pf_10">For MSYS/MinGW on Windows, be sure to install the MSYS
+    version of the perl package, and be sure it appears in your path
+    before any Windows-based versions such as Strawberry Perl and
+    ActivePerl, as these have Windows-specifics that will cause the
+    build to fail.</a></li>
+<li><a name="pf_11">To use LLVM modules on Win32-based system,
+    you may configure LLVM with <i>"--enable-shared"</i>.</a></li>
+<li><a name="pf_12">To compile SPU backend, you need to add
+    <tt>"LDFLAGS=-Wl,--stack,16777216"</tt> to configure.</a></li>
+</ol>
+</div>
+
+<p>Note that you will need about 1-3 GB of space for a full LLVM build in Debug
+mode, depending on the system (it is so large because of all the debugging
+information and the fact that the libraries are statically linked into multiple
+tools).  If you do not need many of the tools and you are space-conscious, you
+can pass <tt>ONLY_TOOLS="tools you need"</tt> to make.  The Release build
+requires considerably less space.</p>
+
+<p>The LLVM suite <i>may</i> compile on other platforms, but it is not
+guaranteed to do so.  If compilation is successful, the LLVM utilities should be
+able to assemble, disassemble, analyze, and optimize LLVM bitcode.  Code
+generation should work as well, although the generated native code may not work
+on your platform.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="software">Software</a>
+</h3>
+<div>
+  <p>Compiling LLVM requires that you have several software packages 
+  installed. The table below lists those required packages. The Package column
+  is the usual name for the software package that LLVM depends on. The Version
+  column provides "known to work" versions of the package. The Notes column
+  describes how LLVM uses the package and provides other details.</p>
+  <table summary="Packages required to compile LLVM">
+    <tr><th>Package</th><th>Version</th><th>Notes</th></tr>
+
+    <tr>
+      <td><a href="http://savannah.gnu.org/projects/make">GNU Make</a></td>
+      <td>3.79, 3.79.1</td>
+      <td>Makefile/build processor</td>
+    </tr>
+
+    <tr>
+      <td><a href="http://gcc.gnu.org/">GCC</a></td>
+      <td>3.4.2</td>
+      <td>C/C++ compiler<sup><a href="#sf1">1</a></sup></td>
+    </tr>
+
+    <tr>
+      <td><a href="http://www.gnu.org/software/texinfo/">TeXinfo</a></td>
+      <td>4.5</td>
+      <td>For building the CFE</td>
+    </tr>
+
+    <tr>
+      <td><a href="http://subversion.tigris.org/project_packages.html">SVN</a></td>
+      <td>≥1.3</td>
+      <td>Subversion access to LLVM<sup><a href="#sf2">2</a></sup></td>
+    </tr>
+
+    <!-- FIXME:
+    Do we support dg?
+    Are DejaGnu and expect obsolete?
+    Shall we mention Python? -->
+
+    <tr>
+      <td><a href="http://savannah.gnu.org/projects/dejagnu">DejaGnu</a></td>
+      <td>1.4.2</td>
+      <td>Automated test suite<sup><a href="#sf3">3</a></sup></td>
+    </tr>
+
+    <tr>
+      <td><a href="http://www.tcl.tk/software/tcltk/">tcl</a></td>
+      <td>8.3, 8.4</td>
+      <td>Automated test suite<sup><a href="#sf3">3</a></sup></td>
+    </tr>
+
+    <tr>
+      <td><a href="http://expect.nist.gov/">expect</a></td>
+      <td>5.38.0</td>
+      <td>Automated test suite<sup><a href="#sf3">3</a></sup></td>
+    </tr>
+
+    <tr>
+      <td><a href="http://www.perl.com/download.csp">perl</a></td>
+      <td>≥5.6.0</td>
+      <td>Utilities</td>
+    </tr>
+
+    <tr>
+      <td><a href="http://savannah.gnu.org/projects/m4">GNU M4</a>
+      <td>1.4</td>
+      <td>Macro processor for configuration<sup><a href="#sf4">4</a></sup></td>
+    </tr>
+
+    <tr>
+      <td><a href="http://www.gnu.org/software/autoconf/">GNU Autoconf</a></td>
+      <td>2.60</td>
+      <td>Configuration script builder<sup><a href="#sf4">4</a></sup></td>
+    </tr>
+
+    <tr>
+      <td><a href="http://www.gnu.org/software/automake/">GNU Automake</a></td>
+      <td>1.9.6</td>
+      <td>aclocal macro generator<sup><a href="#sf4">4</a></sup></td>
+    </tr>
+
+    <tr>
+      <td><a href="http://savannah.gnu.org/projects/libtool">libtool</a></td>
+      <td>1.5.22</td>
+      <td>Shared library manager<sup><a href="#sf4">4</a></sup></td>
+    </tr>
+
+  </table>
+
+  <p><b>Notes:</b></p>
+  <div class="doc_notes">
+  <ol>
+    <li><a name="sf1">Only the C and C++ languages are needed so there's no
+      need to build the other languages for LLVM's purposes.</a> See 
+      <a href="#brokengcc">below</a> for specific version info.</li>
+    <li><a name="sf2">You only need Subversion if you intend to build from the 
+      latest LLVM sources. If you're working from a release distribution, you
+      don't need Subversion.</a></li>
+    <li><a name="sf3">Only needed if you want to run the automated test 
+      suite in the <tt>llvm/test</tt> directory.</a></li>
+    <li><a name="sf4">If you want to make changes to the configure scripts, 
+      you will need GNU autoconf (2.60), and consequently, GNU M4 (version 1.4 
+      or higher). You will also need automake (1.9.6). We only use aclocal 
+      from that package.</a></li>
+  </ol>
+  </div>
+  
+  <p>Additionally, your compilation host is expected to have the usual 
+  plethora of Unix utilities. Specifically:</p>
+  <ul>
+    <li><b>ar</b> - archive library builder</li>
+    <li><b>bzip2*</b> - bzip2 command for distribution generation</li>
+    <li><b>bunzip2*</b> - bunzip2 command for distribution checking</li>
+    <li><b>chmod</b> - change permissions on a file</li>
+    <li><b>cat</b> - output concatenation utility</li>
+    <li><b>cp</b> - copy files</li>
+    <li><b>date</b> - print the current date/time </li>
+    <li><b>echo</b> - print to standard output</li>
+    <li><b>egrep</b> - extended regular expression search utility</li>
+    <li><b>find</b> - find files/dirs in a file system</li>
+    <li><b>grep</b> - regular expression search utility</li>
+    <li><b>gzip*</b> - gzip command for distribution generation</li>
+    <li><b>gunzip*</b> - gunzip command for distribution checking</li>
+    <li><b>install</b> - install directories/files </li>
+    <li><b>mkdir</b> - create a directory</li>
+    <li><b>mv</b> - move (rename) files</li>
+    <li><b>ranlib</b> - symbol table builder for archive libraries</li>
+    <li><b>rm</b> - remove (delete) files and directories</li>
+    <li><b>sed</b> - stream editor for transforming output</li>
+    <li><b>sh</b> - Bourne shell for make build scripts</li>
+    <li><b>tar</b> - tape archive for distribution generation</li>
+    <li><b>test</b> - test things in file system</li>
+    <li><b>unzip*</b> - unzip command for distribution checking</li>
+    <li><b>zip*</b> - zip command for distribution generation</li>
+  </ul>
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="brokengcc">Broken versions of GCC and other tools</a>
+</h3>
+
+<div>
+
+<p>LLVM is very demanding of the host C++ compiler, and as such tends to expose
+bugs in the compiler.  In particular, several versions of GCC crash when trying
+to compile LLVM.  We routinely use GCC 4.2 (and higher) or Clang.  
+Other versions of GCC will probably work as well.  GCC versions listed
+here are known to not work.  If you are using one of these versions, please try
+to upgrade your GCC to something more recent.  If you run into a problem with a
+version of GCC not listed here, please <a href="mailto:llvmdev at cs.uiuc.edu">let
+us know</a>.  Please use the "<tt>gcc -v</tt>" command to find out which version
+of GCC you are using.
+</p>
+
+<p><b>GCC versions prior to 3.0</b>: GCC 2.96.x and before had several
+problems in the STL that effectively prevent it from compiling LLVM.
+</p>
+
+<p><b>GCC 3.2.2 and 3.2.3</b>: These versions of GCC fails to compile LLVM with
+a bogus template error.  This was fixed in later GCCs.</p>
+
+<p><b>GCC 3.3.2</b>: This version of GCC suffered from a <a 
+href="http://gcc.gnu.org/PR13392">serious bug</a> which causes it to crash in
+the "<tt>convert_from_eh_region_ranges_1</tt>" GCC function.</p>
+
+<p><b>Cygwin GCC 3.3.3</b>: The version of GCC 3.3.3 commonly shipped with 
+   Cygwin does not work.</p>
+<p><b>SuSE GCC 3.3.3</b>: The version of GCC 3.3.3 shipped with SuSE 9.1 (and 
+   possibly others) does not compile LLVM correctly (it appears that exception 
+   handling is broken in some cases).  Please download the FSF 3.3.3 or upgrade
+   to a newer version of GCC.</p>
+<p><b>GCC 3.4.0 on linux/x86 (32-bit)</b>: GCC miscompiles portions of the 
+   code generator, causing an infinite loop in the llvm-gcc build when built
+   with optimizations enabled (i.e. a release build).</p>
+<p><b>GCC 3.4.2 on linux/x86 (32-bit)</b>: GCC miscompiles portions of the 
+   code generator at -O3, as with 3.4.0.  However gcc 3.4.2 (unlike 3.4.0)
+   correctly compiles LLVM at -O2.  A work around is to build release LLVM
+   builds with "make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2 ..."</p>
+<p><b>GCC 3.4.x on X86-64/amd64</b>: GCC <a href="http://llvm.org/PR1056">
+   miscompiles portions of LLVM</a>.</p>
+<p><b>GCC 3.4.4 (CodeSourcery ARM 2005q3-2)</b>: this compiler miscompiles LLVM
+   when building with optimizations enabled.  It appears to work with 
+   "<tt>make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O1</tt>" or build a debug
+   build.</p>
+<p><b>IA-64 GCC 4.0.0</b>: The IA-64 version of GCC 4.0.0 is known to
+   miscompile LLVM.</p>
+<p><b>Apple Xcode 2.3</b>: GCC crashes when compiling LLVM at -O3 (which is the
+   default with ENABLE_OPTIMIZED=1.  To work around this, build with 
+   "ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2".</p>
+<p><b>GCC 4.1.1</b>: GCC fails to build LLVM with template concept check errors
+      compiling some files.  At the time of this writing, GCC mainline (4.2)
+      did not share the problem.</p>
+<p><b>GCC 4.1.1 on X86-64/amd64</b>: GCC <a href="http://llvm.org/PR1063">
+   miscompiles portions of LLVM</a> when compiling llvm itself into 64-bit 
+   code.  LLVM will appear to mostly work but will be buggy, e.g. failing 
+   portions of its testsuite.</p>
+<p><b>GCC 4.1.2 on OpenSUSE</b>: Seg faults during libstdc++ build and on x86_64
+platforms compiling md5.c gets a mangled constant.</p>
+<p><b>GCC 4.1.2 (20061115 (prerelease) (Debian 4.1.1-21)) on Debian</b>: Appears
+to miscompile parts of LLVM 2.4. One symptom is ValueSymbolTable complaining
+about symbols remaining in the table on destruction.</p>
+<p><b>GCC 4.1.2 20071124 (Red Hat 4.1.2-42)</b>: Suffers from the same symptoms
+as the previous one. It appears to work with ENABLE_OPTIMIZED=0 (the default).</p>
+<p><b>Cygwin GCC 4.3.2 20080827 (beta) 2</b>:
+  Users <a href="http://llvm.org/PR4145">reported</a> various problems related
+  with link errors when using this GCC version.</p>
+<p><b>Debian GCC 4.3.2 on X86</b>: Crashes building some files in LLVM 2.6.</p>
+<p><b>GCC 4.3.3 (Debian 4.3.3-10) on ARM</b>: Miscompiles parts of LLVM 2.6
+when optimizations are turned on. The symptom is an infinite loop in
+FoldingSetImpl::RemoveNode while running the code generator.</p>
+<p><b>GCC 4.3.5 and GCC 4.4.5 on ARM</b>: These can miscompile <tt>value >>
+1</tt> even at -O0. A test failure in <tt>test/Assembler/alignstack.ll</tt> is
+one symptom of the problem.
+<p><b>GNU ld 2.16.X</b>. Some 2.16.X versions of the ld linker will produce very
+long warning messages complaining that some ".gnu.linkonce.t.*" symbol was
+defined in a discarded section. You can safely ignore these messages as they are
+erroneous and the linkage is correct.  These messages disappear using ld
+2.17.</p>
+
+<p><b>GNU binutils 2.17</b>: Binutils 2.17 contains <a 
+href="http://sourceware.org/bugzilla/show_bug.cgi?id=3111">a bug</a> which
+causes huge link times (minutes instead of seconds) when building LLVM.  We
+recommend upgrading to a newer version (2.17.50.0.4 or later).</p>
+
+<p><b>GNU Binutils 2.19.1 Gold</b>: This version of Gold contained
+<a href="http://sourceware.org/bugzilla/show_bug.cgi?id=9836">a bug</a>
+which causes intermittent failures when building LLVM with position independent
+code.  The symptom is an error about cyclic dependencies.  We recommend
+upgrading to a newer version of Gold.</p>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="starting">Getting Started with LLVM</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>The remainder of this guide is meant to get you up and running with
+LLVM and to give you some basic information about the LLVM environment.</p>
+
+<p>The later sections of this guide describe the <a
+href="#layout">general layout</a> of the the LLVM source tree, a <a
+href="#tutorial">simple example</a> using the LLVM tool chain, and <a
+href="#links">links</a> to find more information about LLVM or to get
+help via e-mail.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="terminology">Terminology and Notation</a>
+</h3>
+
+<div>
+
+<p>Throughout this manual, the following names are used to denote paths
+specific to the local system and working environment.  <i>These are not
+environment variables you need to set but just strings used in the rest
+of this document below</i>.  In any of the examples below, simply replace
+each of these names with the appropriate pathname on your local system.
+All these paths are absolute:</p>
+
+<dl>
+    <dt>SRC_ROOT
+    <dd>
+    This is the top level directory of the LLVM source tree.
+    <br><br>
+
+    <dt>OBJ_ROOT
+    <dd>
+    This is the top level directory of the LLVM object tree (i.e. the
+    tree where object files and compiled programs will be placed.  It
+    can be the same as SRC_ROOT).
+    <br><br>
+
+</dl>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="environment">Setting Up Your Environment</a>
+</h3>
+
+<div>
+
+<p>
+In order to compile and use LLVM, you may need to set some environment
+variables.
+
+<dl>
+  <dt><tt>LLVM_LIB_SEARCH_PATH</tt>=<tt>/path/to/your/bitcode/libs</tt></dt>
+  <dd>[Optional] This environment variable helps LLVM linking tools find the
+  locations of your bitcode libraries. It is provided only as a
+  convenience since you can specify the paths using the -L options of the
+  tools and the C/C++ front-end will automatically use the bitcode files
+  installed in its
+  <tt>lib</tt> directory.</dd>
+</dl>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="unpack">Unpacking the LLVM Archives</a>
+</h3>
+
+<div>
+
+<p>
+If you have the LLVM distribution, you will need to unpack it before you
+can begin to compile it.  LLVM is distributed as a set of two files: the LLVM
+suite and the LLVM GCC front end compiled for your platform.  There is an
+additional test suite that is optional.  Each file is a TAR archive that is
+compressed with the gzip program.
+</p>
+
+<p>The files are as follows, with <em>x.y</em> marking the version number:
+<dl>
+  <dt><tt>llvm-x.y.tar.gz</tt></dt>
+  <dd>Source release for the LLVM libraries and tools.<br></dd>
+
+  <dt><tt>llvm-test-x.y.tar.gz</tt></dt>
+  <dd>Source release for the LLVM test-suite.</dd>
+
+  <dt><tt>llvm-gcc-4.2-x.y.source.tar.gz</tt></dt>
+  <dd>Source release of the llvm-gcc-4.2 front end.  See README.LLVM in the root
+      directory for build instructions.<br></dd>
+
+  <dt><tt>llvm-gcc-4.2-x.y-platform.tar.gz</tt></dt>
+  <dd>Binary release of the llvm-gcc-4.2 front end for a specific platform.<br></dd>
+
+</dl>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="checkout">Checkout LLVM from Subversion</a>
+</h3>
+
+<div>
+
+<p>If you have access to our Subversion repository, you can get a fresh copy of
+the entire source code.  All you need to do is check it out from Subversion as
+follows:</p>
+
+<ul>
+  <li><tt>cd <i>where-you-want-llvm-to-live</i></tt></li>
+  <li>Read-Only: <tt>svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</tt></li>
+  <li>Read-Write:<tt>svn co https://user@llvm.org/svn/llvm-project/llvm/trunk
+    llvm</tt></li>
+</ul>
+
+
+<p>This will create an '<tt>llvm</tt>' directory in the current
+directory and fully populate it with the LLVM source code, Makefiles,
+test directories, and local copies of documentation files.</p>
+
+<p>If you want to get a specific release (as opposed to the most recent
+revision), you can checkout it from the '<tt>tags</tt>' directory (instead of
+'<tt>trunk</tt>'). The following releases are located in the following
+subdirectories of the '<tt>tags</tt>' directory:</p>
+
+<ul>
+<li>Release 2.9: <b>RELEASE_29/final</b></li>
+<li>Release 2.8: <b>RELEASE_28</b></li>
+<li>Release 2.7: <b>RELEASE_27</b></li>
+<li>Release 2.6: <b>RELEASE_26</b></li>
+<li>Release 2.5: <b>RELEASE_25</b></li>
+<li>Release 2.4: <b>RELEASE_24</b></li>
+<li>Release 2.3: <b>RELEASE_23</b></li>
+<li>Release 2.2: <b>RELEASE_22</b></li>
+<li>Release 2.1: <b>RELEASE_21</b></li>
+<li>Release 2.0: <b>RELEASE_20</b></li>
+<li>Release 1.9: <b>RELEASE_19</b></li>
+<li>Release 1.8: <b>RELEASE_18</b></li>
+<li>Release 1.7: <b>RELEASE_17</b></li>
+<li>Release 1.6: <b>RELEASE_16</b></li>
+<li>Release 1.5: <b>RELEASE_15</b></li>
+<li>Release 1.4: <b>RELEASE_14</b></li>
+<li>Release 1.3: <b>RELEASE_13</b></li>
+<li>Release 1.2: <b>RELEASE_12</b></li>
+<li>Release 1.1: <b>RELEASE_11</b></li>
+<li>Release 1.0: <b>RELEASE_1</b></li>
+</ul>
+
+<p>If you would like to get the LLVM test suite (a separate package as of 1.4),
+you get it from the Subversion repository:</p>
+
+<div class="doc_code">
+<pre>
+% cd llvm/projects
+% svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
+</pre>
+</div>
+
+<p>By placing it in the <tt>llvm/projects</tt>, it will be automatically
+configured by the LLVM configure script as well as automatically updated when
+you run <tt>svn update</tt>.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="git_mirror">GIT mirror</a>
+</h3>
+
+<div>
+
+<p>GIT mirrors are available for a number of LLVM subprojects. These mirrors
+  sync automatically with each Subversion commit and contain all necessary
+  git-svn marks (so, you can recreate git-svn metadata locally). Note that right
+  now mirrors reflect only <tt>trunk</tt> for each project. You can do the
+  read-only GIT clone of LLVM via:</p>
+
+<pre class="doc_code">
+git clone http://llvm.org/git/llvm.git
+</pre>
+
+<p>If you want to check out clang too, run:</p>
+
+<pre class="doc_code">
+git clone http://llvm.org/git/llvm.git
+cd llvm/tools
+git clone http://llvm.org/git/clang.git
+</pre>
+
+<p>
+Since the upstream repository is in Subversion, you should use
+<tt>"git pull --rebase"</tt>
+instead of <tt>"git pull"</tt> to avoid generating a non-linear
+history in your clone.
+To configure <tt>"git pull"</tt> to pass <tt>--rebase</tt> by default
+on the master branch, run the following command:
+</p>
+
+<pre class="doc_code">
+git config branch.master.rebase true
+</pre>
+
+<h4>Sending patches with Git</h4>
+<div>
+<p>
+Please read <a href="DeveloperPolicy.html#patches">Developer Policy</a>, too.
+</p>
+
+<p>
+Assume <tt>master</tt> points the upstream and <tt>mybranch</tt> points your
+working branch, and <tt>mybranch</tt> is rebased onto <tt>master</tt>.
+At first you may check sanity of whitespaces:
+</p>
+
+<pre class="doc_code">
+git diff --check master..mybranch
+</pre>
+
+<p>
+The easiest way to generate a patch is as below:
+</p>
+
+<pre class="doc_code">
+git diff master..mybranch > /path/to/mybranch.diff
+</pre>
+
+<p>
+It is a little different from svn-generated diff. git-diff-generated diff has
+prefixes like <tt>a/</tt> and <tt>b/</tt>. Don't worry, most developers might
+know it could be accepted with <tt>patch -p1 -N</tt>.
+</p>
+
+<p>
+But you may generate patchset with git-format-patch. It generates
+by-each-commit patchset. To generate patch files to attach to your article:
+</p>
+
+<pre class="doc_code">
+git format-patch --no-attach master..mybranch -o /path/to/your/patchset
+</pre>
+
+<p>
+If you would like to send patches directly, you may use git-send-email or
+git-imap-send. Here is an example to generate the patchset in Gmail's [Drafts].
+</p>
+
+<pre class="doc_code">
+git format-patch --attach master..mybranch --stdout | git imap-send
+</pre>
+
+<p>
+Then, your .git/config should have [imap] sections.
+</p>
+
+<pre class="doc_code">
+[imap]
+        host = imaps://imap.gmail.com
+        user = <em>your.gmail.account</em>@gmail.com
+        pass = <em>himitsu!</em>
+        port = 993
+        sslverify = false
+; in English
+        folder = "[Gmail]/Drafts"
+; example for Japanese, "Modified UTF-7" encoded.
+        folder = "[Gmail]/&Tgtm+DBN-"
+; example for Traditional Chinese
+        folder = "[Gmail]/&g0l6Pw-"
+</pre>
+
+</div>
+
+<h4>For developers to work with git-svn</h4>
+<div>
+
+<p>To set up clone from which you can submit code using
+   <tt>git-svn</tt>, run:</p>
+
+<pre class="doc_code">
+git clone http://llvm.org/git/llvm.git
+cd llvm
+git svn init https://llvm.org/svn/llvm-project/llvm/trunk --username=<username>
+git config svn-remote.svn.fetch :refs/remotes/origin/master
+git svn rebase -l  # -l avoids fetching ahead of the git mirror.
+
+# If you have clang too:
+cd tools
+git clone http://llvm.org/git/clang.git
+cd clang
+git svn init https://llvm.org/svn/llvm-project/cfe/trunk --username=<username>
+git config svn-remote.svn.fetch :refs/remotes/origin/master
+git svn rebase -l
+</pre>
+
+<p>To update this clone without generating git-svn tags that conflict
+with the upstream git repo, run:</p>
+
+<pre class="doc_code">
+git fetch && (cd tools/clang && git fetch)  # Get matching revisions of both trees.
+git checkout master
+git svn rebase -l
+(cd tools/clang &&
+ git checkout master &&
+ git svn rebase -l)
+</pre>
+
+<p>This leaves your working directories on their master branches, so
+you'll need to <tt>checkout</tt> each working branch individually and
+<tt>rebase</tt> it on top of its parent branch.  (Note: This script is
+intended for relative newbies to git.  If you have more experience,
+you can likely improve on it.)</p>
+
+<p>The git-svn metadata can get out of sync after you mess around with
+branches and <code>dcommit</code>. When that happens, <code>git svn
+dcommit</code> stops working, complaining about files with uncommitted
+changes. The fix is to rebuild the metadata:</p>
+
+<pre class="doc_code">
+rm -rf .git/svn
+git svn rebase -l
+</pre>
+
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="config">Local LLVM Configuration</a>
+</h3>
+
+<div>
+
+  <p>Once checked out from the Subversion repository, the LLVM suite source 
+  code must be
+configured via the <tt>configure</tt> script.  This script sets variables in the
+various <tt>*.in</tt> files, most notably <tt>llvm/Makefile.config</tt> and 
+<tt>llvm/include/Config/config.h</tt>.  It also populates <i>OBJ_ROOT</i> with 
+the Makefiles needed to begin building LLVM.</p>
+
+<p>The following environment variables are used by the <tt>configure</tt>
+script to configure the build system:</p>
+
+<table summary="LLVM configure script environment variables">
+  <tr><th>Variable</th><th>Purpose</th></tr>
+  <tr>
+    <td>CC</td>
+    <td>Tells <tt>configure</tt> which C compiler to use.  By default,
+        <tt>configure</tt> will look for the first GCC C compiler in
+        <tt>PATH</tt>.  Use this variable to override
+        <tt>configure</tt>'s default behavior.</td>
+  </tr>
+  <tr>
+    <td>CXX</td>
+    <td>Tells <tt>configure</tt> which C++ compiler to use.  By default,
+       <tt>configure</tt> will look for the first GCC C++ compiler in
+       <tt>PATH</tt>.  Use this variable to override
+       <tt>configure</tt>'s default behavior.</td>
+  </tr>
+</table>
+
+<p>The following options can be used to set or enable LLVM specific options:</p>
+
+<dl>
+  <dt><i>--enable-optimized</i></dt>
+  <dd>
+    Enables optimized compilation (debugging symbols are removed
+    and GCC optimization flags are enabled). Note that this is the default 
+    setting     if you are using the LLVM distribution. The default behavior 
+    of an Subversion checkout is to use an unoptimized build (also known as a 
+    debug build).
+    <br><br>
+  </dd>
+  <dt><i>--enable-debug-runtime</i></dt>
+  <dd>
+    Enables debug symbols in the runtime libraries. The default is to strip
+    debug symbols from the runtime libraries. 
+  </dd>
+  <dt><i>--enable-jit</i></dt>
+  <dd>
+    Compile the Just In Time (JIT) compiler functionality.  This is not
+    available
+    on all platforms.  The default is dependent on platform, so it is best
+    to explicitly enable it if you want it.
+    <br><br>
+  </dd>
+  <dt><i>--enable-targets=</i><tt>target-option</tt></dt>
+  <dd>Controls which targets will be built and linked into llc. The default 
+  value for <tt>target_options</tt> is "all" which builds and links all 
+  available targets.  The value "host-only" can be specified to build only a 
+  native compiler (no cross-compiler targets available). The "native" target is 
+  selected as the target of the build host. You can also specify a comma 
+  separated list of target names that you want available in llc. The target 
+  names use all lower case. The current set of targets is: <br>
+  <tt>arm, cbe, cpp, hexagon, mblaze, mips, mipsel, msp430, powerpc, ptx, sparc, spu, x86, x86_64, xcore</tt>.
+  <br><br></dd>
+  <dt><i>--enable-doxygen</i></dt>
+  <dd>Look for the doxygen program and enable construction of doxygen based
+  documentation from the source code. This is disabled by default because 
+  generating the documentation can take a long time and producess 100s of 
+  megabytes of output.</dd>
+  <dt><i>--with-udis86</i></dt>
+  <dd>LLVM can use external disassembler library for various purposes (now it's
+  used only for examining code produced by JIT). This option will enable usage
+  of <a href="http://udis86.sourceforge.net/">udis86</a> x86 (both 32 and 64
+  bits) disassembler library.</dd>
+</dl>
+
+<p>To configure LLVM, follow these steps:</p>
+
+<ol>
+    <li><p>Change directory into the object root directory:</p>
+
+    <div class="doc_code"><pre>% cd <i>OBJ_ROOT</i></pre></div></li>
+
+    <li><p>Run the <tt>configure</tt> script located in the LLVM source
+    tree:</p>
+
+    <div class="doc_code">
+    <pre>% <i>SRC_ROOT</i>/configure --prefix=/install/path [other options]</pre>
+    </div></li>
+</ol>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="compile">Compiling the LLVM Suite Source Code</a>
+</h3>
+
+<div>
+
+<p>Once you have configured LLVM, you can build it.  There are three types of
+builds:</p>
+
+<dl>
+    <dt>Debug Builds
+    <dd>
+    These builds are the default when one is using an Subversion checkout and 
+    types <tt>gmake</tt> (unless the <tt>--enable-optimized</tt> option was 
+    used during configuration).  The build system will compile the tools and 
+    libraries with debugging information.  To get a Debug Build using the
+    LLVM distribution the <tt>--disable-optimized</tt> option must be passed
+    to <tt>configure</tt>.
+    <br><br>
+
+    <dt>Release (Optimized) Builds
+    <dd>
+    These builds are enabled with the <tt>--enable-optimized</tt> option to
+    <tt>configure</tt> or by specifying <tt>ENABLE_OPTIMIZED=1</tt> on the
+    <tt>gmake</tt> command line.  For these builds, the build system will
+    compile the tools and libraries with GCC optimizations enabled and strip
+    debugging information from the libraries and executables it generates. 
+    Note that Release Builds are default when using an LLVM distribution.
+    <br><br>
+
+    <dt>Profile Builds
+    <dd>
+    These builds are for use with profiling.  They compile profiling
+    information into the code for use with programs like <tt>gprof</tt>.
+    Profile builds must be started by specifying <tt>ENABLE_PROFILING=1</tt>
+    on the <tt>gmake</tt> command line.
+</dl>
+
+<p>Once you have LLVM configured, you can build it by entering the
+<i>OBJ_ROOT</i> directory and issuing the following command:</p>
+
+<div class="doc_code"><pre>% gmake</pre></div>
+
+<p>If the build fails, please <a href="#brokengcc">check here</a> to see if you
+are using a version of GCC that is known not to compile LLVM.</p>
+
+<p>
+If you have multiple processors in your machine, you may wish to use some of
+the parallel build options provided by GNU Make.  For example, you could use the
+command:</p>
+
+<div class="doc_code"><pre>% gmake -j2</pre></div>
+
+<p>There are several special targets which are useful when working with the LLVM
+source code:</p>
+
+<dl>
+  <dt><tt>gmake clean</tt>
+  <dd>
+  Removes all files generated by the build.  This includes object files,
+  generated C/C++ files, libraries, and executables.
+  <br><br>
+
+  <dt><tt>gmake dist-clean</tt>
+  <dd>
+  Removes everything that <tt>gmake clean</tt> does, but also removes files
+  generated by <tt>configure</tt>.  It attempts to return the source tree to the
+  original state in which it was shipped.
+  <br><br>
+
+  <dt><tt>gmake install</tt>
+  <dd>
+  Installs LLVM header files, libraries, tools, and documentation in a
+  hierarchy 
+  under $PREFIX, specified with <tt>./configure --prefix=[dir]</tt>, which 
+  defaults to <tt>/usr/local</tt>.
+  <br><br>
+
+  <dt><tt>gmake -C runtime install-bytecode</tt>
+  <dd>
+  Assuming you built LLVM into $OBJDIR, when this command is run, it will 
+  install bitcode libraries into the GCC front end's bitcode library 
+  directory.  If you need to update your bitcode libraries,
+  this is the target to use once you've built them.
+  <br><br>
+</dl>
+
+<p>Please see the <a href="MakefileGuide.html">Makefile Guide</a> for further
+details on these <tt>make</tt> targets and descriptions of other targets
+available.</p>
+
+<p>It is also possible to override default values from <tt>configure</tt> by
+declaring variables on the command line.  The following are some examples:</p>
+
+<dl>
+  <dt><tt>gmake ENABLE_OPTIMIZED=1</tt>
+  <dd>
+  Perform a Release (Optimized) build.
+  <br><br>
+
+  <dt><tt>gmake ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1</tt>
+  <dd>
+  Perform a Release (Optimized) build without assertions enabled.
+  <br><br>
+ 
+  <dt><tt>gmake ENABLE_OPTIMIZED=0</tt>
+  <dd>
+  Perform a Debug build.
+  <br><br>
+
+  <dt><tt>gmake ENABLE_PROFILING=1</tt>
+  <dd>
+  Perform a Profiling build.
+  <br><br>
+
+  <dt><tt>gmake VERBOSE=1</tt>
+  <dd>
+  Print what <tt>gmake</tt> is doing on standard output.
+  <br><br>
+
+  <dt><tt>gmake TOOL_VERBOSE=1</tt></dt>
+  <dd>Ask each tool invoked by the makefiles to print out what it is doing on 
+  the standard output. This also implies <tt>VERBOSE=1</tt>.
+  <br><br></dd>
+</dl>
+
+<p>Every directory in the LLVM object tree includes a <tt>Makefile</tt> to build
+it and any subdirectories that it contains.  Entering any directory inside the
+LLVM object tree and typing <tt>gmake</tt> should rebuild anything in or below
+that directory that is out of date.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="cross-compile">Cross-Compiling LLVM</a>
+</h3>
+
+<div>
+  <p>It is possible to cross-compile LLVM itself. That is, you can create LLVM
+  executables and libraries to be hosted on a platform different from the
+  platform where they are build (a Canadian Cross build). To configure a
+  cross-compile, supply the configure script with <tt>--build</tt> and
+  <tt>--host</tt> options that are different. The values of these options must
+  be legal target triples that your GCC compiler supports.</p>
+
+  <p>The result of such a build is executables that are not runnable on
+  on the build host (--build option) but can be executed on the compile host
+  (--host option).</p>
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="objfiles">The Location of LLVM Object Files</a>
+</h3>
+
+<div>
+
+<p>The LLVM build system is capable of sharing a single LLVM source tree among
+several LLVM builds.  Hence, it is possible to build LLVM for several different
+platforms or configurations using the same source tree.</p>
+
+<p>This is accomplished in the typical autoconf manner:</p>
+
+<ul>
+  <li><p>Change directory to where the LLVM object files should live:</p>
+
+      <div class="doc_code"><pre>% cd <i>OBJ_ROOT</i></pre></div></li>
+
+  <li><p>Run the <tt>configure</tt> script found in the LLVM source
+      directory:</p>
+
+      <div class="doc_code"><pre>% <i>SRC_ROOT</i>/configure</pre></div></li>
+</ul>
+
+<p>The LLVM build will place files underneath <i>OBJ_ROOT</i> in directories
+named after the build type:</p>
+
+<dl>
+  <dt>Debug Builds with assertions enabled (the default)
+  <dd>
+  <dl>
+    <dt>Tools
+    <dd><tt><i>OBJ_ROOT</i>/Debug+Asserts/bin</tt>
+    <dt>Libraries
+    <dd><tt><i>OBJ_ROOT</i>/Debug+Asserts/lib</tt>
+  </dl>
+  <br><br>
+
+  <dt>Release Builds
+  <dd>
+  <dl>
+    <dt>Tools
+    <dd><tt><i>OBJ_ROOT</i>/Release/bin</tt>
+    <dt>Libraries
+    <dd><tt><i>OBJ_ROOT</i>/Release/lib</tt>
+  </dl>
+  <br><br>
+
+  <dt>Profile Builds
+  <dd>
+  <dl>
+    <dt>Tools
+    <dd><tt><i>OBJ_ROOT</i>/Profile/bin</tt>
+    <dt>Libraries
+    <dd><tt><i>OBJ_ROOT</i>/Profile/lib</tt>
+  </dl>
+</dl>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="optionalconfig">Optional Configuration Items</a>
+</h3>
+
+<div>
+
+<p>
+If you're running on a Linux system that supports the "<a
+href="http://www.tat.physik.uni-tuebingen.de/~rguenth/linux/binfmt_misc.html">binfmt_misc</a>"
+module, and you have root access on the system, you can set your system up to
+execute LLVM bitcode files directly. To do this, use commands like this (the
+first command may not be required if you are already using the module):</p>
+
+<div class="doc_code">
+<pre>
+$ mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
+$ echo ':llvm:M::BC::/path/to/lli:' > /proc/sys/fs/binfmt_misc/register
+$ chmod u+x hello.bc   (if needed)
+$ ./hello.bc
+</pre>
+</div>
+
+<p>
+This allows you to execute LLVM bitcode files directly.  On Debian, you 
+can also use this command instead of the 'echo' command above:
+</p>
+
+<div class="doc_code">
+<pre>
+$ sudo update-binfmts --install llvm /path/to/lli --magic 'BC'
+</pre>
+</div>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="layout">Program Layout</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>One useful source of information about the LLVM source base is the LLVM <a
+href="http://www.doxygen.org/">doxygen</a> documentation available at <tt><a
+href="http://llvm.org/doxygen/">http://llvm.org/doxygen/</a></tt>.
+The following is a brief introduction to code layout:</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="examples"><tt>llvm/examples</tt></a>
+</h3>
+
+<div>
+  <p>This directory contains some simple examples of how to use the LLVM IR and
+  JIT.</p>
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="include"><tt>llvm/include</tt></a>
+</h3>
+
+<div>
+
+<p>This directory contains public header files exported from the LLVM
+library. The three main subdirectories of this directory are:</p>
+
+<dl>
+  <dt><tt><b>llvm/include/llvm</b></tt></dt>
+  <dd>This directory contains all of the LLVM specific header files.  This 
+  directory also has subdirectories for different portions of LLVM: 
+  <tt>Analysis</tt>, <tt>CodeGen</tt>, <tt>Target</tt>, <tt>Transforms</tt>, 
+  etc...</dd>
+
+  <dt><tt><b>llvm/include/llvm/Support</b></tt></dt>
+  <dd>This directory contains generic support libraries that are provided with 
+  LLVM but not necessarily specific to LLVM. For example, some C++ STL utilities 
+  and a Command Line option processing library store their header files here.
+  </dd>
+
+  <dt><tt><b>llvm/include/llvm/Config</b></tt></dt>
+  <dd>This directory contains header files configured by the <tt>configure</tt> 
+  script.  They wrap "standard" UNIX and C header files.  Source code can 
+  include these header files which automatically take care of the conditional 
+  #includes that the <tt>configure</tt> script generates.</dd>
+</dl>
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="lib"><tt>llvm/lib</tt></a>
+</h3>
+
+<div>
+
+<p>This directory contains most of the source files of the LLVM system. In LLVM,
+almost all code exists in libraries, making it very easy to share code among the
+different <a href="#tools">tools</a>.</p>
+
+<dl>
+  <dt><tt><b>llvm/lib/VMCore/</b></tt></dt>
+  <dd> This directory holds the core LLVM source files that implement core 
+  classes like Instruction and BasicBlock.</dd>
+
+  <dt><tt><b>llvm/lib/AsmParser/</b></tt></dt>
+  <dd>This directory holds the source code for the LLVM assembly language parser 
+  library.</dd>
+
+  <dt><tt><b>llvm/lib/BitCode/</b></tt></dt>
+  <dd>This directory holds code for reading and write LLVM bitcode.</dd>
+
+  <dt><tt><b>llvm/lib/Analysis/</b></tt><dd>This directory contains a variety of
+  different program analyses, such as Dominator Information, Call Graphs,
+  Induction Variables, Interval Identification, Natural Loop Identification,
+  etc.</dd>
+
+  <dt><tt><b>llvm/lib/Transforms/</b></tt></dt>
+  <dd> This directory contains the source code for the LLVM to LLVM program 
+  transformations, such as Aggressive Dead Code Elimination, Sparse Conditional 
+  Constant Propagation, Inlining, Loop Invariant Code Motion, Dead Global 
+  Elimination, and many others.</dd>
+
+  <dt><tt><b>llvm/lib/Target/</b></tt></dt>
+  <dd> This directory contains files that describe various target architectures
+  for code generation.  For example, the <tt>llvm/lib/Target/X86</tt> 
+  directory holds the X86 machine description while
+  <tt>llvm/lib/Target/ARM</tt> implements the ARM backend.</dd>
+    
+  <dt><tt><b>llvm/lib/CodeGen/</b></tt></dt>
+  <dd> This directory contains the major parts of the code generator: Instruction 
+  Selector, Instruction Scheduling, and Register Allocation.</dd>
+
+  <dt><tt><b>llvm/lib/MC/</b></tt></dt>
+  <dd>(FIXME: T.B.D.)</dd>
+
+  <!--FIXME: obsoleted -->
+  <dt><tt><b>llvm/lib/Debugger/</b></tt></dt>
+  <dd> This directory contains the source level debugger library that makes 
+  it possible to instrument LLVM programs so that a debugger could identify 
+  source code locations at which the program is executing.</dd>
+
+  <dt><tt><b>llvm/lib/ExecutionEngine/</b></tt></dt>
+  <dd> This directory contains libraries for executing LLVM bitcode directly 
+  at runtime in both interpreted and JIT compiled fashions.</dd>
+
+  <dt><tt><b>llvm/lib/Support/</b></tt></dt>
+  <dd> This directory contains the source code that corresponds to the header
+  files located in <tt>llvm/include/ADT/</tt>
+  and <tt>llvm/include/Support/</tt>.</dd>
+</dl>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="projects"><tt>llvm/projects</tt></a>
+</h3>
+
+<div>
+  <p>This directory contains projects that are not strictly part of LLVM but are
+  shipped with LLVM. This is also the directory where you should create your own
+  LLVM-based projects. See <tt>llvm/projects/sample</tt> for an example of how
+  to set up your own project.</p>
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="runtime"><tt>llvm/runtime</tt></a>
+</h3>
+
+<div>
+
+<p>This directory contains libraries which are compiled into LLVM bitcode and
+used when linking programs with the Clang front end.  Most of these libraries are
+skeleton versions of real libraries; for example, libc is a stripped down
+version of glibc.</p>
+
+<p>Unlike the rest of the LLVM suite, this directory needs the LLVM GCC front
+end to compile.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="test"><tt>llvm/test</tt></a>
+</h3>
+
+<div>
+  <p>This directory contains feature and regression tests and other basic sanity
+  checks on the LLVM infrastructure. These are intended to run quickly and cover
+  a lot of territory without being exhaustive.</p>
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="test-suite"><tt>test-suite</tt></a>
+</h3>
+
+<div>
+  <p>This is not a directory in the normal llvm module; it is a separate
+  Subversion
+  module that must be checked out (usually to <tt>projects/test-suite</tt>). 
+  This
+  module contains a comprehensive correctness, performance, and benchmarking
+  test
+  suite for LLVM. It is a separate Subversion module because not every LLVM 
+  user is
+  interested in downloading or building such a comprehensive test suite. For
+  further details on this test suite, please see the 
+  <a href="TestingGuide.html">Testing Guide</a> document.</p>
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="tools"><tt>llvm/tools</tt></a>
+</h3>
+
+<div>
+
+<p>The <b>tools</b> directory contains the executables built out of the
+libraries above, which form the main part of the user interface.  You can
+always get help for a tool by typing <tt>tool_name -help</tt>.  The
+following is a brief introduction to the most important tools.  More detailed
+information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
+
+<dl>
+
+  <dt><tt><b>bugpoint</b></tt></dt>
+  <dd><tt>bugpoint</tt> is used to debug
+  optimization passes or code generation backends by narrowing down the
+  given test case to the minimum number of passes and/or instructions that
+  still cause a problem, whether it is a crash or miscompilation. See <a
+  href="HowToSubmitABug.html">HowToSubmitABug.html</a> for more information
+  on using <tt>bugpoint</tt>.</dd>
+
+  <dt><tt><b>llvm-ar</b></tt></dt>
+  <dd>The archiver produces an archive containing
+  the given LLVM bitcode files, optionally with an index for faster
+  lookup.</dd>
+  
+  <dt><tt><b>llvm-as</b></tt></dt>
+  <dd>The assembler transforms the human readable LLVM assembly to LLVM 
+  bitcode.</dd>
+
+  <dt><tt><b>llvm-dis</b></tt></dt>
+  <dd>The disassembler transforms the LLVM bitcode to human readable 
+  LLVM assembly.</dd>
+
+  <dt><tt><b>llvm-ld</b></tt></dt>
+  <dd><tt>llvm-ld</tt> is a general purpose and extensible linker for LLVM. 
+  It performs standard link time optimizations and allows optimization
+  modules to be loaded and run so that language specific optimizations can 
+  be applied at link time.</dd>
+
+  <dt><tt><b>llvm-link</b></tt></dt>
+  <dd><tt>llvm-link</tt>, not surprisingly, links multiple LLVM modules into 
+  a single program.</dd>
+  
+  <dt><tt><b>lli</b></tt></dt>
+  <dd><tt>lli</tt> is the LLVM interpreter, which
+  can directly execute LLVM bitcode (although very slowly...). For architectures
+  that support it (currently x86, Sparc, and PowerPC), by default, <tt>lli</tt>
+  will function as a Just-In-Time compiler (if the functionality was compiled
+  in), and will execute the code <i>much</i> faster than the interpreter.</dd>
+
+  <dt><tt><b>llc</b></tt></dt>
+  <dd> <tt>llc</tt> is the LLVM backend compiler, which
+  translates LLVM bitcode to a native code assembly file or to C code (with
+  the -march=c option).</dd>
+
+  <dt><tt><b>llvm-gcc</b></tt></dt>
+  <dd><tt>llvm-gcc</tt> is a GCC-based C frontend that has been retargeted to 
+  use LLVM as its backend instead of GCC's RTL backend. It can also emit LLVM 
+  bitcode or assembly (with the <tt>-emit-llvm</tt> option) instead of the
+  usual machine code output.  It works just like any other GCC compiler, 
+  taking the typical <tt>-c, -S, -E, -o</tt> options that are typically used.  
+  Additionally, the the source code for <tt>llvm-gcc</tt> is available as a 
+  separate Subversion module.</dd>
+
+  <dt><tt><b>opt</b></tt></dt>
+  <dd><tt>opt</tt> reads LLVM bitcode, applies a series of LLVM to LLVM 
+  transformations (which are specified on the command line), and then outputs 
+  the resultant bitcode.  The '<tt>opt -help</tt>' command is a good way to 
+  get a list of the program transformations available in LLVM.<br>
+  <dd><tt>opt</tt> can also be used to run a specific analysis on an input 
+  LLVM bitcode file and print out the results.  It is primarily useful for 
+  debugging analyses, or familiarizing yourself with what an analysis does.</dd>
+</dl>
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="utils"><tt>llvm/utils</tt></a>
+</h3>
+
+<div>
+
+<p>This directory contains utilities for working with LLVM source code, and some
+of the utilities are actually required as part of the build process because they
+are code generators for parts of LLVM infrastructure.</p>
+
+<dl>
+  <dt><tt><b>codegen-diff</b></tt> <dd><tt>codegen-diff</tt> is a script
+  that finds differences between code that LLC generates and code that LLI
+  generates. This is a useful tool if you are debugging one of them,
+  assuming that the other generates correct output. For the full user
+  manual, run <tt>`perldoc codegen-diff'</tt>.<br><br>
+
+  <dt><tt><b>emacs/</b></tt> <dd>The <tt>emacs</tt> directory contains
+  syntax-highlighting files which will work with Emacs and XEmacs editors,
+  providing syntax highlighting support for LLVM assembly files and TableGen
+  description files. For information on how to use the syntax files, consult
+  the <tt>README</tt> file in that directory.<br><br>
+
+  <dt><tt><b>getsrcs.sh</b></tt> <dd>The <tt>getsrcs.sh</tt> script finds
+  and outputs all non-generated source files, which is useful if one wishes
+  to do a lot of development across directories and does not want to
+  individually find each file. One way to use it is to run, for example:
+  <tt>xemacs `utils/getsources.sh`</tt> from the top of your LLVM source
+  tree.<br><br>
+
+  <dt><tt><b>llvmgrep</b></tt></dt>
+  <dd>This little tool performs an "egrep -H -n" on each source file in LLVM and
+  passes to it a regular expression provided on <tt>llvmgrep</tt>'s command
+  line. This is a very efficient way of searching the source base for a
+  particular regular expression.</dd>
+
+  <dt><tt><b>makellvm</b></tt> <dd>The <tt>makellvm</tt> script compiles all
+  files in the current directory and then compiles and links the tool that
+  is the first argument. For example, assuming you are in the directory
+  <tt>llvm/lib/Target/Sparc</tt>, if <tt>makellvm</tt> is in your path,
+  simply running <tt>makellvm llc</tt> will make a build of the current
+  directory, switch to directory <tt>llvm/tools/llc</tt> and build it,
+  causing a re-linking of LLC.<br><br>
+
+  <dt><tt><b>TableGen/</b></tt> <dd>The <tt>TableGen</tt> directory contains
+  the tool used to generate register descriptions, instruction set
+  descriptions, and even assemblers from common TableGen description
+  files.<br><br>
+
+  <dt><tt><b>vim/</b></tt> <dd>The <tt>vim</tt> directory contains
+  syntax-highlighting files which will work with the VIM editor, providing
+  syntax highlighting support for LLVM assembly files and TableGen
+  description files. For information on how to use the syntax files, consult
+  the <tt>README</tt> file in that directory.<br><br>
+
+</dl>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="tutorial">An Example Using the LLVM Tool Chain</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+<p>This section gives an example of using LLVM with the Clang front end.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="tutorial4">Example with clang</a>
+</h3>
+
+<div>
+
+<ol>
+  <li><p>First, create a simple C file, name it 'hello.c':</p>
+
+<div class="doc_code">
+<pre>
+#include <stdio.h>
+
+int main() {
+  printf("hello world\n");
+  return 0;
+}
+</pre></div></li>
+
+  <li><p>Next, compile the C file into a native executable:</p>
+
+      <div class="doc_code"><pre>% clang hello.c -o hello</pre></div>
+
+      <p>Note that clang works just like GCC by default.  The standard -S and
+        -c arguments work as usual (producing a native .s or .o file,
+        respectively).</p></li>
+
+  <li><p>Next, compile the C file into a LLVM bitcode file:</p>
+
+      <div class="doc_code">
+      <pre>% clang -O3 -emit-llvm hello.c -c -o hello.bc</pre></div>
+
+      <p>The -emit-llvm option can be used with the -S or -c options to emit an
+         LLVM ".ll" or ".bc" file (respectively) for the code.  This allows you
+         to use the <a href="CommandGuide/index.html">standard LLVM tools</a> on
+         the bitcode file.</p></li>
+
+  <li><p>Run the program in both forms. To run the program, use:</p>
+      
+      <div class="doc_code"><pre>% ./hello</pre></div>
+ 
+      <p>and</p>
+
+      <div class="doc_code"><pre>% lli hello.bc</pre></div>
+
+      <p>The second examples shows how to invoke the LLVM JIT, <a
+       href="CommandGuide/html/lli.html">lli</a>.</p></li>
+
+  <li><p>Use the <tt>llvm-dis</tt> utility to take a look at the LLVM assembly
+      code:</p>
+
+<div class="doc_code">
+<pre>llvm-dis < hello.bc | less</pre>
+</div></li>
+
+  <li><p>Compile the program to native assembly using the LLC code
+      generator:</p>
+
+      <div class="doc_code"><pre>% llc hello.bc -o hello.s</pre></div></li>
+
+  <li><p>Assemble the native assembly language file into a program:</p>
+
+<div class="doc_code">
+<pre>
+<b>Solaris:</b> % /opt/SUNWspro/bin/cc -xarch=v9 hello.s -o hello.native
+
+<b>Others:</b>  % gcc hello.s -o hello.native
+</pre>
+</div></li>
+
+  <li><p>Execute the native code program:</p>
+
+      <div class="doc_code"><pre>% ./hello.native</pre></div>
+
+      <p>Note that using clang to compile directly to native code (i.e. when
+         the -emit-llvm option is not present) does steps 6/7/8 for you.</p>
+        </li>
+
+</ol>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="problems">Common Problems</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>If you are having problems building or using LLVM, or if you have any other
+general questions about LLVM, please consult the <a href="FAQ.html">Frequently
+Asked Questions</a> page.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="links">Links</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>This document is just an <b>introduction</b> on how to use LLVM to do
+some simple things... there are many more interesting and complicated things
+that you can do that aren't documented here (but we'll gladly accept a patch
+if you want to write something up!).  For more information about LLVM, check
+out:</p>
+
+<ul>
+  <li><a href="http://llvm.org/">LLVM homepage</a></li>
+  <li><a href="http://llvm.org/doxygen/">LLVM doxygen tree</a></li>
+  <li><a href="http://llvm.org/docs/Projects.html">Starting a Project
+  that Uses LLVM</a></li>
+</ul>
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+
+  <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
+  <a href="http://llvm.x10sys.com/rspencer/">Reid Spencer</a><br>
+  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date: 2012-03-27 04:25:16 -0700 (Tue, 27 Mar 2012) $
+</address>
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/GettingStartedVS.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/GettingStartedVS.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/GettingStartedVS.html (added)
+++ www-releases/trunk/3.1/docs/GettingStartedVS.html Tue May 22 14:32:29 2012
@@ -0,0 +1,368 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>Getting Started with LLVM System for Microsoft Visual Studio</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+<body>
+
+<h1>
+  Getting Started with the LLVM System using Microsoft Visual Studio
+</h1>
+
+<ul>
+  <li><a href="#overview">Overview</a>
+  <li><a href="#requirements">Requirements</a>
+    <ol>
+      <li><a href="#hardware">Hardware</a>
+      <li><a href="#software">Software</a>
+    </ol></li>
+  <li><a href="#quickstart">Getting Started</a>
+  <li><a href="#tutorial">An Example Using the LLVM Tool Chain</a>
+  <li><a href="#problems">Common Problems</a>
+  <li><a href="#links">Links</a>
+</ul>
+
+<div class="doc_author">
+  <p>Written by: <a href="http://llvm.org/">The LLVM Team</a></p>
+</div>
+
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="overview"><b>Overview</b></a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+  <p>Welcome to LLVM on Windows! This document only covers LLVM on Windows using
+  Visual Studio, not mingw or cygwin. In order to get started, you first need to
+  know some basic information.</p>
+
+  <p>There are many different projects that compose LLVM. The first is the LLVM
+  suite. This contains all of the tools, libraries, and header files needed to
+  use LLVM. It contains an assembler, disassembler,
+  bitcode analyzer and bitcode optimizer. It also contains a test suite that can
+  be used to test the LLVM tools.</p>
+
+  <p>Another useful project on Windows is
+  <a href="http://clang.llvm.org/">clang</a>. Clang is a C family
+  ([Objective]C/C++) compiler. Clang mostly works on Windows, but does not
+  currently understand all of the Microsoft extensions to C and C++. Because of
+  this, clang cannot parse the C++ standard library included with Visual Studio,
+  nor parts of the Windows Platform SDK. However, most standard C programs do
+  compile. Clang can be used to emit bitcode, directly emit object files or
+  even linked executables using Visual Studio's <tt>link.exe</tt></p>
+
+  <p>The large LLVM test suite cannot be run on the Visual Studio port at this
+  time.</p>
+
+  <p>Most of the tools build and work.  <tt>bugpoint</tt> does build, but does
+  not work.</p>
+
+  <p>Additional information about the LLVM directory structure and tool chain
+  can be found on the main <a href="GettingStarted.html">Getting Started</a>
+  page.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="requirements"><b>Requirements</b></a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+  <p>Before you begin to use the LLVM system, review the requirements given
+  below.  This may save you some trouble by knowing ahead of time what hardware
+  and software you will need.</p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="hardware"><b>Hardware</b></a>
+</h3>
+
+<div>
+
+  <p>Any system that can adequately run Visual Studio 2008 is fine. The LLVM
+  source tree and object files, libraries and executables will consume
+  approximately 3GB.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="software"><b>Software</b></a></h3>
+<div>
+
+  <p>You will need Visual Studio 2008 or higher.  Earlier versions of Visual
+  Studio have bugs, are not completely compatible, or do not support the C++
+  standard well enough.</p>
+
+  <p>You will also need the <a href="http://www.cmake.org/">CMake</a> build
+  system since it generates the project files you will use to build with.</p>
+
+  <p>If you would like to run the LLVM tests you will need
+  <a href="http://www.python.org/">Python</a>. Versions 2.4-2.7 are known to
+  work. You will need <a href="http://gnuwin32.sourceforge.net/">"GnuWin32"</a>
+  tools, too.</p>
+
+  <p>Do not install the LLVM directory tree into a path containing spaces (e.g.
+  C:\Documents and Settings\...) as the configure step will fail.</p>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="quickstart"><b>Getting Started</b></a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>Here's the short story for getting up and running quickly with LLVM:</p>
+
+<ol>
+  <li>Read the documentation.</li>
+  <li>Seriously, read the documentation.</li>
+  <li>Remember that you were warned twice about reading the documentation.</li>
+
+  <li>Get the Source Code
+  <ul>
+    <li>With the distributed files:
+    <ol>
+      <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
+      <li><tt>gunzip --stdout llvm-<i>version</i>.tar.gz | tar -xvf -</tt>
+      <i>      or use WinZip</i>
+      <li><tt>cd llvm</tt></li>
+    </ol></li>
+
+    <li>With anonymous Subversion access:
+    <ol>
+      <li><tt>cd <i>where-you-want-llvm-to-live</i></tt></li>
+      <li><tt>svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</tt></li>
+      <li><tt>cd llvm</tt></li>
+    </ol></li>
+  </ul></li>
+
+  <li> Use <a href="http://www.cmake.org/">CMake</a> to generate up-to-date
+    project files:
+    <ul>
+      <li>Once CMake is installed then the simplest way is to just start the
+        CMake GUI, select the directory where you have LLVM extracted to, and the
+        default options should all be fine.  One option you may really want to
+        change, regardless of anything else, might be the CMAKE_INSTALL_PREFIX
+        setting to select a directory to INSTALL to once compiling is complete,
+        although installation is not mandatory for using LLVM.  Another important
+        option is LLVM_TARGETS_TO_BUILD, which controls the LLVM target
+        architectures that are included on the build.
+      <li>See the <a href="CMake.html">LLVM CMake guide</a> for
+        detailed information about how to configure the LLVM
+        build.</li>
+    </ul>
+  </li>
+
+  <li>Start Visual Studio
+  <ul>
+    <li>In the directory you created the project files will have
+    an <tt>llvm.sln</tt> file, just double-click on that to open
+    Visual Studio.</li>
+  </ul></li>
+
+  <li>Build the LLVM Suite:
+  <ul>
+    <li>The projects may still be built individually, but
+    to build them all do not just select all of them in batch build (as some
+    are meant as configuration projects), but rather select and build just
+    the ALL_BUILD project to build everything, or the INSTALL project, which
+    first builds the ALL_BUILD project, then installs the LLVM headers, libs,
+    and other useful things to the directory set by the CMAKE_INSTALL_PREFIX
+    setting when you first configured CMake.</li>
+    <li>The Fibonacci project is a sample program that uses the JIT.
+    Modify the project's debugging properties to provide a numeric
+    command line argument or run it from the command line.  The
+    program will print the corresponding fibonacci value.</li>
+  </ul></li>
+
+  <li>Test LLVM on Visual Studio:
+  <ul>
+    <li>If %PATH% does not contain GnuWin32, you may specify LLVM_LIT_TOOLS_DIR
+    on CMake for the path to GnuWin32.</li>
+    <li>You can run LLVM tests by merely building the project
+      "check". The test results will be shown in the VS output
+      window.</li>
+  </ul>
+  </li>
+
+  <!-- FIXME: Is it up-to-date? -->
+  <li>Test LLVM:
+  <ul>
+    <li>The LLVM tests can be run by <tt>cd</tt>ing to the llvm source directory
+        and running:
+
+<div class="doc_code">
+<pre>
+% llvm-lit test
+</pre>
+</div>
+
+    <p>Note that quite a few of these test will fail.</p>
+    </li>
+
+    <li>A specific test or test directory can be run with:
+
+<div class="doc_code">
+<pre>
+% llvm-lit test/path/to/test
+</pre>
+</div>
+    </li>
+  </ul>
+</ol>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="tutorial">An Example Using the LLVM Tool Chain</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<ol>
+  <li><p>First, create a simple C file, name it 'hello.c':</p>
+
+<div class="doc_code">
+<pre>
+#include <stdio.h>
+int main() {
+  printf("hello world\n");
+  return 0;
+}
+</pre></div></li>
+
+  <li><p>Next, compile the C file into a LLVM bitcode file:</p>
+
+<div class="doc_code">
+<pre>
+% clang -c hello.c -emit-llvm -o hello.bc
+</pre>
+</div>
+
+      <p>This will create the result file <tt>hello.bc</tt> which is the LLVM
+         bitcode that corresponds the the compiled program and the library
+         facilities that it required.  You can execute this file directly using
+         <tt>lli</tt> tool, compile it to native assembly with the <tt>llc</tt>,
+         optimize or analyze it further with the <tt>opt</tt> tool, etc.</p>
+
+      <p>Alternatively you can directly output an executable with clang with:
+      </p>
+
+<div class="doc_code">
+<pre>
+% clang hello.c -o hello.exe
+</pre>
+</div>
+
+  <p>The <tt>-o hello.exe</tt> is required because clang currently outputs
+  <tt>a.out</tt> when neither <tt>-o</tt> nor <tt>-c</tt> are given.</p>
+
+  <li><p>Run the program using the just-in-time compiler:</p>
+
+<div class="doc_code">
+<pre>
+% lli hello.bc
+</pre>
+</div>
+
+  <li><p>Use the <tt>llvm-dis</tt> utility to take a look at the LLVM assembly
+      code:</p>
+
+<div class="doc_code">
+<pre>
+% llvm-dis < hello.bc | more
+</pre>
+</div></li>
+
+  <li><p>Compile the program to object code using the LLC code generator:</p>
+
+<div class="doc_code">
+<pre>
+% llc -filetype=obj hello.bc
+</pre>
+</div></li>
+
+  <li><p>Link to binary using Microsoft link:</p>
+
+<div class="doc_code">
+<pre>
+% link hello.obj -defaultlib:libcmt
+</pre>
+</div>
+
+  <li><p>Execute the native code program:</p>
+
+<div class="doc_code">
+<pre>
+% hello.exe
+</pre>
+</div></li>
+</ol>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="problems">Common Problems</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>If you are having problems building or using LLVM, or if you have any other
+general questions about LLVM, please consult the <a href="FAQ.html">Frequently
+Asked Questions</a> page.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="links">Links</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>This document is just an <b>introduction</b> to how to use LLVM to do
+some simple things... there are many more interesting and complicated things
+that you can do that aren't documented here (but we'll gladly accept a patch
+if you want to write something up!).  For more information about LLVM, check
+out:</p>
+
+<ul>
+  <li><a href="http://llvm.org/">LLVM homepage</a></li>
+  <li><a href="http://llvm.org/doxygen/">LLVM doxygen tree</a></li>
+</ul>
+
+</div>
+
+<!-- *********************************************************************** -->
+
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+
+  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date: 2012-01-25 14:00:23 -0800 (Wed, 25 Jan 2012) $
+</address>
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/GoldPlugin.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/GoldPlugin.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/GoldPlugin.html (added)
+++ www-releases/trunk/3.1/docs/GoldPlugin.html Tue May 22 14:32:29 2012
@@ -0,0 +1,227 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>LLVM gold plugin</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+<body>
+      
+<h1>LLVM gold plugin</h1>
+<ol>
+  <li><a href="#introduction">Introduction</a></li>
+  <li><a href="#build">How to build it</a></li>
+  <li><a href="#usage">Usage</a>
+  <ul>
+    <li><a href="#example1">Example of link time optimization</a></li>
+    <li><a href="#lto_autotools">Quickstart for using LTO with autotooled projects</a></li>
+  </ul></li>
+  <li><a href="#licensing">Licensing</a></li>
+</ol>
+<div class="doc_author">Written by Nick Lewycky</div>
+
+<!--=========================================================================-->
+<h2><a name="introduction">Introduction</a></h2>
+<!--=========================================================================-->
+<div>
+  <p>Building with link time optimization requires cooperation from the
+system linker. LTO support on Linux systems requires that you use
+the <a href="http://sourceware.org/binutils">gold linker</a> which supports
+LTO via plugins. This is the same mechanism used by the
+<a href="http://gcc.gnu.org/wiki/LinkTimeOptimization">GCC LTO</a>
+project.</p>
+  <p>The LLVM gold plugin implements the
+<a href="http://gcc.gnu.org/wiki/whopr/driver">gold plugin interface</a>
+on top of
+<a href="LinkTimeOptimization.html#lto">libLTO</a>.
+The same plugin can also be used by other tools such as <tt>ar</tt> and
+<tt>nm</tt>.
+</div>
+<!--=========================================================================-->
+<h2><a name="build">How to build it</a></h2>
+<!--=========================================================================-->
+<div>
+  <p>You need to have gold with plugin support and build the LLVMgold
+plugin. Check whether you have gold running <tt>/usr/bin/ld -v</tt>. It will
+report “GNU gold” or else &#8220GNU ld” if not. If you have
+gold, check for plugin support by running <tt>/usr/bin/ld -plugin</tt>. If it
+complains &#8220missing argument&#8221 then you have plugin support. If not,
+such as an “unknown option” error then you will either need to
+build gold or install a version with plugin support.</p>
+<ul>
+  <li>To build gold with plugin support:
+    <pre class="doc_code">
+mkdir binutils
+cd binutils
+cvs -z 9 -d :pserver:anoncvs at sourceware.org:/cvs/src login
+<em>{enter "anoncvs" as the password}</em>
+cvs -z 9 -d :pserver:anoncvs at sourceware.org:/cvs/src co binutils
+mkdir build
+cd build
+../src/configure --enable-gold --enable-plugins
+make all-gold
+</pre>
+    That should leave you with <tt>binutils/build/gold/ld-new</tt> which supports the <tt>-plugin</tt> option. It also built would have
+<tt>binutils/build/binutils/ar</tt> and <tt>nm-new</tt> which support plugins
+but don't have a visible -plugin option, instead relying on the gold plugin
+being present in <tt>../lib/bfd-plugins</tt> relative to where the binaries are
+placed.
+    <li>Build the LLVMgold plugin: Configure LLVM with
+    <tt>--with-binutils-include=/path/to/binutils/src/include</tt> and run
+    <tt>make</tt>.
+</ul>
+</div>
+<!--=========================================================================-->
+<h2><a name="usage">Usage</a></h2>
+<!--=========================================================================-->
+<div>
+
+  <p>The linker takes a <tt>-plugin</tt> option that points to the path of
+  the plugin <tt>.so</tt> file. To find out what link command <tt>gcc</tt>
+  would run in a given situation, run <tt>gcc -v <em>[...]</em></tt> and look
+  for the line where it runs <tt>collect2</tt>. Replace that with
+  <tt>ld-new -plugin /path/to/LLVMgold.so</tt> to test it out. Once you're
+  ready to switch to using gold, backup your existing <tt>/usr/bin/ld</tt>
+  then replace it with <tt>ld-new</tt>.</p>
+
+  <p>You can produce bitcode files from <tt>clang</tt> using
+  <tt>-emit-llvm</tt> or <tt>-flto</tt>, or the <tt>-O4</tt> flag which is
+  synonymous with <tt>-O3 -flto</tt>.</p>
+
+  <p>Any of these flags will also cause <tt>clang</tt> to look for the
+  gold plugin in the <tt>lib</tt> directory under its prefix and pass the
+  <tt>-plugin</tt> option to <tt>ld</tt>. It will not look for an alternate
+  linker, which is why you need gold to be the installed system linker in
+  your path.</p>
+
+  <p>If you want <tt>ar</tt> and <tt>nm</tt> to work seamlessly as well, install
+  <tt>LLVMgold.so</tt> to <tt>/usr/lib/bfd-plugins</tt>. If you built your
+  own gold, be sure to install the <tt>ar</tt> and <tt>nm-new</tt> you built to
+  <tt>/usr/bin</tt>.<p>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="example1">Example of link time optimization</a>
+</h3>
+
+<div>
+  <p>The following example shows a worked example of the gold plugin mixing
+  LLVM bitcode and native code.
+<pre class="doc_code">
+--- a.c ---
+#include <stdio.h>
+
+extern void foo1(void);
+extern void foo4(void);
+
+void foo2(void) {
+  printf("Foo2\n");
+}
+
+void foo3(void) {
+  foo4();
+}
+
+int main(void) {
+  foo1();
+}
+
+--- b.c ---
+#include <stdio.h>
+
+extern void foo2(void);
+
+void foo1(void) {
+  foo2();
+}
+
+void foo4(void) {
+  printf("Foo4");
+}
+
+--- command lines ---
+$ clang -flto a.c -c -o a.o      # <-- a.o is LLVM bitcode file
+$ ar q a.a a.o                   # <-- a.a is an archive with LLVM bitcode
+$ clang b.c -c -o b.o            # <-- b.o is native object file
+$ clang -flto a.a b.o -o main    # <-- link with LLVMgold plugin
+</pre>
+
+  <p>Gold informs the plugin that foo3 is never referenced outside the IR,
+  leading LLVM to delete that function. However, unlike in the
+  <a href="LinkTimeOptimization.html#example1">libLTO
+  example</a> gold does not currently eliminate foo4.</p>
+</div>
+
+</div>
+
+<!--=========================================================================-->
+<h2>
+  <a name="lto_autotools">
+    Quickstart for using LTO with autotooled projects
+  </a>
+</h2>
+<!--=========================================================================-->
+<div>
+  <p>Once your system <tt>ld</tt>, <tt>ar</tt>, and <tt>nm</tt> all support LLVM
+     bitcode, everything is in place for an easy to use LTO build of autotooled
+     projects:</p>
+
+  <ul>
+    <li>Follow the instructions <a href="#build">on how to build LLVMgold.so</a>.</li>
+    <li>Install the newly built binutils to <tt>$PREFIX</tt></li>
+    <li>Copy <tt>Release/lib/LLVMgold.so</tt> to
+        <tt>$PREFIX/lib/bfd-plugins/</tt></li>
+    <li>Set environment variables (<tt>$PREFIX</tt> is where you installed clang and
+        binutils):
+<pre class="doc_code">
+export CC="$PREFIX/bin/clang -flto"
+export CXX="$PREFIX/bin/clang++ -flto"
+export AR="$PREFIX/bin/ar"
+export NM="$PREFIX/bin/nm"
+export RANLIB=/bin/true #ranlib is not needed, and doesn't support .bc files in .a
+export CFLAGS="-O4"
+</pre>
+     </li>
+     <li>Or you can just set your path:
+<pre class="doc_code">
+export PATH="$PREFIX/bin:$PATH"
+export CC="clang -flto"
+export CXX="clang++ -flto"
+export RANLIB=/bin/true
+export CFLAGS="-O4"
+</pre></li>
+     <li>Configure & build the project as usual:
+<pre class="doc_code">
+% ./configure && make && make check
+</pre></li>
+   </ul>
+
+   <p>The environment variable settings may work for non-autotooled projects
+      too, but you may need to set the <tt>LD</tt> environment variable as
+      well.</p>
+</div>
+
+<!--=========================================================================-->
+<h2><a name="licensing">Licensing</a></h2>
+<!--=========================================================================-->
+<div>
+  <p>Gold is licensed under the GPLv3. LLVMgold uses the interface file
+<tt>plugin-api.h</tt> from gold which means that the resulting LLVMgold.so
+binary is also GPLv3. This can still be used to link non-GPLv3 programs just
+as much as gold could without the plugin.</p>
+</div>
+
+<!-- *********************************************************************** -->
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+  <a href="mailto:nicholas at metrix.on.ca">Nick Lewycky</a><br>
+  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date: 2010-04-16 23:58:21 -0800 (Fri, 16 Apr 2010) $
+</address>
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2000-11-18-EarlyDesignIdeas.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2000-11-18-EarlyDesignIdeas.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2000-11-18-EarlyDesignIdeas.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2000-11-18-EarlyDesignIdeas.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,74 @@
+Date: Sat, 18 Nov 2000 09:19:35 -0600 (CST)
+From: Vikram Adve <vadve at cs.uiuc.edu>
+To: Chris Lattner <lattner at cs.uiuc.edu>
+Subject: a few thoughts
+
+I've been mulling over the virtual machine problem and I had some
+thoughts about some things for us to think about discuss:
+
+1. We need to be clear on our goals for the VM.  Do we want to emphasize
+   portability and safety like the Java VM?  Or shall we focus on the
+   architecture interface first (i.e., consider the code generation and
+   processor issues), since the architecture interface question is also
+   important for portable Java-type VMs?
+
+   This is important because the audiences for these two goals are very
+   different.  Architects and many compiler people care much more about
+   the second question.  The Java compiler and OS community care much more
+   about the first one.
+
+   Also, while the architecture interface question is important for
+   Java-type VMs, the design constraints are very different.
+
+
+2. Design issues to consider (an initial list that we should continue
+   to modify).  Note that I'm not trying to suggest actual solutions here,
+   but just various directions we can pursue:
+
+   a. A single-assignment VM, which we've both already been thinking about.
+
+   b. A strongly-typed VM.  One question is do we need the types to be
+      explicitly declared or should they be inferred by the dynamic compiler?
+
+   c. How do we get more high-level information into the VM while keeping
+      to a low-level VM design?
+
+        o  Explicit array references as operands?  An alternative is
+           to have just an array type, and let the index computations be
+           separate 3-operand instructions.
+
+        o  Explicit instructions to handle aliasing, e.g.s:
+           -- an instruction to say "I speculate that these two values are not
+              aliased, but check at runtime", like speculative execution in
+              EPIC?
+           -- or an instruction to check whether two values are aliased and
+              execute different code depending on the answer, somewhat like
+              predicated code in EPIC
+
+        o  (This one is a difficult but powerful idea.)
+           A "thread-id" field on every instruction that allows the static
+           compiler to generate a set of parallel threads, and then have
+           the runtime compiler and hardware do what they please with it.
+           This has very powerful uses, but thread-id on every instruction
+           is expensive in terms of instruction size and code size.
+           We would need to compactly encode it somehow.
+
+           Also, this will require some reading on at least two other
+           projects:
+                -- Multiscalar architecture from Wisconsin
+                -- Simultaneous multithreading architecture from Washington
+
+        o  Or forget all this and stick to a traditional instruction set?
+
+
+BTW, on an unrelated note, after the meeting yesterday, I did remember
+that you had suggested doing instruction scheduling on SSA form instead
+of a dependence DAG earlier in the semester.  When we talked about
+it yesterday, I didn't remember where the idea had come from but I
+remembered later.  Just giving credit where its due...
+
+Perhaps you can save the above as a file under RCS so you and I can
+continue to expand on this.
+
+--Vikram
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2000-11-18-EarlyDesignIdeasResp.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2000-11-18-EarlyDesignIdeasResp.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2000-11-18-EarlyDesignIdeasResp.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2000-11-18-EarlyDesignIdeasResp.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,199 @@
+Date: Sun, 19 Nov 2000 16:23:57 -0600 (CST)
+From: Chris Lattner <sabre at nondot.org>
+To: Vikram Adve <vadve at cs.uiuc.edu>
+Subject: Re: a few thoughts
+
+Okay... here are a few of my thoughts on this (it's good to know that we
+think so alike!):
+
+> 1. We need to be clear on our goals for the VM.  Do we want to emphasize
+>    portability and safety like the Java VM?  Or shall we focus on the
+>    architecture interface first (i.e., consider the code generation and
+>    processor issues), since the architecture interface question is also
+>    important for portable Java-type VMs?
+
+I forsee the architecture looking kinda like this: (which is completely
+subject to change)
+
+1. The VM code is NOT guaranteed safe in a java sense.  Doing so makes it
+   basically impossible to support C like languages.  Besides that,
+   certifying a register based language as safe at run time would be a
+   pretty expensive operation to have to do.  Additionally, we would like
+   to be able to statically eliminate many bounds checks in Java
+   programs... for example.
+
+ 2. Instead, we can do the following (eventually): 
+   * Java bytecode is used as our "safe" representation (to avoid
+     reinventing something that we don't add much value to).  When the
+     user chooses to execute Java bytecodes directly (ie, not
+     precompiled) the runtime compiler can do some very simple
+     transformations (JIT style) to convert it into valid input for our
+     VM.  Performance is not wonderful, but it works right.
+   * The file is scheduled to be compiled (rigorously) at a later
+     time.  This could be done by some background process or by a second
+     processor in the system during idle time or something...
+   * To keep things "safe" ie to enforce a sandbox on Java/foreign code,
+     we could sign the generated VM code with a host specific private
+     key.  Then before the code is executed/loaded, we can check to see if
+     the trusted compiler generated the code.  This would be much quicker
+     than having to validate consistency (especially if bounds checks have
+     been removed, for example)
+
+>    This is important because the audiences for these two goals are very
+>    different.  Architects and many compiler people care much more about
+>    the second question.  The Java compiler and OS community care much more
+>    about the first one.
+
+3. By focusing on a more low level virtual machine, we have much more room
+   for value add.  The nice safe "sandbox" VM can be provided as a layer
+   on top of it.  It also lets us focus on the more interesting compilers
+   related projects.
+
+> 2. Design issues to consider (an initial list that we should continue
+>    to modify).  Note that I'm not trying to suggest actual solutions here,
+>    but just various directions we can pursue:
+
+Understood.  :)
+
+>    a. A single-assignment VM, which we've both already been thinking
+>       about.
+
+Yup, I think that this makes a lot of sense.  I am still intrigued,
+however, by the prospect of a minimally allocated VM representation... I
+think that it could have definite advantages for certain applications
+(think very small machines, like PDAs).  I don't, however, think that our
+initial implementations should focus on this.  :)
+
+Here are some other auxiliary goals that I think we should consider:
+
+1. Primary goal: Support a high performance dynamic compilation
+   system.  This means that we have an "ideal" division of labor between
+   the runtime and static compilers.  Of course, the other goals of the
+   system somewhat reduce the importance of this point (f.e. portability
+   reduces performance, but hopefully not much)
+2. Portability to different processors.  Since we are most familiar with
+   x86 and solaris, I think that these two are excellent candidates when
+   we get that far...
+3. Support for all languages & styles of programming (general purpose
+   VM).  This is the point that disallows java style bytecodes, where all
+   array refs are checked for bounds, etc...
+4. Support linking between different language families.  For example, call
+   C functions directly from Java without using the nasty/slow/gross JNI
+   layer.  This involves several subpoints:
+  A. Support for languages that require garbage collectors and integration
+     with languages that don't.  As a base point, we could insist on
+     always using a conservative GC, but implement free as a noop, f.e.
+
+>    b. A strongly-typed VM.  One question is do we need the types to be
+>       explicitly declared or should they be inferred by the dynamic
+>       compiler?
+
+  B. This is kind of similar to another idea that I have: make OOP
+     constructs (virtual function tables, class heirarchies, etc) explicit
+     in the VM representation.  I believe that the number of additional
+     constructs would be fairly low, but would give us lots of important
+     information... something else that would/could be important is to
+     have exceptions as first class types so that they would be handled in
+     a uniform way for the entire VM... so that C functions can call Java
+     functions for example...
+
+>    c. How do we get more high-level information into the VM while keeping
+>       to a low-level VM design?
+>       o  Explicit array references as operands?  An alternative is
+>          to have just an array type, and let the index computations be
+>          separate 3-operand instructions.
+
+   C. In the model I was thinking of (subject to change of course), we
+      would just have an array type (distinct from the pointer
+      types).  This would allow us to have arbitrarily complex index
+      expressions, while still distinguishing "load" from "Array load",
+      for example.  Perhaps also, switch jump tables would be first class
+      types as well?  This would allow better reasoning about the program.
+
+5. Support dynamic loading of code from various sources.  Already
+   mentioned above was the example of loading java bytecodes, but we want
+   to support dynamic loading of VM code as well.  This makes the job of
+   the runtime compiler much more interesting:  it can do interprocedural
+   optimizations that the static compiler can't do, because it doesn't
+   have all of the required information (for example, inlining from
+   shared libraries, etc...)
+
+6. Define a set of generally useful annotations to add to the VM
+   representation.  For example, a function can be analysed to see if it
+   has any sideeffects when run... also, the MOD/REF sets could be
+   calculated, etc... we would have to determine what is reasonable.  This
+   would generally be used to make IP optimizations cheaper for the
+   runtime compiler...
+
+>       o  Explicit instructions to handle aliasing, e.g.s:
+>            -- an instruction to say "I speculate that these two values are not
+>               aliased, but check at runtime", like speculative execution in
+>             EPIC?
+>          -- or an instruction to check whether two values are aliased and
+>             execute different code depending on the answer, somewhat like
+>             predicated code in EPIC
+
+These are also very good points... if this can be determined at compile
+time.  I think that an epic style of representation (not the instruction
+packing, just the information presented) could be a very interesting model
+to use... more later...
+
+>         o  (This one is a difficult but powerful idea.)
+>          A "thread-id" field on every instruction that allows the static
+>          compiler to generate a set of parallel threads, and then have
+>          the runtime compiler and hardware do what they please with it.
+>          This has very powerful uses, but thread-id on every instruction
+>          is expensive in terms of instruction size and code size.
+>          We would need to compactly encode it somehow.
+
+Yes yes yes!  :)  I think it would be *VERY* useful to include this kind
+of information (which EPIC architectures *implicitly* encode.  The trend
+that we are seeing supports this greatly:
+
+1. Commodity processors are getting massive SIMD support:
+   * Intel/Amd MMX/MMX2
+   * AMD's 3Dnow!
+   * Intel's SSE/SSE2
+   * Sun's VIS
+2. SMP is becoming much more common, especially in the server space.
+3. Multiple processors on a die are right around the corner.
+
+If nothing else, not designing this in would severely limit our future
+expansion of the project...
+
+>          Also, this will require some reading on at least two other
+>          projects:
+>               -- Multiscalar architecture from Wisconsin
+>               -- Simultaneous multithreading architecture from Washington
+>
+>       o  Or forget all this and stick to a traditional instruction set?
+
+Heh... :)  Well, from a pure research point of view, it is almost more
+attactive to go with the most extreme/different ISA possible.  On one axis
+you get safety and conservatism, and on the other you get degree of
+influence that the results have.  Of course the problem with pure research
+is that often times there is no concrete product of the research... :)
+
+> BTW, on an unrelated note, after the meeting yesterday, I did remember
+> that you had suggested doing instruction scheduling on SSA form instead
+> of a dependence DAG earlier in the semester.  When we talked about
+> it yesterday, I didn't remember where the idea had come from but I
+> remembered later.  Just giving credit where its due...
+
+:) Thanks.  
+
+> Perhaps you can save the above as a file under RCS so you and I can
+> continue to expand on this.
+
+I think it makes sense to do so when we get our ideas more formalized and
+bounce it back and forth a couple of times... then I'll do a more formal
+writeup of our goals and ideas.  Obviously our first implementation will
+not want to do all of the stuff that I pointed out above... be we will
+want to design the project so that we do not artificially limit ourselves
+at sometime in the future...
+
+Anyways, let me know what you think about these ideas... and if they sound
+reasonable...
+
+-Chris
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2000-12-06-EncodingIdea.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2000-12-06-EncodingIdea.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2000-12-06-EncodingIdea.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2000-12-06-EncodingIdea.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,30 @@
+From: Chris Lattner [mailto:sabre at nondot.org]
+Sent: Wednesday, December 06, 2000 6:41 PM
+To: Vikram S. Adve
+Subject: Additional idea with respect to encoding
+
+Here's another idea with respect to keeping the common case instruction
+size down (less than 32 bits ideally):
+
+Instead of encoding an instruction to operate on two register numbers,
+have it operate on two negative offsets based on the current register
+number.  Therefore, instead of using:
+
+r57 = add r55, r56  (r57 is the implicit dest register, of course)
+
+We could use:
+
+r57 = add -2, -1
+
+My guess is that most SSA references are to recent values (especially if
+they correspond to expressions like (x+y*z+p*q/ ...), so the negative
+numbers would tend to stay small, even at the end of the procedure (where
+the implicit register destination number could be quite large).  Of course
+the negative sign is reduntant, so you would be storing small integers
+almost all of the time, and 5-6 bits worth of register number would be
+plenty for most cases...
+
+What do you think?
+
+-Chris
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2000-12-06-MeetingSummary.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2000-12-06-MeetingSummary.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2000-12-06-MeetingSummary.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2000-12-06-MeetingSummary.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,83 @@
+SUMMARY
+-------
+
+We met to discuss the LLVM instruction format and bytecode representation:
+
+ISSUES RESOLVED
+---------------
+
+1. We decided that we shall use a flat namespace to represent our 
+   variables in SSA form, as opposed to having a two dimensional namespace
+   of the original variable and the SSA instance subscript.
+
+ARGUMENT AGAINST:
+   * A two dimensional namespace would be valuable when doing alias 
+     analysis because the extra information can help limit the scope of
+     analysis.
+
+ARGUMENT FOR:
+   * Including this information would require that all users of the LLVM
+     bytecode would have to parse and handle it.  This would slow down the
+     common case and inflate the instruction representation with another
+     infinite variable space.
+
+REASONING:
+   * It was decided that because original variable sources could be
+     reconstructed from SSA form in linear time, that it would be an
+     unjustified expense for the common case to include the extra
+     information for one optimization.  Alias analysis itself is typically
+     greater than linear in asymptotic complexity, so this extra analaysis
+     would not affect the runtime of the optimization in a significant
+     way.  Additionally, this would be an unlikely optimization to do at
+     runtime.
+
+
+IDEAS TO CONSIDER
+-----------------
+
+1. Including dominator information in the LLVM bytecode
+   representation.  This is one example of an analysis result that may be
+   packaged with the bytecodes themselves.  As a conceptual implementation 
+   idea, we could include an immediate dominator number for each basic block
+   in the LLVM bytecode program.  Basic blocks could be numbered according
+   to the order of occurrence in the bytecode representation.
+
+2. Including loop header and body information.  This would facilitate
+   detection of intervals and natural loops.
+
+UNRESOLVED ISSUES 
+----------------- 
+
+1. Will oSUIF provide enough of an infrastructure to support the research
+   that we will be doing?  We know that it has less than stellar
+   performance, but hope that this will be of little importance for our
+   static compiler.  This could affect us if we decided to do some IP
+   research.  Also we do not yet understand the level of exception support
+   currently implemented.
+
+2. Should we consider the requirements of a direct hardware implementation
+   of the LLVM when we design it?  If so, several design issues should
+   have their priorities shifted.  The other option is to focus on a
+   software layer interpreting the LLVM in all cases.
+
+3. Should we use some form of packetized format to improve forward
+   compatibility?  For example, we could design the system to encode a
+   packet type and length field before analysis information, to allow a
+   runtime to skip information that it didn't understand in a bytecode
+   stream.  The obvious benefit would be for compatibility, the drawback
+   is that it would tend to splinter that 'standard' LLVM definition.
+
+4. Should we use fixed length instructions or variable length
+   instructions?  Fetching variable length instructions is expensive (for
+   either hardware or software based LLVM runtimes), but we have several
+   'infinite' spaces that instructions operate in (SSA register numbers,
+   type spaces, or packet length [if packets were implemented]).  Several
+   options were mentioned including: 
+     A. Using 16 or 32 bit numbers, which would be 'big enough'
+     B. A scheme similar to how UTF-8 works, to encode infinite numbers
+        while keeping small number small.
+     C. Use something similar to Huffman encoding, so that the most common
+        numbers are the smallest.
+
+-Chris
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-01-31-UniversalIRIdea.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-01-31-UniversalIRIdea.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-01-31-UniversalIRIdea.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-01-31-UniversalIRIdea.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,39 @@
+Date: Wed, 31 Jan 2001 12:04:33 -0600
+From: Vikram S. Adve <vadve at cs.uiuc.edu>
+To: Chris Lattner <lattner at cs.uiuc.edu>
+Subject: another thought
+
+I have a budding idea about making LLVM a little more ambitious: a
+customizable runtime system that can be used to implement language-specific
+virtual machines for many different languages.  E.g., a C vm, a C++ vm, a
+Java vm, a Lisp vm, ..
+
+The idea would be that LLVM would provide a standard set of runtime features
+(some low-level like standard assembly instructions with code generation and
+static and runtime optimization; some higher-level like type-safety and
+perhaps a garbage collection library).  Each language vm would select the
+runtime features needed for that language, extending or customizing them as
+needed.  Most of the machine-dependent code-generation and optimization
+features as well as low-level machine-independent optimizations (like PRE)
+could be provided by LLVM and should be sufficient for any language,
+simplifying the language compiler.  (This would also help interoperability
+between languages.)  Also, some or most of the higher-level
+machine-independent features like type-safety and access safety should be
+reusable by different languages, with minor extensions.  The language
+compiler could then focus on language-specific analyses and optimizations.
+
+The risk is that this sounds like a universal IR -- something that the
+compiler community has tried and failed to develop for decades, and is
+universally skeptical about.  No matter what we say, we won't be able to
+convince anyone that we have a universal IR that will work.  We need to
+think about whether LLVM is different or if has something novel that might
+convince people.  E.g., the idea of providing a package of separable
+features that different languages select from.  Also, using SSA with or
+without type-safety as the intermediate representation.
+
+One interesting starting point would be to discuss how a JVM would be
+implemented on top of LLVM a bit more.  That might give us clues on how to
+structure LLVM to support one or more language VMs.
+
+--Vikram
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebate.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebate.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebate.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebate.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,67 @@
+Date: Tue, 6 Feb 2001 20:27:37 -0600 (CST)
+From: Chris Lattner <sabre at nondot.org>
+To: Vikram S. Adve <vadve at cs.uiuc.edu>
+Subject: Type notation debate...
+
+This is the way that I am currently planning on implementing types:
+
+Primitive Types:        
+type ::= void|bool|sbyte|ubyte|short|ushort|int|uint|long|ulong
+
+Method:
+typelist ::= typelisth | /*empty*/
+typelisth ::= type | typelisth ',' type
+type ::= type (typelist)
+
+Arrays (without and with size):
+type ::= '[' type ']' | '[' INT ',' type ']'
+
+Pointer:
+type ::= type '*'
+
+Structure:
+type ::= '{' typelist '}'
+
+Packed:
+type ::= '<' INT ',' type '>'
+
+Simple examples:
+
+[[ %4, int ]]   - array of (array of 4 (int))
+[ { int, int } ] - Array of structure
+[ < %4, int > ] - Array of 128 bit SIMD packets
+int (int, [[int, %4]])  - Method taking a 2d array and int, returning int
+
+
+Okay before you comment, please look at:
+
+http://www.research.att.com/~bs/devXinterview.html
+
+Search for "In another interview, you defined the C declarator syntax as
+an experiment that failed. However, this syntactic construct has been
+around for 27 years and perhaps more; why do you consider it problematic
+(except for its cumbersome syntax)?" and read that response for me.  :)
+
+Now with this syntax, his example would be represented as:
+
+[ %10, bool (int, int) * ] *
+
+vs 
+
+bool (*(*)[10])(int, int)
+
+in C.
+
+Basically, my argument for this type construction system is that it is
+VERY simple to use and understand (although it IS different than C, it is
+very simple and straightforward, which C is NOT).  In fact, I would assert
+that most programmers TODAY do not understand pointers to member
+functions, and have to look up an example when they have to write them.
+
+In my opinion, it is critically important to have clear and concise type
+specifications, because types are going to be all over the programs.
+
+Let me know your thoughts on this.  :)
+
+-Chris
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebateResp1.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebateResp1.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebateResp1.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebateResp1.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,75 @@
+Date: Thu, 8 Feb 2001 08:42:04 -0600
+From: Vikram S. Adve <vadve at cs.uiuc.edu>
+To: Chris Lattner <sabre at nondot.org>
+Subject: RE: Type notation debate...
+
+Chris,
+
+> Okay before you comment, please look at:
+>
+> http://www.research.att.com/~bs/devXinterview.html
+
+I read this argument.  Even before that, I was already in agreement with you
+and him that the C declarator syntax is difficult and confusing.
+
+But in fact, if you read the entire answer carefully, he came to the same
+conclusion I do: that you have to go with familiar syntax over logical
+syntax because familiarity is such a strong force:
+
+        "However, familiarity is a strong force. To compare, in English, we
+live
+more or less happily with the absurd rules for "to be" (am, are, is, been,
+was, were, ...) and all attempts to simplify are treated with contempt or
+(preferably) humor. It be a curious world and it always beed."
+
+> Basically, my argument for this type construction system is that it is
+> VERY simple to use and understand (although it IS different than C, it is
+> very simple and straightforward, which C is NOT).  In fact, I would assert
+> that most programmers TODAY do not understand pointers to member
+> functions, and have to look up an example when they have to write them.
+
+Again, I don't disagree with this at all.  But to some extent this
+particular problem is inherently difficult.  Your syntax for the above
+example may be easier for you to read because this is the way you have been
+thinking about it.  Honestly, I don't find it much easier than the C syntax.
+In either case, I would have to look up an example to write pointers to
+member functions.
+
+But pointers to member functions are nowhere near as common as arrays.  And
+the old array syntax:
+        type [ int, int, ...]
+is just much more familiar and clear to people than anything new you
+introduce, no matter how logical it is.  Introducing a new syntax that may
+make function pointers easier but makes arrays much more difficult seems
+very risky to me.
+
+> In my opinion, it is critically important to have clear and concise type
+> specifications, because types are going to be all over the programs.
+
+I absolutely agree.  But the question is, what is more clear and concise?
+The syntax programmers are used to out of years of experience or a new
+syntax that they have never seen that has a more logical structure.  I think
+the answer is the former.  Sometimes, you have to give up a better idea
+because you can't overcome sociological barriers to it.  Qwerty keyboards
+and Windows are two classic examples of bad technology that are difficult to
+root out.
+
+P.S.  Also, while I agree that most your syntax is more logical, there is
+one part that isn't:
+
+Arrays (without and with size):
+type ::= '[' type ']' | '[' INT ',' type ']'.
+
+The arrays with size lists the dimensions and the type in a single list.
+That is just too confusing:
+        [10, 40, int]
+This seems to be a 3-D array where the third dimension is something strange.
+It is too confusing to have a list of 3 things, some of which are dimensions
+and one is a type.  Either of the following would be better:
+
+        array [10, 40] of int
+or
+        int [10, 40]
+
+--Vikram
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebateResp2.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebateResp2.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebateResp2.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebateResp2.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,53 @@
+Date: Thu, 8 Feb 2001 14:31:05 -0600 (CST)
+From: Chris Lattner <sabre at nondot.org>
+To: Vikram S. Adve <vadve at cs.uiuc.edu>
+Subject: RE: Type notation debate...
+
+> Arrays (without and with size):
+> type ::= '[' type ']' | '[' INT ',' type ']'.
+> 
+> The arrays with size lists the dimensions and the type in a single list.
+> That is just too confusing:
+
+>       [10, 40, int]
+> This seems to be a 3-D array where the third dimension is something strange.
+> It is too confusing to have a list of 3 things, some of which are dimensions
+> and one is a type. 
+
+The above grammar indicates that there is only one integer parameter, ie
+the upper bound.  The lower bound is always implied to be zero, for
+several reasons:
+
+* As a low level VM, we want to expose addressing computations
+  explicitly.  Since the lower bound must always be known in a high level
+  language statically, the language front end can do the translation
+  automatically.
+* This fits more closely with what Java needs, ie what we need in the
+  short term.  Java arrays are always zero based.
+
+If a two element list is too confusing, I would recommend an alternate
+syntax of:
+
+type ::= '[' type ']' | '[' INT 'x' type ']'.
+
+For example:
+  [12 x int]
+  [12x int]
+  [ 12 x [ 4x int ]]
+
+Which is syntactically nicer, and more explicit.
+
+> Either of the following would be better:
+>       array [10, 40] of int
+
+I considered this approach for arrays in general (ie array of int/ array
+of 12 int), but found that it made declarations WAY too long.  Remember
+that because of the nature of llvm, you get a lot of types strewn all over
+the program, and using the 'typedef' like facility is not a wonderful
+option, because then types aren't explicit anymore.
+
+I find this email interesting, because you contradict the previous email
+you sent, where you recommend that we stick to C syntax....
+
+-Chris
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebateResp4.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebateResp4.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebateResp4.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-06-TypeNotationDebateResp4.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,89 @@
+> But in fact, if you read the entire answer carefully, he came to the same
+> conclusion I do: that you have to go with familiar syntax over logical
+> syntax because familiarity is such a strong force:
+>       "However, familiarity is a strong force. To compare, in English, we
+live
+> more or less happily with the absurd rules for "to be" (am, are, is, been,
+> was, were, ...) and all attempts to simplify are treated with contempt or
+> (preferably) humor. It be a curious world and it always beed."
+
+Although you have to remember that his situation was considerably
+different than ours.  He was in a position where he was designing a high
+level language that had to be COMPATIBLE with C.  Our language is such
+that a new person would have to learn the new, different, syntax
+anyways.  Making them learn about the type system does not seem like much
+of a stretch from learning the opcodes and how SSA form works, and how
+everything ties together...
+
+> > Basically, my argument for this type construction system is that it is
+> > VERY simple to use and understand (although it IS different than C, it is
+> > very simple and straightforward, which C is NOT).  In fact, I would assert
+> > that most programmers TODAY do not understand pointers to member
+> > functions, and have to look up an example when they have to write them.
+
+> Again, I don't disagree with this at all.  But to some extent this
+> particular problem is inherently difficult.  Your syntax for the above
+> example may be easier for you to read because this is the way you have been
+> thinking about it.  Honestly, I don't find it much easier than the C syntax.
+> In either case, I would have to look up an example to write pointers to
+> member functions.
+
+I would argue that because the lexical structure of the language is self
+consistent, any person who spent a significant amount of time programming
+in LLVM directly would understand how to do it without looking it up in a
+manual.  The reason this does not work for C is because you rarely have to
+declare these pointers, and the syntax is inconsistent with the method
+declaration and calling syntax.
+
+> But pointers to member functions are nowhere near as common as arrays.
+
+Very true.  If you're implementing an object oriented language, however,
+remember that you have to do all the pointer to member function stuff
+yourself.... so every time you invoke a virtual method one is involved
+(instead of having C++ hide it for you behind "syntactic sugar").
+
+> And the old array syntax:
+>       type [ int, int, ...]
+> is just much more familiar and clear to people than anything new you
+> introduce, no matter how logical it is.  
+
+Erm... excuse me but how is this the "old array syntax"?  If you are
+arguing for consistency with C, you should be asking for 'type int []',
+which is significantly different than the above (beside the above
+introduces a new operator and duplicates information
+needlessly).  Basically what I am suggesting is exactly the above without
+the fluff.  So instead of:
+
+       type [ int, int, ...]
+
+you use:
+
+       type [ int ]
+
+> Introducing a new syntax that may
+> make function pointers easier but makes arrays much more difficult seems
+> very risky to me.
+
+This is not about function pointers.  This is about consistency in the
+type system, and consistency with the rest of the language.  The point
+above does not make arrays any more difficult to use, and makes the
+structure of types much more obvious than the "c way".
+
+> > In my opinion, it is critically important to have clear and concise type
+> > specifications, because types are going to be all over the programs.
+> 
+> I absolutely agree.  But the question is, what is more clear and concise?
+> The syntax programmers are used to out of years of experience or a new
+> syntax that they have never seen that has a more logical structure.  I think
+> the answer is the former.  Sometimes, you have to give up a better idea
+> because you can't overcome sociological barriers to it.  Qwerty keyboards
+> and Windows are two classic examples of bad technology that are difficult to
+> root out.
+
+Very true, but you seem to be advocating a completely different Type
+system than C has, in addition to it not offering the advantages of clear
+structure that the system I recommended does... so you seem to not have a
+problem with changing this, just with what I change it to.  :)
+
+-Chris
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-09-AdveComments.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-09-AdveComments.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-09-AdveComments.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-09-AdveComments.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,120 @@
+Ok, here are my comments and suggestions about the LLVM instruction set.
+We should discuss some now, but can discuss many of them later, when we
+revisit synchronization, type inference, and other issues.
+(We have discussed some of the comments already.)
+
+
+o  We should consider eliminating the type annotation in cases where it is
+   essentially obvious from the instruction type, e.g., in br, it is obvious
+   that the first arg. should be a bool and the other args should be labels:
+
+	br bool <cond>, label <iftrue>, label <iffalse>
+
+   I think your point was that making all types explicit improves clarity
+   and readability.  I agree to some extent, but it also comes at the cost
+   of verbosity.  And when the types are obvious from people's experience
+   (e.g., in the br instruction), it doesn't seem to help as much.
+
+
+o  On reflection, I really like your idea of having the two different switch
+   types (even though they encode implementation techniques rather than
+   semantics).  It should simplify building the CFG and my guess is it could
+   enable some significant optimizations, though we should think about which.
+
+
+o  In the lookup-indirect form of the switch, is there a reason not to make
+   the val-type uint?  Most HLL switch statements (including Java and C++)
+   require that anyway.  And it would also make the val-type uniform 
+   in the two forms of the switch.
+
+   I did see the switch-on-bool examples and, while cute, we can just use
+   the branch instructions in that particular case.
+
+
+o  I agree with your comment that we don't need 'neg'.
+
+
+o  There's a trade-off with the cast instruction:
+   +  it avoids having to define all the upcasts and downcasts that are
+      valid for the operands of each instruction  (you probably have thought
+      of other benefits also)
+   -  it could make the bytecode significantly larger because there could
+      be a lot of cast operations
+
+
+o  Making the second arg. to 'shl' a ubyte seems good enough to me.
+   255 positions seems adequate for several generations of machines
+   and is more compact than uint.
+
+
+o  I still have some major concerns about including malloc and free in the
+   language (either as builtin functions or instructions).  LLVM must be
+   able to represent code from many different languages.  Languages such as
+   C, C++ Java and Fortran 90 would not be able to use our malloc anyway
+   because each of them will want to provide a library implementation of it.
+
+   This gets even worse when code from different languages is linked
+   into a single executable (which is fairly common in large apps).
+   Having a single malloc would just not suffice, and instead would simply
+   complicate the picture further because it adds an extra variant in
+   addition to the one each language provides.
+
+   Instead, providing a default library version of malloc and free
+   (and perhaps a malloc_gc with garbage collection instead of free)
+   would make a good implementation available to anyone who wants it.
+
+   I don't recall all your arguments in favor so let's discuss this again,
+   and soon.
+
+
+o  'alloca' on the other hand sounds like a good idea, and the
+   implementation seems fairly language-independent so it doesn't have the
+   problems with malloc listed above.
+
+
+o  About indirect call:
+   Your option #2 sounded good to me.  I'm not sure I understand your
+   concern about an explicit 'icall' instruction?
+
+
+o  A pair of important synchronization instr'ns to think about:
+     load-linked
+     store-conditional
+
+
+o  Other classes of instructions that are valuable for pipeline performance:
+     conditional-move		 
+     predicated instructions
+
+
+o  I believe tail calls are relatively easy to identify; do you know why
+   .NET has a tailcall instruction?
+
+
+o  I agree that we need a static data space.  Otherwise, emulating global
+   data gets unnecessarily complex.
+
+
+o  About explicit parallelism:
+
+   We once talked about adding a symbolic thread-id field to each
+   instruction.  (It could be optional so single-threaded codes are
+   not penalized.)  This could map well to multi-threaded architectures
+   while providing easy ILP for single-threaded onces.  But it is probably
+   too radical an idea to include in a base version of LLVM.  Instead, it
+   could a great topic for a separate study.
+
+   What is the semantics of the IA64 stop bit?
+
+
+
+
+o  And finally, another thought about the syntax for arrays :-)
+
+   Although this syntax:
+	  array <dimension-list> of <type>
+   is verbose, it will be used only in the human-readable assembly code so
+   size should not matter.  I think we should consider it because I find it
+   to be the clearest syntax.  It could even make arrays of function
+   pointers somewhat readable.
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-09-AdveCommentsResponse.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-09-AdveCommentsResponse.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-09-AdveCommentsResponse.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-09-AdveCommentsResponse.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,245 @@
+From: Chris Lattner <sabre at nondot.org>
+To: "Vikram S. Adve" <vadve at cs.uiuc.edu>
+Subject: Re: LLVM Feedback
+
+I've included your feedback in the /home/vadve/lattner/llvm/docs directory
+so that it will live in CVS eventually with the rest of LLVM.  I've
+significantly updated the documentation to reflect the changes you
+suggested, as specified below:
+
+> We should consider eliminating the type annotation in cases where it is
+> essentially obvious from the instruction type:
+>        br bool <cond>, label <iftrue>, label <iffalse>
+> I think your point was that making all types explicit improves clarity
+> and readability.  I agree to some extent, but it also comes at the
+> cost of verbosity.  And when the types are obvious from people's
+> experience (e.g., in the br instruction), it doesn't seem to help as
+> much.
+
+Very true.  We should discuss this more, but my reasoning is more of a
+consistency argument.  There are VERY few instructions that can have all
+of the types eliminated, and doing so when available unnecessarily makes
+the language more difficult to handle.  Especially when you see 'int
+%this' and 'bool %that' all over the place, I think it would be
+disorienting to see:
+
+  br %predicate, %iftrue, %iffalse
+
+for branches.  Even just typing that once gives me the creeps. ;)  Like I
+said, we should probably discuss this further in person...
+
+> On reflection, I really like your idea of having the two different
+> switch types (even though they encode implementation techniques rather
+> than semantics).  It should simplify building the CFG and my guess is it
+> could enable some significant optimizations, though we should think
+> about which.
+
+Great.  I added a note to the switch section commenting on how the VM
+should just use the instruction type as a hint, and that the
+implementation may choose altermate representations (such as predicated
+branches).
+
+> In the lookup-indirect form of the switch, is there a reason not to
+> make the val-type uint?
+
+No.  This was something I was debating for a while, and didn't really feel
+strongly about either way.  It is common to switch on other types in HLL's
+(for example signed int's are particularly common), but in this case, all
+that will be added is an additional 'cast' instruction.  I removed that
+from the spec.
+
+> I agree with your comment that we don't need 'neg'
+
+Removed.
+
+> There's a trade-off with the cast instruction:
+>  +  it avoids having to define all the upcasts and downcasts that are
+>     valid for the operands of each instruction  (you probably have
+>     thought of other benefits also)
+>  -  it could make the bytecode significantly larger because there could
+>     be a lot of cast operations
+
+ + You NEED casts to represent things like:
+    void foo(float);
+    ...
+    int x;
+    ...
+    foo(x);
+   in a language like C.  Even in a Java like language, you need upcasts
+   and some way to implement dynamic downcasts.
+ + Not all forms of instructions take every type (for example you can't
+   shift by a floating point number of bits), thus SOME programs will need
+   implicit casts.
+
+To be efficient and to avoid your '-' point above, we just have to be
+careful to specify that the instructions shall operate on all common
+types, therefore casting should be relatively uncommon.  For example all
+of the arithmetic operations work on almost all data types.
+
+> Making the second arg. to 'shl' a ubyte seems good enough to me.
+> 255 positions seems adequate for several generations of machines
+
+Okay, that comment is removed.
+
+> and is more compact than uint.
+
+No, it isn't.  Remember that the bytecode encoding saves value slots into
+the bytecode instructions themselves, not constant values.  This is
+another case where we may introduce more cast instructions (but we will
+also reduce the number of opcode variants that must be supported by a
+virtual machine).  Because most shifts are by constant values, I don't
+think that we'll have to cast many shifts.  :)
+
+> I still have some major concerns about including malloc and free in the
+> language (either as builtin functions or instructions).
+
+Agreed.  How about this proposal:
+
+malloc/free are either built in functions or actual opcodes.  They provide
+all of the type safety that the document would indicate, blah blah
+blah. :)
+
+Now, because of all of the excellent points that you raised, an
+implementation may want to override the default malloc/free behavior of
+the program.  To do this, they simply implement a "malloc" and
+"free" function.  The virtual machine will then be defined to use the user
+defined malloc/free function (which return/take void*'s, not type'd
+pointers like the builtin function would) if one is available, otherwise
+fall back on a system malloc/free.
+
+Does this sound like a good compromise?  It would give us all of the
+typesafety/elegance in the language while still allowing the user to do
+all the cool stuff they want to...
+
+>  'alloca' on the other hand sounds like a good idea, and the
+>  implementation seems fairly language-independent so it doesn't have the
+>  problems with malloc listed above.
+
+Okay, once we get the above stuff figured out, I'll put it all in the
+spec.
+
+>  About indirect call:
+>  Your option #2 sounded good to me.  I'm not sure I understand your
+>  concern about an explicit 'icall' instruction?
+
+I worry too much.  :)  The other alternative has been removed. 'icall' is
+now up in the instruction list next to 'call'.
+
+> I believe tail calls are relatively easy to identify; do you know why
+> .NET has a tailcall instruction?
+
+Although I am just guessing, I believe it probably has to do with the fact
+that they want languages like Haskell and lisp to be efficiently runnable
+on their VM.  Of course this means that the VM MUST implement tail calls
+'correctly', or else life will suck.  :)  I would put this into a future
+feature bin, because it could be pretty handy...
+
+>  A pair of important synchronization instr'ns to think about:
+>    load-linked
+>    store-conditional
+
+What is 'load-linked'?  I think that (at least for now) I should add these
+to the 'possible extensions' section, because they are not immediately
+needed...
+
+> Other classes of instructions that are valuable for pipeline
+> performance:
+>    conditional-move            
+>    predicated instructions
+
+Conditional move is effectly a special case of a predicated
+instruction... and I think that all predicated instructions can possibly
+be implemented later in LLVM.  It would significantly change things, and
+it doesn't seem to be very necessary right now.  It would seem to
+complicate flow control analysis a LOT in the virtual machine.  I would
+tend to prefer that a predicated architecture like IA64 convert from a
+"basic block" representation to a predicated rep as part of it's dynamic
+complication phase.  Also, if a basic block contains ONLY a move, then
+that can be trivally translated into a conditional move...
+
+> I agree that we need a static data space.  Otherwise, emulating global
+> data gets unnecessarily complex.
+
+Definitely.  Also a later item though.  :)
+
+> We once talked about adding a symbolic thread-id field to each
+> ..
+> Instead, it could a great topic for a separate study.
+
+Agreed.  :)
+
+> What is the semantics of the IA64 stop bit?
+
+Basically, the IA64 writes instructions like this:
+mov ...
+add ...
+sub ...
+op xxx
+op xxx
+;;
+mov ...
+add ...
+sub ...
+op xxx
+op xxx
+;;
+
+Where the ;; delimits a group of instruction with no dependencies between
+them, which can all be executed concurrently (to the limits of the
+available functional units).  The ;; gets translated into a bit set in one
+of the opcodes.
+
+The advantages of this representation is that you don't have to do some
+kind of 'thread id scheduling' pass by having to specify ahead of time how
+many threads to use, and the representation doesn't have a per instruction
+overhead...
+
+> And finally, another thought about the syntax for arrays :-)
+>  Although this syntax:
+>         array <dimension-list> of <type>
+>  is verbose, it will be used only in the human-readable assembly code so
+>  size should not matter.  I think we should consider it because I find it
+>  to be the clearest syntax.  It could even make arrays of function
+>  pointers somewhat readable.
+
+My only comment will be to give you an example of why this is a bad
+idea.  :)
+
+Here is an example of using the switch statement (with my recommended
+syntax):
+
+switch uint %val, label %otherwise, 
+       [%3 x {uint, label}] [ { uint %57, label %l1 }, 
+                              { uint %20, label %l2 }, 
+                              { uint %14, label %l3 } ]
+
+Here it is with the syntax you are proposing:
+
+switch uint %val, label %otherwise, 
+       array %3 of {uint, label} 
+              array of {uint, label}
+                              { uint %57, label %l1 },
+                              { uint %20, label %l2 },
+                              { uint %14, label %l3 }
+
+Which is ambiguous and very verbose. It would be possible to specify
+constants with [] brackets as in my syntax, which would look like this:
+
+switch uint %val, label %otherwise,
+       array %3 of {uint, label}  [ { uint %57, label %l1 },
+                                    { uint %20, label %l2 },
+                                    { uint %14, label %l3 } ]
+
+But then the syntax is inconsistent between type definition and constant
+definition (why do []'s enclose the constants but not the types??).  
+
+Anyways, I'm sure that there is much debate still to be had over
+this... :)
+
+-Chris
+
+http://www.nondot.org/~sabre/os/
+http://www.nondot.org/MagicStats/
+http://korbit.sourceforge.net/
+
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-13-Reference-Memory.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-13-Reference-Memory.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-13-Reference-Memory.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-13-Reference-Memory.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,39 @@
+Date: Tue, 13 Feb 2001 13:29:52 -0600 (CST)
+From: Chris Lattner <sabre at nondot.org>
+To: Vikram S. Adve <vadve at cs.uiuc.edu>
+Subject: LLVM Concerns...
+
+
+I've updated the documentation to include load store and allocation
+instructions (please take a look and let me know if I'm on the right
+track):
+
+file:/home/vadve/lattner/llvm/docs/LangRef.html#memoryops
+
+I have a couple of concerns I would like to bring up:
+
+1. Reference types
+   Right now, I've spec'd out the language to have a pointer type, which
+   works fine for lots of stuff... except that Java really has
+   references: constrained pointers that cannot be manipulated: added and
+   subtracted, moved, etc... Do we want to have a type like this?  It
+   could be very nice for analysis (pointer always points to the start of
+   an object, etc...) and more closely matches Java semantics.  The
+   pointer type would be kept for C++ like semantics.  Through analysis,
+   C++ pointers could be promoted to references in the LLVM
+   representation.
+
+2. Our "implicit" memory references in assembly language:
+   After thinking about it, this model has two problems:
+      A. If you do pointer analysis and realize that two stores are
+         independent and can share the same memory source object, there is
+         no way to represent this in either the bytecode or assembly.
+      B. When parsing assembly/bytecode, we effectively have to do a full
+         SSA generation/PHI node insertion pass to build the dependencies
+         when we don't want the "pinned" representation.  This is not
+         cool.
+   I'm tempted to make memory references explicit in both the assembly and
+   bytecode to get around this... what do you think?
+
+-Chris
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-13-Reference-MemoryResponse.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-13-Reference-MemoryResponse.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-13-Reference-MemoryResponse.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-02-13-Reference-MemoryResponse.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,47 @@
+Date: Tue, 13 Feb 2001 18:25:42 -0600
+From: Vikram S. Adve <vadve at cs.uiuc.edu>
+To: Chris Lattner <sabre at nondot.org>
+Subject: RE: LLVM Concerns...
+
+> 1. Reference types
+>    Right now, I've spec'd out the language to have a pointer type, which
+>    works fine for lots of stuff... except that Java really has
+>    references: constrained pointers that cannot be manipulated: added and
+>    subtracted, moved, etc... Do we want to have a type like this?  It
+>    could be very nice for analysis (pointer always points to the start of
+>    an object, etc...) and more closely matches Java semantics.  The
+>    pointer type would be kept for C++ like semantics.  Through analysis,
+>    C++ pointers could be promoted to references in the LLVM
+>    representation.
+
+
+You're right, having references would be useful.  Even for C++ the *static*
+compiler could generate references instead of pointers with fairly
+straightforward analysis.  Let's include a reference type for now.  But I'm
+also really concerned that LLVM is becoming big and complex and (perhaps)
+too high-level.  After we get some initial performance results, we may have
+a clearer idea of what our goals should be and we should revisit this
+question then.
+
+> 2. Our "implicit" memory references in assembly language:
+>    After thinking about it, this model has two problems:
+>       A. If you do pointer analysis and realize that two stores are
+>          independent and can share the same memory source object,
+
+not sure what you meant by "share the same memory source object"
+
+> there is
+>          no way to represent this in either the bytecode or assembly.
+>       B. When parsing assembly/bytecode, we effectively have to do a full
+>          SSA generation/PHI node insertion pass to build the dependencies
+>          when we don't want the "pinned" representation.  This is not
+>          cool.
+
+I understand the concern.  But again, let's focus on the performance first
+and then look at the language design issues.  E.g., it would be good to know
+how big the bytecode files are before expanding them further.  I am pretty
+keen to explore the implications of LLVM for mobile devices.  Both bytecode
+size and power consumption are important to consider there.
+
+--Vikram
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-04-16-DynamicCompilation.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-04-16-DynamicCompilation.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-04-16-DynamicCompilation.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-04-16-DynamicCompilation.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,49 @@
+By Chris:
+
+LLVM has been designed with two primary goals in mind.  First we strive to 
+enable the best possible division of labor between static and dynamic 
+compilers, and second, we need a flexible and powerful interface 
+between these two complementary stages of compilation.  We feel that 
+providing a solution to these two goals will yield an excellent solution 
+to the performance problem faced by modern architectures and programming 
+languages.
+
+A key insight into current compiler and runtime systems is that a 
+compiler may fall in anywhere in a "continuum of compilation" to do its 
+job.  On one side, scripting languages statically compile nothing and 
+dynamically compile (or equivalently, interpret) everything.  On the far 
+other side, traditional static compilers process everything statically and 
+nothing dynamically.  These approaches have typically been seen as a 
+tradeoff between performance and portability.  On a deeper level, however, 
+there are two reasons that optimal system performance may be obtained by a
+system somewhere in between these two extremes: Dynamic application 
+behavior and social constraints.
+
+From a technical perspective, pure static compilation cannot ever give 
+optimal performance in all cases, because applications have varying dynamic
+behavior that the static compiler cannot take into consideration.  Even 
+compilers that support profile guided optimization generate poor code in 
+the real world, because using such optimization tunes that application 
+to one particular usage pattern, whereas real programs (as opposed to 
+benchmarks) often have several different usage patterns.
+
+On a social level, static compilation is a very shortsighted solution to 
+the performance problem.  Instruction set architectures (ISAs) continuously 
+evolve, and each implementation of an ISA (a processor) must choose a set 
+of tradeoffs that make sense in the market context that it is designed for.  
+With every new processor introduced, the vendor faces two fundamental 
+problems: First, there is a lag time between when a processor is introduced 
+to when compilers generate quality code for the architecture.  Secondly, 
+even when compilers catch up to the new architecture there is often a large 
+body of legacy code that was compiled for previous generations and will 
+not or can not be upgraded.  Thus a large percentage of code running on a 
+processor may be compiled quite sub-optimally for the current 
+characteristics of the dynamic execution environment.
+
+For these reasons, LLVM has been designed from the beginning as a long-term 
+solution to these problems.  Its design allows the large body of platform 
+independent, static, program optimizations currently in compilers to be 
+reused unchanged in their current form.  It also provides important static 
+type information to enable powerful dynamic and link time optimizations 
+to be performed quickly and efficiently.  This combination enables an 
+increase in effective system performance for real world environments.

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-05-18-ExceptionHandling.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-05-18-ExceptionHandling.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-05-18-ExceptionHandling.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-05-18-ExceptionHandling.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,202 @@
+Meeting notes: Implementation idea: Exception Handling in C++/Java
+
+The 5/18/01 meeting discussed ideas for implementing exceptions in LLVM.
+We decided that the best solution requires a set of library calls provided by
+the VM, as well as an extension to the LLVM function invocation syntax.
+
+The LLVM function invocation instruction previously looks like this (ignoring
+types):
+
+  call func(arg1, arg2, arg3)
+
+The extension discussed today adds an optional "with" clause that 
+associates a label with the call site.  The new syntax looks like this:
+
+  call func(arg1, arg2, arg3) with funcCleanup
+
+This funcHandler always stays tightly associated with the call site (being
+encoded directly into the call opcode itself), and should be used whenever
+there is cleanup work that needs to be done for the current function if 
+an exception is thrown by func (or if we are in a try block).
+
+To support this, the VM/Runtime provide the following simple library 
+functions (all syntax in this document is very abstract):
+
+typedef struct { something } %frame;
+  The VM must export a "frame type", that is an opaque structure used to 
+  implement different types of stack walking that may be used by various
+  language runtime libraries. We imagine that it would be typical to 
+  represent a frame with a PC and frame pointer pair, although that is not 
+  required.
+
+%frame getStackCurrentFrame();
+  Get a frame object for the current function.  Note that if the current
+  function was inlined into its caller, the "current" frame will belong to
+  the "caller".
+
+bool isFirstFrame(%frame f);
+  Returns true if the specified frame is the top level (first activated) frame
+  for this thread.  For the main thread, this corresponds to the main() 
+  function, for a spawned thread, it corresponds to the thread function.
+
+%frame getNextFrame(%frame f);
+  Return the previous frame on the stack.  This function is undefined if f
+  satisfies the predicate isFirstFrame(f).
+
+Label *getFrameLabel(%frame f);
+  If a label was associated with f (as discussed below), this function returns
+  it.  Otherwise, it returns a null pointer.
+
+doNonLocalBranch(Label *L);
+  At this point, it is not clear whether this should be a function or 
+  intrinsic.  It should probably be an intrinsic in LLVM, but we'll deal with
+  this issue later.
+
+
+Here is a motivating example that illustrates how these facilities could be
+used to implement the C++ exception model:
+
+void TestFunction(...) {
+  A a; B b;
+  foo();        // Any function call may throw
+  bar();
+  C c;
+
+  try {
+    D d;
+    baz();
+  } catch (int) {
+    ...int Stuff...
+    // execution continues after the try block: the exception is consumed
+  } catch (double) {
+    ...double stuff...
+   throw;            // Exception is propogated
+  }
+}
+
+This function would compile to approximately the following code (heavy 
+pseudo code follows):
+
+Func:
+  %a = alloca A
+  A::A(%a)        // These ctors & dtors could throw, but we ignore this 
+  %b = alloca B   // minor detail for this example
+  B::B(%b)
+
+  call foo() with fooCleanup // An exception in foo is propogated to fooCleanup
+  call bar() with barCleanup // An exception in bar is propogated to barCleanup
+
+  %c = alloca C
+  C::C(c)
+  %d = alloca D
+  D::D(d)
+  call baz() with bazCleanup // An exception in baz is propogated to bazCleanup
+  d->~D();
+EndTry:                   // This label corresponds to the end of the try block
+  c->~C()       // These could also throw, these are also ignored
+  b->~B()
+  a->~A()
+  return
+
+Note that this is a very straight forward and literal translation: exactly
+what we want for zero cost (when unused) exception handling.  Especially on
+platforms with many registers (ie, the IA64) setjmp/longjmp style exception
+handling is *very* impractical.  Also, the "with" clauses describe the 
+control flow paths explicitly so that analysis is not adversly effected.
+
+The foo/barCleanup labels are implemented as:
+
+TryCleanup:          // Executed if an exception escapes the try block  
+  c->~C()
+barCleanup:          // Executed if an exception escapes from bar()
+  // fall through
+fooCleanup:          // Executed if an exception escapes from foo()
+  b->~B()
+  a->~A()
+  Exception *E = getThreadLocalException()
+  call throw(E)      // Implemented by the C++ runtime, described below
+
+Which does the work one would expect.  getThreadLocalException is a function
+implemented by the C++ support library.  It returns the current exception 
+object for the current thread.  Note that we do not attempt to recycle the 
+shutdown code from before, because performance of the mainline code is 
+critically important.  Also, obviously fooCleanup and barCleanup may be 
+merged and one of them eliminated.  This just shows how the code generator 
+would most likely emit code.
+
+The bazCleanup label is more interesting.  Because the exception may be caught
+by the try block, we must dispatch to its handler... but it does not exist
+on the call stack (it does not have a VM Call->Label mapping installed), so 
+we must dispatch statically with a goto.  The bazHandler thus appears as:
+
+bazHandler:
+  d->~D();    // destruct D as it goes out of scope when entering catch clauses
+  goto TryHandler
+
+In general, TryHandler is not the same as bazHandler, because multiple 
+function calls could be made from the try block.  In this case, trivial 
+optimization could merge the two basic blocks.  TryHandler is the code 
+that actually determines the type of exception, based on the Exception object
+itself.  For this discussion, assume that the exception object contains *at
+least*:
+
+1. A pointer to the RTTI info for the contained object
+2. A pointer to the dtor for the contained object
+3. The contained object itself
+
+Note that it is necessary to maintain #1 & #2 in the exception object itself
+because objects without virtual function tables may be thrown (as in this 
+example).  Assuming this, TryHandler would look something like this:
+
+TryHandler: 
+  Exception *E = getThreadLocalException();
+  switch (E->RTTIType) {
+  case IntRTTIInfo:
+    ...int Stuff...       // The action to perform from the catch block
+    break;
+  case DoubleRTTIInfo:
+    ...double Stuff...    // The action to perform from the catch block
+    goto TryCleanup       // This catch block rethrows the exception
+    break;                // Redundant, eliminated by the optimizer
+  default:
+    goto TryCleanup       // Exception not caught, rethrow
+  }
+
+  // Exception was consumed
+  if (E->dtor)
+    E->dtor(E->object)    // Invoke the dtor on the object if it exists
+  goto EndTry             // Continue mainline code...
+
+And that is all there is to it.
+
+The throw(E) function would then be implemented like this (which may be 
+inlined into the caller through standard optimization):
+
+function throw(Exception *E) {
+  // Get the start of the stack trace...
+  %frame %f = call getStackCurrentFrame()
+
+  // Get the label information that corresponds to it
+  label * %L = call getFrameLabel(%f)
+  while (%L == 0 && !isFirstFrame(%f)) {
+    // Loop until a cleanup handler is found
+    %f = call getNextFrame(%f)
+    %L = call getFrameLabel(%f)
+  }
+
+  if (%L != 0) {
+    call setThreadLocalException(E)   // Allow handlers access to this...
+    call doNonLocalBranch(%L)
+  }
+  // No handler found!
+  call BlowUp()         // Ends up calling the terminate() method in use
+}
+
+That's a brief rundown of how C++ exception handling could be implemented in
+llvm.  Java would be very similar, except it only uses destructors to unlock
+synchronized blocks, not to destroy data.  Also, it uses two stack walks: a
+nondestructive walk that builds a stack trace, then a destructive walk that
+unwinds the stack as shown here. 
+
+It would be trivial to get exception interoperability between C++ and Java.
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-05-19-ExceptionResponse.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-05-19-ExceptionResponse.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-05-19-ExceptionResponse.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-05-19-ExceptionResponse.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,45 @@
+Date: Sat, 19 May 2001 19:09:13 -0500 (CDT)
+From: Chris Lattner <sabre at nondot.org>
+To: Vikram S. Adve <vadve at cs.uiuc.edu>
+Subject: RE: Meeting writeup
+
+> I read it through and it looks great!
+
+Thanks!
+
+> The finally clause in Java may need more thought.  The code for this clause
+> is like a subroutine because it needs to be entered from many points (end of
+> try block and beginning of each catch block), and then needs to *return to
+> the place from where the code was entered*.  That's why JVM has the
+> jsr/jsr_w instruction.
+
+Hrm... I guess that is an implementation decision.  It can either be
+modelled as a subroutine (as java bytecodes do), which is really
+gross... or it can be modelled as code duplication (emitted once inline,
+then once in the exception path).  Because this could, at worst,
+slightly less than double the amount of code in a function (it is
+bounded) I don't think this is a big deal.  One of the really nice things
+about the LLVM representation is that it still allows for runtime code
+generation for exception paths (exceptions paths are not compiled until
+needed).  Obviously a static compiler couldn't do this though.  :)
+
+In this case, only one copy of the code would be compiled... until the
+other one is needed on demand.  Also this strategy fits with the "zero
+cost" exception model... the standard case is not burdened with extra
+branches or "call"s.
+
+> I suppose you could save the return address in a particular register
+> (specific to this finally block), jump to the finally block, and then at the
+> end of the finally block, jump back indirectly through this register.  It
+> will complicate building the CFG but I suppose that can be handled.  It is
+> also unsafe in terms of checking where control returns (which is I suppose
+> why the JVM doesn't use this).
+
+I think that a code duplication method would be cleaner, and would avoid
+the caveats that you mention.  Also, it does not slow down the normal case
+with an indirect branch...
+
+Like everything, we can probably defer a final decision until later.  :)
+
+-Chris
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-06-01-GCCOptimizations.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-06-01-GCCOptimizations.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-06-01-GCCOptimizations.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-06-01-GCCOptimizations.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,63 @@
+Date: Fri, 1 Jun 2001 16:38:17 -0500 (CDT)
+From: Chris Lattner <sabre at nondot.org>
+To: Vikram S. Adve <vadve at cs.uiuc.edu>
+Subject: Interesting: GCC passes
+
+
+Take a look at this document (which describes the order of optimizations
+that GCC performs):
+
+http://gcc.gnu.org/onlinedocs/gcc_17.html
+
+The rundown is that after RTL generation, the following happens:
+
+1 . [t] jump optimization (jumps to jumps, etc)
+2 . [t] Delete unreachable code
+3 .     Compute live ranges for CSE
+4 . [t] Jump threading (jumps to jumps with identical or inverse conditions)
+5 . [t] CSE
+6 . *** Conversion to SSA 
+7 . [t] SSA Based DCE
+8 . *** Conversion to LLVM
+9 .     UnSSA
+10.     GCSE
+11.     LICM
+12.     Strength Reduction
+13.     Loop unrolling
+14. [t] CSE
+15. [t] DCE
+16.     Instruction combination, register movement, scheduling... etc.
+
+I've marked optimizations with a [t] to indicate things that I believe to
+be relatively trivial to implement in LLVM itself.  The time consuming
+things to reimplement would be SSA based PRE, Strength reduction & loop
+unrolling... these would be the major things we would miss out on if we
+did LLVM creation from tree code [inlining and other high level
+optimizations are done on the tree representation].
+
+Given the lack of "strong" optimizations that would take a long time to
+reimplement, I am leaning a bit more towards creating LLVM from the tree
+code.  Especially given that SGI has GPL'd their compiler, including many
+SSA based optimizations that could be adapted (besides the fact that their
+code looks MUCH nicer than GCC :)
+
+Even if we choose to do LLVM code emission from RTL, we will almost
+certainly want to move LLVM emission from step 8 down until at least CSE
+has been rerun... which causes me to wonder if the SSA generation code
+will still work (due to global variable dependencies and stuff).  I assume
+that it can be made to work, but might be a little more involved than we
+would like.
+
+I'm continuing to look at the Tree -> RTL code.  It is pretty gross
+because they do some of the translation a statement at a time, and some
+of it a function at a time...  I'm not quite clear why and how the
+distinction is drawn, but it does not appear that there is a wonderful
+place to attach extra info.
+
+Anyways, I'm proceeding with the RTL -> LLVM conversion phase for now.  We
+can talk about this more on Monday.
+
+Wouldn't it be nice if there were a obvious decision to be made?  :)
+
+-Chris
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-06-01-GCCOptimizations2.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-06-01-GCCOptimizations2.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-06-01-GCCOptimizations2.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-06-01-GCCOptimizations2.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,71 @@
+Date: Fri, 1 Jun 2001 17:08:44 -0500 (CDT)
+From: Chris Lattner <sabre at nondot.org>
+To: Vikram S. Adve <vadve at cs.uiuc.edu>
+Subject: RE: Interesting: GCC passes
+
+> That is very interesting.  I agree that some of these could be done on LLVM
+> at link-time, but it is the extra time required that concerns me.  Link-time
+> optimization is severely time-constrained.
+
+If we were to reimplement any of these optimizations, I assume that we
+could do them a translation unit at a time, just as GCC does now.  This
+would lead to a pipeline like this:
+
+Static optimizations, xlation unit at a time:
+.c --GCC--> .llvm --llvmopt--> .llvm 
+
+Link time optimizations:
+.llvm --llvm-ld--> .llvm --llvm-link-opt--> .llvm 
+
+Of course, many optimizations could be shared between llvmopt and
+llvm-link-opt, but the wouldn't need to be shared...  Thus compile time
+could be faster, because we are using a "smarter" IR (SSA based).
+
+> BTW, about SGI, "borrowing" SSA-based optimizations from one compiler and
+> putting it into another is not necessarily easier than re-doing it.
+> Optimization code is usually heavily tied in to the specific IR they use.
+
+Understood.  The only reason that I brought this up is because SGI's IR is
+more similar to LLVM than it is different in many respects (SSA based,
+relatively low level, etc), and could be easily adapted.  Also their
+optimizations are written in C++ and are actually somewhat
+structured... of course it would be no walk in the park, but it would be
+much less time consuming to adapt, say, SSA-PRE than to rewrite it.
+
+> But your larger point is valid that adding SSA based optimizations is
+> feasible and should be fun.  (Again, link time cost is the issue.)
+
+Assuming linktime cost wasn't an issue, the question is: 
+Does using GCC's backend buy us anything?
+
+> It also occurs to me that GCC is probably doing quite a bit of back-end
+> optimization (step 16 in your list).  Do you have a breakdown of that?
+
+Not really.  The irritating part of GCC is that it mixes it all up and
+doesn't have a clean separation of concerns.  A lot of the "back end
+optimization" happens right along with other data optimizations (ie, CSE
+of machine specific things).
+
+As far as REAL back end optimizations go, it looks something like this:
+
+1. Instruction combination: try to make CISCy instructions, if available
+2. Register movement: try to get registers in the right places for the
+architecture to avoid register to register moves.  For example, try to get
+the first argument of a function to naturally land in %o0 for sparc.
+3. Instruction scheduling: 'nuff said :)
+4. Register class preferencing: ??
+5. Local register allocation
+6. global register allocation
+7. Spilling
+8. Local regalloc
+9. Jump optimization
+10. Delay slot scheduling
+11. Branch shorting for CISC machines
+12. Instruction selection & peephole optimization
+13. Debug info output
+
+But none of this would be usable for LLVM anyways, unless we were using
+GCC as a static compiler.
+
+-Chris
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-06-20-.NET-Differences.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-06-20-.NET-Differences.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-06-20-.NET-Differences.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-06-20-.NET-Differences.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,30 @@
+Date: Wed, 20 Jun 2001 12:32:22 -0500
+From: Vikram Adve <vadve at cs.uiuc.edu>
+To: Chris Lattner <lattner at cs.uiuc.edu>
+Subject: .NET vs. our VM
+
+One significant difference between .NET CLR and our VM is that the CLR
+includes full information about classes and inheritance.  In fact, I just
+sat through the paper on adding templates to .NET CLR, and the speaker
+indicated that the goal seems to be to do simple static compilation (very
+little lowering or optimization).  Also, the templates implementation in CLR
+"relies on dynamic class loading and JIT compilation".
+
+This is an important difference because I think there are some significant
+advantages to have a much lower level VM layer, and do significant static
+analysis and optimization.
+
+I also talked to the lead guy for KAI's C++ compiler (Arch Robison) and he
+said that SGI and other commercial compilers have included options to export
+their *IR* next to the object code (i.e., .il files) and use them for
+link-time code generation.  In fact, he said that the .o file was nearly
+empty and was entirely generated from the .il at link-time.  But he agreed
+that this limited the link-time interprocedural optimization to modules
+compiled by the same compiler, whereas our approach allows us to link and
+optimize modules from multiple different compilers.  (Also, of course, they
+don't do anything for runtime optimization).
+
+All issues to bring up in Related Work.
+
+--Vikram
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-07-06-LoweringIRForCodeGen.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-07-06-LoweringIRForCodeGen.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-07-06-LoweringIRForCodeGen.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-07-06-LoweringIRForCodeGen.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,31 @@
+Date: Fri, 6 Jul 2001 16:56:56 -0500
+From: Vikram S. Adve <vadve at cs.uiuc.edu>
+To: Chris Lattner <lattner at cs.uiuc.edu>
+Subject: lowering the IR
+
+BTW, I do think that we should consider lowering the IR as you said.  I
+didn't get time to raise it today, but it comes up with the SPARC
+move-conditional instruction.  I don't think we want to put that in the core
+VM -- it is a little too specialized.  But without a corresponding
+conditional move instruction in the VM, it is pretty difficult to maintain a
+close mapping between VM and machine code.  Other architectures may have
+other such instructions.
+
+What I was going to suggest was that for a particular processor, we define
+additional VM instructions that match some of the unusual opcodes on the
+processor but have VM semantics otherwise, i.e., all operands are in SSA
+form and typed.  This means that we can re-generate core VM code from the
+more specialized code any time we want (so that portability is not lost).
+
+Typically, a static compiler like gcc would generate just the core VM, which
+is relatively portable.  Anyone (an offline tool, the linker, etc., or even
+the static compiler itself if it chooses) can transform that into more
+specialized target-specific VM code for a particular architecture.  If the
+linker does it, it can do it after all machine-independent optimizations.
+This would be the most convenient, but not necessary.
+
+The main benefit of lowering will be that we will be able to retain a close
+mapping between VM and machine code.
+
+--Vikram
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2001-09-18-OptimizeExceptions.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2001-09-18-OptimizeExceptions.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2001-09-18-OptimizeExceptions.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2001-09-18-OptimizeExceptions.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,56 @@
+Date: Tue, 18 Sep 2001 00:38:37 -0500 (CDT)
+From: Chris Lattner <sabre at nondot.org>
+To: Vikram S. Adve <vadve at cs.uiuc.edu>
+Subject: Idea for a simple, useful link time optimization
+
+
+In C++ programs, exceptions suck, and here's why:
+
+1. In virtually all function calls, you must assume that the function
+   throws an exception, unless it is defined as 'nothrow'.  This means
+   that every function call has to have code to invoke dtors on objects
+   locally if one is thrown by the function.  Most functions don't throw
+   exceptions, so this code is dead [with all the bad effects of dead
+   code, including icache pollution].
+2. Declaring a function nothrow causes catch blocks to be added to every
+   call that isnot  provably nothrow.  This makes them very slow.
+3. Extra extraneous exception edges reduce the opportunity for code
+   motion.
+4. EH is typically implemented with large lookup tables.  Ours is going to
+   be much smaller (than the "standard" way of doing it) to start with,
+   but eliminating it entirely would be nice. :)
+5. It is physically impossible to correctly put (accurate, correct)
+   exception specifications on generic, templated code.  But it is trivial
+   to analyze instantiations of said code.
+6. Most large C++ programs throw few exceptions.  Most well designed
+   programs only throw exceptions in specific planned portions of the
+   code.
+
+Given our _planned_ model of handling exceptions, all of this would be
+pretty trivial to eliminate through some pretty simplistic interprocedural
+analysis.  The DCE factor alone could probably be pretty significant.  The
+extra code motion opportunities could also be exploited though...
+
+Additionally, this optimization can be implemented in a straight forward
+conservative manner, allowing libraries to be optimized or individual
+files even (if there are leaf functions visible in the translation unit
+that are called).
+
+I think it's a reasonable optimization that hasn't really been addressed
+(because assembly is way too low level for this), and could have decent
+payoffs... without being a overly complex optimization.
+
+After I wrote all of that, I found this page that is talking about
+basically the same thing I just wrote, except that it is translation unit
+at a time, tree based approach:
+http://www.ocston.org/~jls/ehopt.html
+
+but is very useful from "expected gain" and references perspective.  Note
+that their compiler is apparently unable to inline functions that use
+exceptions, so there numbers are pretty worthless... also our results
+would (hopefully) be better because it's interprocedural...
+
+What do you think?
+
+-Chris
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2002-05-12-InstListChange.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2002-05-12-InstListChange.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2002-05-12-InstListChange.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2002-05-12-InstListChange.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,55 @@
+Date: Sun, 12 May 2002 17:12:53 -0500 (CDT)
+From: Chris Lattner <sabre at nondot.org>
+To: "Vikram S. Adve" <vadve at cs.uiuc.edu>
+Subject: LLVM change
+
+There is a fairly fundemental change that I would like to make to the LLVM 
+infrastructure, but I'd like to know if you see any drawbacks that I 
+don't...
+
+Basically right now at the basic block level, each basic block contains an 
+instruction list (returned by getInstList()) that is a ValueHolder of 
+instructions.  To iterate over instructions, we must actually iterate over 
+the instlist, and access the instructions through the instlist.
+
+To add or remove an instruction from a basic block, we need to get an 
+iterator to an instruction, which, given just an Instruction*, requires a 
+linear search of the basic block the instruction is contained in... just 
+to insert an instruction before another instruction, or to delete an 
+instruction!  This complicates algorithms that should be very simple (like 
+simple constant propagation), because they aren't actually sparse anymore,
+they have to traverse basic blocks to remove constant propogated 
+instructions.
+
+Additionally, adding or removing instructions to a basic block 
+_invalidates all iterators_ pointing into that block, which is really 
+irritating.
+
+To fix these problems (and others), I would like to make the ordering of
+the instructions be represented with a doubly linked list in the
+instructions themselves, instead of an external data structure.  This is 
+how many other representations do it, and frankly I can't remember why I 
+originally implemented it the way I did.
+
+Long term, all of the code that depends on the nasty features in the 
+instruction list (which can be found by grep'ing for getInstList()) will 
+be changed to do nice local transformations.  In the short term, I'll 
+change the representation, but preserve the interface (including 
+getInstList()) so that all of the code doesn't have to change.
+
+Iteration over the instructions in a basic block remains the simple:
+for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I) ...
+
+But we will also support:
+for (Instruction *I = BB->front(); I; I = I->getNext()) ...
+
+After converting instructions over, I'll convert basic blocks and 
+functions to have a similar interface.
+
+The only negative aspect of this change that I see is that it increases 
+the amount of memory consumed by one pointer per instruction.  Given the 
+benefits, I think this is a very reasonable tradeoff. 
+
+What do you think?
+
+-Chris

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2002-06-25-MegaPatchInfo.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2002-06-25-MegaPatchInfo.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2002-06-25-MegaPatchInfo.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2002-06-25-MegaPatchInfo.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,72 @@
+Changes:
+* Change the casting code to be const correct.  Now, doing this is invalid:
+     const Value *V = ...;
+     Instruction *I = dyn_cast<Instruction>(V);
+  instead, the second line should be:
+     const Instruction *I = dyn_cast<Instruction>(V);
+
+* Change the casting code to allow casting a reference value thus:
+     const Value &V = ...;
+     Instruction &I = cast<Instruction>(V);
+
+  dyn_cast does not work with references, because it must return a null pointer
+  on failure.
+
+* Fundamentally change how instructions and other values are represented.
+  Before, every llvm container was an instance of the ValueHolder template,
+  instantiated for each container type.  This ValueHolder was effectively a
+  wrapper around a vector of pointers to the sub-objects.
+
+  Now, instead of having a vector to pointers of objects, the objects are
+  maintained in a doubly linked list of values (ie each Instruction now has
+  Next & Previous fields).  The containers are now instances of ilist (intrusive
+  linked list class), which use the next and previous fields to chain them
+  together.  The advantage of this implementation is that iterators can be
+  formed directly from pointers to the LLVM value, and invalidation is much
+  easier to handle.
+
+* As part of the above change, dereferencing an iterator (for example:
+  BasicBlock::iterator) now produces a reference to the underlying type (same
+  example: Instruction&) instead of a pointer to the underlying object.  This
+  makes it much easier to write nested loops that iterator over things, changing
+  this:
+
+    for (Function::iterator BI = Func->begin(); BI != Func->end(); ++BI)
+      for (BasicBlock::iterator II = (*BI)->begin(); II != (*BI)->end(); ++II)
+        (*II)->dump();
+
+  into:
+
+    for (Function::iterator BI = Func->begin(); BI != Func->end(); ++BI)
+      for (BasicBlock::iterator II = BI->begin(); II != BI->end(); ++II)
+        II->dump();
+
+  which is much more natural and what users expect.
+
+* Simplification of #include's: Before, it was necessary for a .cpp file to
+  include every .h file that it used.  Now things are batched a little bit more
+  to make it easier to use.  Specifically, the include graph now includes these
+  edges:
+    Module.h -> Function.h, GlobalVariable.h
+    Function.h -> BasicBlock.h, Argument.h
+    BasicBlock.h -> Instruction.h
+
+  Which means that #including Function.h is usually sufficient for getting the
+  lower level #includes.
+
+* Printing out a Value* has now changed: Printing a Value* will soon print out
+  the address of the value instead of the contents of the Value.  To print out
+  the contents, you must convert it to a reference with (for example)
+  'cout << *I' instead of 'cout << I;'.  This conversion is not yet complete,
+  but will be eventually.  In the mean time, both forms print out the contents.
+
+* References are used much more throughout the code base.  In general, if a
+  pointer is known to never be null, it is passed in as a reference instead of a
+  pointer.  For example, the instruction visitor class uses references instead
+  of pointers, and that Pass subclasses now all receive references to Values
+  instead of pointers, because they may never be null.
+
+* The Function class now has helper functions for accessing the Arguments list.
+  Instead of having to go through getArgumentList for simple things like
+  iterator over the arguments, now the a*() methods can be used to access them.
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2003-01-23-CygwinNotes.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2003-01-23-CygwinNotes.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2003-01-23-CygwinNotes.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2003-01-23-CygwinNotes.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,28 @@
+Date: Mon, 20 Jan 2003 00:00:28 -0600
+From: Brian R. Gaeke <gaeke at uiuc.edu>
+Subject: windows vs. llvm
+
+If you're interested, here are some of the major problems compiling LLVM
+under Cygwin and/or Mingw.
+
+1. Cygwin doesn't have <inttypes.h> or <stdint.h>, so all the INT*_MAX
+   symbols and standard int*_t types are off in limbo somewhere. Mingw has
+   <stdint.h>, but Cygwin doesn't like it.
+
+2. Mingw doesn't have <dlfcn.h> (because Windows doesn't have it.)
+
+3. SA_SIGINFO and friends are not around; only signal() seems to work.
+
+4. Relink, aka ld -r, doesn't work (probably an ld bug); you need
+   DONT_BUILD_RELINKED. This breaks all the tools makefiles; you just need to
+   change them to have .a's.
+
+5. There isn't a <values.h>.
+
+6. There isn't a mallinfo() (or, at least, it's documented, but it doesn't seem
+   to link).
+
+7. The version of Bison that cygwin (and newer Linux versions) comes with
+   does not like = signs in rules. Burg's gram.yc source file uses them. I think
+   you can just take them out.
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2003-06-25-Reoptimizer1.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2003-06-25-Reoptimizer1.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2003-06-25-Reoptimizer1.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2003-06-25-Reoptimizer1.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,137 @@
+Wed Jun 25 15:13:51 CDT 2003
+
+First-level instrumentation
+---------------------------
+
+We use opt to do Bytecode-to-bytecode instrumentation. Look at
+back-edges and insert llvm_first_trigger() function call which takes
+no arguments and no return value. This instrumentation is designed to
+be easy to remove, for instance by writing a NOP over the function
+call instruction.
+
+Keep count of every call to llvm_first_trigger(), and maintain
+counters in a map indexed by return address. If the trigger count
+exceeds a threshold, we identify a hot loop and perform second-level
+instrumentation on the hot loop region (the instructions between the
+target of the back-edge and the branch that causes the back-edge).  We
+do not move code across basic-block boundaries.
+
+
+Second-level instrumentation
+---------------------------
+
+We remove the first-level instrumentation by overwriting the CALL to
+llvm_first_trigger() with a NOP.
+
+The reoptimizer maintains a map between machine-code basic blocks and
+LLVM BasicBlock*s.  We only keep track of paths that start at the
+first machine-code basic block of the hot loop region.
+
+How do we keep track of which edges to instrument, and which edges are
+exits from the hot region? 3 step process.
+
+1) Do a DFS from the first machine-code basic block of the hot loop
+region and mark reachable edges.
+
+2) Do a DFS from the last machine-code basic block of the hot loop
+region IGNORING back edges, and mark the edges which are reachable in
+1) and also in 2) (i.e., must be reachable from both the start BB and
+the end BB of the hot region).
+
+3) Mark BBs which end in edges that exit the hot region; we need to
+instrument these differently.
+
+Assume that there is 1 free register. On SPARC we use %g1, which LLC
+has agreed not to use.  Shift a 1 into it at the beginning. At every
+edge which corresponds to a conditional branch, we shift 0 for not
+taken and 1 for taken into a register. This uniquely numbers the paths
+through the hot region. Silently fail if we need more than 64 bits.
+
+At the end BB we call countPath and increment the counter based on %g1
+and the return address of the countPath call.  We keep track of the
+number of iterations and the number of paths.  We only run this
+version 30 or 40 times.
+
+Find the BBs that total 90% or more of execution, and aggregate them
+together to form our trace. But we do not allow more than 5 paths; if
+we have more than 5 we take the ones that are executed the most.  We
+verify our assumption that we picked a hot back-edge in first-level
+instrumentation, by making sure that the number of times we took an
+exit edge from the hot trace is less than 10% of the number of
+iterations.
+
+LLC has been taught to recognize llvm_first_trigger() calls and NOT
+generate saves and restores of caller-saved registers around these
+calls.
+
+
+Phase behavior
+--------------
+
+We turn off llvm_first_trigger() calls with NOPs, but this would hide
+phase behavior from us (when some funcs/traces stop being hot and
+others become hot.)
+
+We have a SIGALRM timer that counts time for us. Every time we get a
+SIGALRM we look at our priority queue of locations where we have
+removed llvm_first_trigger() calls. Each location is inserted along
+with a time when we will next turn instrumentation back on for that
+call site. If the time has arrived for a particular call site, we pop
+that off the prio. queue and turn instrumentation back on for that
+call site.
+
+
+Generating traces
+-----------------
+
+When we finally generate an optimized trace we first copy the code
+into the trace cache. This leaves us with 3 copies of the code: the
+original code, the instrumented code, and the optimized trace. The
+optimized trace does not have instrumentation. The original code and
+the instrumented code are modified to have a branch to the trace
+cache, where the optimized traces are kept.
+
+We copy the code from the original to the instrumentation version
+by tracing the LLVM-to-Machine code basic block map and then copying
+each machine code basic block we think is in the hot region into the
+trace cache. Then we instrument that code. The process is similar for
+generating the final optimized trace; we copy the same basic blocks
+because we might need to put in fixup code for exit BBs.
+
+LLVM basic blocks are not typically used in the Reoptimizer except
+for the mapping information.
+
+We are restricted to using single instructions to branch between the
+original code, trace, and instrumented code. So we have to keep the
+code copies in memory near the original code (they can't be far enough
+away that a single pc-relative branch would not work.) Malloc() or
+data region space is too far away. this impacts the design of the 
+trace cache.
+
+We use a dummy function that is full of a bunch of for loops which we
+overwrite with trace-cache code. The trace manager keeps track of
+whether or not we have enough space in the trace cache, etc.
+
+The trace insertion routine takes an original start address, a vector
+of machine instructions representing the trace, index of branches and
+their corresponding absolute targets, and index of calls and their
+corresponding absolute targets.
+
+The trace insertion routine is responsible for inserting branches from
+the beginning of the original code to the beginning of the optimized
+trace. This is because at some point the trace cache may run out of
+space and it may have to evict a trace, at which point the branch to
+the trace would also have to be removed. It uses a round-robin
+replacement policy; we have found that this is almost as good as LRU
+and better than random (especially because of problems fitting the new
+trace in.)
+
+We cannot deal with discontiguous trace cache areas.  The trace cache
+is supposed to be cache-line-aligned, but it is not page-aligned.
+
+We generate instrumentation traces and optimized traces into separate
+trace caches. We keep the instrumented code around because you don't
+want to delete a trace when you still might have to return to it
+(i.e., return from a llvm_first_trigger() or countPath() call.)
+
+

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2003-06-26-Reoptimizer2.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2003-06-26-Reoptimizer2.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2003-06-26-Reoptimizer2.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2003-06-26-Reoptimizer2.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,110 @@
+Thu Jun 26 14:43:04 CDT 2003
+
+Information about BinInterface
+------------------------------
+
+Take in a set of instructions with some particular register
+allocation. It allows you to add, modify, or delete some instructions,
+in SSA form (kind of like LLVM's MachineInstrs.) Then re-allocate
+registers. It assumes that the transformations you are doing are safe.
+It does not update the mapping information or the LLVM representation
+for the modified trace (so it would not, for instance, support
+multiple optimization passes; passes have to be aware of and update
+manually the mapping information.)
+
+The way you use it is you take the original code and provide it to
+BinInterface; then you do optimizations to it, then you put it in the
+trace cache.
+
+The BinInterface tries to find live-outs for traces so that it can do
+register allocation on just the trace, and stitch the trace back into
+the original code. It has to preserve the live-ins and live-outs when
+it does its register allocation.  (On exits from the trace we have
+epilogues that copy live-outs back into the right registers, but
+live-ins have to be in the right registers.)
+
+
+Limitations of BinInterface
+---------------------------
+
+It does copy insertions for PHIs, which it infers from the machine
+code. The mapping info inserted by LLC is not sufficient to determine
+the PHIs.
+
+It does not handle integer or floating-point condition codes and it
+does not handle floating-point register allocation.
+
+It is not aggressively able to use lots of registers.
+
+There is a problem with alloca: we cannot find our spill space for
+spilling registers, normally allocated on the stack, if the trace
+follows an alloca(). What might be an acceptable solution would be to
+disable trace generation on functions that have variable-sized
+alloca()s. Variable-sized allocas in the trace would also probably
+screw things up.
+
+Because of the FP and alloca limitations, the BinInterface is
+completely disabled right now.
+
+
+Demo
+----
+
+This is a demo of the Ball & Larus version that does NOT use 2-level
+profiling.
+
+1. Compile program with llvm-gcc.
+2. Run opt -lowerswitch -paths -emitfuncs on the bytecode.
+   -lowerswitch change switch statements to branches
+   -paths       Ball & Larus path-profiling algorithm
+   -emitfuncs   emit the table of functions
+3. Run llc to generate SPARC assembly code for the result of step 2.
+4. Use g++ to link the (instrumented) assembly code.
+
+We use a script to do all this:
+------------------------------------------------------------------------------
+#!/bin/sh
+llvm-gcc $1.c -o $1
+opt -lowerswitch -paths -emitfuncs $1.bc > $1.run.bc
+llc -f $1.run.bc 
+LIBS=$HOME/llvm_sparc/lib/Debug
+GXX=/usr/dcs/software/evaluation/bin/g++
+$GXX -g -L $LIBS $1.run.s -o $1.run.llc \
+$LIBS/tracecache.o \
+$LIBS/mapinfo.o \
+$LIBS/trigger.o \
+$LIBS/profpaths.o \
+$LIBS/bininterface.o \
+$LIBS/support.o \
+$LIBS/vmcore.o \
+$LIBS/transformutils.o \
+$LIBS/bcreader.o \
+-lscalaropts -lscalaropts -lanalysis \
+-lmalloc -lcpc -lm -ldl
+------------------------------------------------------------------------------
+
+5. Run the resulting binary.  You will see output from BinInterface
+(described below) intermixed with the output from the program.
+
+
+Output from BinInterface
+------------------------
+
+BinInterface's debugging code prints out the following stuff in order:
+
+1. Initial code provided to BinInterface with original register
+allocation.
+
+2. Section 0 is the trace prolog, consisting mainly of live-ins and
+register saves which will be restored in epilogs.
+
+3. Section 1 is the trace itself, in SSA form used by BinInterface,
+along with the PHIs that are inserted.
+PHIs are followed by the copies that implement them.
+Each branch (i.e., out of the trace) is annotated with the
+section number that represents the epilog it branches to.
+
+4. All the other sections starting with Section 2 are trace epilogs.
+Every branch from the trace has to go to some epilog.
+
+5. After the last section is the register allocation output.

Added: www-releases/trunk/3.1/docs/HistoricalNotes/2007-OriginalClangReadme.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HistoricalNotes/2007-OriginalClangReadme.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HistoricalNotes/2007-OriginalClangReadme.txt (added)
+++ www-releases/trunk/3.1/docs/HistoricalNotes/2007-OriginalClangReadme.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,178 @@
+//===----------------------------------------------------------------------===//
+// C Language Family Front-end
+//===----------------------------------------------------------------------===//
+                                                             Chris Lattner
+
+I. Introduction:
+ 
+ clang: noun
+    1. A loud, resonant, metallic sound.
+    2. The strident call of a crane or goose.
+    3. C-language family front-end toolkit.
+
+ The world needs better compiler tools, tools which are built as libraries. This
+ design point allows reuse of the tools in new and novel ways. However, building
+ the tools as libraries isn't enough: they must have clean APIs, be as
+ decoupled from each other as possible, and be easy to modify/extend.  This
+ requires clean layering, decent design, and avoiding tying the libraries to a
+ specific use.  Oh yeah, did I mention that we want the resultant libraries to
+ be as fast as possible? :)
+
+ This front-end is built as a component of the LLVM toolkit that can be used
+ with the LLVM backend or independently of it.  In this spirit, the API has been
+ carefully designed as the following components:
+ 
+   libsupport  - Basic support library, reused from LLVM.
+
+   libsystem   - System abstraction library, reused from LLVM.
+   
+   libbasic    - Diagnostics, SourceLocations, SourceBuffer abstraction,
+                 file system caching for input source files.  This depends on
+                 libsupport and libsystem.
+
+   libast      - Provides classes to represent the C AST, the C type system,
+                 builtin functions, and various helpers for analyzing and
+                 manipulating the AST (visitors, pretty printers, etc).  This
+                 library depends on libbasic.
+
+
+   liblex      - C/C++/ObjC lexing and preprocessing, identifier hash table,
+                 pragma handling, tokens, and macros.  This depends on libbasic.
+
+   libparse    - C (for now) parsing and local semantic analysis. This library
+                 invokes coarse-grained 'Actions' provided by the client to do
+                 stuff (e.g. libsema builds ASTs).  This depends on liblex.
+
+   libsema     - Provides a set of parser actions to build a standardized AST
+                 for programs.  AST's are 'streamed' out a top-level declaration
+                 at a time, allowing clients to use decl-at-a-time processing,
+                 build up entire translation units, or even build 'whole
+                 program' ASTs depending on how they use the APIs.  This depends
+                 on libast and libparse.
+
+   librewrite  - Fast, scalable rewriting of source code.  This operates on
+                 the raw syntactic text of source code, allowing a client
+                 to insert and delete text in very large source files using
+                 the same source location information embedded in ASTs.  This
+                 is intended to be a low-level API that is useful for
+                 higher-level clients and libraries such as code refactoring.
+
+   libanalysis - Source-level dataflow analysis useful for performing analyses
+                 such as computing live variables.  It also includes a
+                 path-sensitive "graph-reachability" engine for writing
+                 analyses that reason about different possible paths of
+                 execution through source code.  This is currently being
+                 employed to write a set of checks for finding bugs in software.
+
+   libcodegen  - Lower the AST to LLVM IR for optimization & codegen.  Depends
+                 on libast.
+                 
+   clang       - An example driver, client of the libraries at various levels.
+                 This depends on all these libraries, and on LLVM VMCore.
+
+ This front-end has been intentionally built as a DAG of libraries, making it
+ easy to  reuse individual parts or replace pieces if desired. For example, to
+ build a preprocessor, you take the Basic and Lexer libraries. If you want an
+ indexer, you take those plus the Parser library and provide some actions for
+ indexing.  If you want a refactoring, static analysis, or source-to-source
+ compiler tool, it makes sense to take those plus the AST building and semantic
+ analyzer library.  Finally, if you want to use this with the LLVM backend,
+ you'd take these components plus the AST to LLVM lowering code.
+ 
+ In the future I hope this toolkit will grow to include new and interesting
+ components, including a C++ front-end, ObjC support, and a whole lot of other
+ things.
+
+ Finally, it should be pointed out that the goal here is to build something that
+ is high-quality and industrial-strength: all the obnoxious features of the C
+ family must be correctly supported (trigraphs, preprocessor arcana, K&R-style
+ prototypes, GCC/MS extensions, etc).  It cannot be used if it is not 'real'.
+
+
+II. Usage of clang driver:
+
+ * Basic Command-Line Options:
+   - Help: clang --help
+   - Standard GCC options accepted: -E, -I*, -i*, -pedantic, -std=c90, etc.
+   - To make diagnostics more gcc-like: -fno-caret-diagnostics -fno-show-column
+   - Enable metric printing: -stats
+
+ * -fsyntax-only is currently the default mode.
+
+ * -E mode works the same way as GCC.
+
+ * -Eonly mode does all preprocessing, but does not print the output,
+     useful for timing the preprocessor.
+ 
+ * -fsyntax-only is currently partially implemented, lacking some
+     semantic analysis (some errors and warnings are not produced).
+
+ * -parse-noop parses code without building an AST.  This is useful
+     for timing the cost of the parser without including AST building
+     time.
+ 
+ * -parse-ast builds ASTs, but doesn't print them.  This is most
+     useful for timing AST building vs -parse-noop.
+ 
+ * -parse-ast-print pretty prints most expression and statements nodes.
+
+ * -parse-ast-check checks that diagnostic messages that are expected
+     are reported and that those which are reported are expected.
+
+ * -dump-cfg builds ASTs and then CFGs.  CFGs are then pretty-printed.
+
+ * -view-cfg builds ASTs and then CFGs.  CFGs are then visualized by
+     invoking Graphviz.
+
+     For more information on getting Graphviz to work with clang/LLVM,
+     see: http://llvm.org/docs/ProgrammersManual.html#ViewGraph
+
+
+III. Current advantages over GCC:
+
+ * Column numbers are fully tracked (no 256 col limit, no GCC-style pruning).
+ * All diagnostics have column numbers, includes 'caret diagnostics', and they
+   highlight regions of interesting code (e.g. the LHS and RHS of a binop).
+ * Full diagnostic customization by client (can format diagnostics however they
+   like, e.g. in an IDE or refactoring tool) through DiagnosticClient interface.
+ * Built as a framework, can be reused by multiple tools.
+ * All languages supported linked into same library (no cc1,cc1obj, ...).
+ * mmap's code in read-only, does not dirty the pages like GCC (mem footprint).
+ * LLVM License, can be linked into non-GPL projects.
+ * Full diagnostic control, per diagnostic.  Diagnostics are identified by ID.
+ * Significantly faster than GCC at semantic analysis, parsing, preprocessing
+   and lexing.
+ * Defers exposing platform-specific stuff to as late as possible, tracks use of
+   platform-specific features (e.g. #ifdef PPC) to allow 'portable bytecodes'.
+ * The lexer doesn't rely on the "lexer hack": it has no notion of scope and
+   does not categorize identifiers as types or variables -- this is up to the
+   parser to decide.
+
+Potential Future Features:
+
+ * Fine grained diag control within the source (#pragma enable/disable warning).
+ * Better token tracking within macros?  (Token came from this line, which is
+   a macro argument instantiated here, recursively instantiated here).
+ * Fast #import with a module system.
+ * Dependency tracking: change to header file doesn't recompile every function
+   that texually depends on it: recompile only those functions that need it.
+   This is aka 'incremental parsing'.
+
+
+IV. Missing Functionality / Improvements
+
+Lexer:
+ * Source character mapping.  GCC supports ASCII and UTF-8.
+   See GCC options: -ftarget-charset and -ftarget-wide-charset.
+ * Universal character support.  Experimental in GCC, enabled with
+   -fextended-identifiers.
+ * -fpreprocessed mode.
+
+Preprocessor:
+ * #assert/#unassert
+ * MSExtension: "L#param" stringizes to a wide string literal.
+ * Add support for -M*
+
+Traditional Preprocessor:
+ * Currently, we have none. :)
+

Added: www-releases/trunk/3.1/docs/HowToAddABuilder.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HowToAddABuilder.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HowToAddABuilder.html (added)
+++ www-releases/trunk/3.1/docs/HowToAddABuilder.html Tue May 22 14:32:29 2012
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>
+    How To Add Your Build Configuration To LLVM Buildbot Infrastructure
+  </title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+<body>
+
+<h1>How To Add Your Build Configuration To LLVM Buildbot Infrastructure</h1>
+<ol>
+  <li><a href="#introduction">Introduction</a></li>
+  <li><a href="#steps">Steps To Add Builder To LLVM Buildbot</a></li>
+</ol>
+<div class="doc_author">
+  <p>Written by <a href="mailto:gkistanova at gmail.com">Galina Kistanova</a></p>
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="introduction">Introduction</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>This document contains information about adding a build configuration and
+   buildslave to private slave builder to LLVM Buildbot Infrastructure
+   <a href="http://lab.llvm.org:8011">http://lab.llvm.org:8011</a></p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="steps">Steps To Add Builder To LLVM Buildbot</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>Volunteers can provide their build machines to work as build slaves to
+   public LLVM Buildbot.</p>
+
+<p>Here are the steps you can follow to do so:</p>
+
+<ol>
+  <li><p>Check the existing build configurations to make sure the one you are
+      interested in is not covered yet or gets built on your computer much
+      faster than on the existing one. We prefer faster builds so developers
+      will get feedback sooner after changes get committed.</p></li>
+
+  <li><p>The computer you will be registering with the LLVM buildbot
+      infrastructure should have all dependencies installed and you can
+      actually build your configuration successfully. Please check what degree
+      of parallelism (-j param) would give the fastest build.
+      You can build multiple configurations on one computer.</p></li>
+
+  <li><p>Install buildslave (currently we are using buildbot version 0.8.5).
+      Depending on the platform, buildslave could be available to download and
+      install with your packet manager, or you can download it directly from
+      <a href="http://trac.buildbot.net">http://trac.buildbot.net</a> and
+      install it manually.</p></li>
+
+  <li><p>Create a designated user account, your buildslave will be running
+      under, and set appropriate permissions.</p></li>
+
+  <li><p>Choose the buildslave root directory (all builds will be placed under
+      it), buildslave access name and password the build master will be using
+      to authenticate your buildslave.</p></li>
+
+  <li><p>Create a buildslave in context of that buildslave account.
+      Point it to the <b>lab.llvm.org</b> port <b>9990</b> (see
+      <a href="http://buildbot.net/buildbot/docs/current/full.html#creating-a-slave">
+      Buildbot documentation, Creating a slave</a>
+      for more details) by running the following command:</p>
+
+<div class="doc_code">
+<pre>
+$ buildslave create-slave <i>buildslave-root-directory</i> \
+             lab.llvm.org:9990 \
+             <i>buildslave-access-name buildslave-access-password</i>
+</pre>
+</div></li>
+
+  <li><p>Fill the buildslave description and admin name/e-mail.
+      Here is an example of the buildslave description:</p>
+
+<div class="doc_code">
+<pre>
+Windows 7 x64
+Core i7 (2.66GHz), 16GB of RAM
+
+g++.exe (TDM-1 mingw32) 4.4.0
+GNU Binutils 2.19.1
+cmake version 2.8.4
+Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
+</pre>
+</div></li>
+
+  <li><p>Make sure you can actually start the buildslave successfully. Then set
+      up your buildslave to start automatically at the start up time.
+      See the buildbot documentation for help.
+      You may want to restart your computer to see if it works.</p></li>
+
+  <li><p>Send a patch which adds your build slave and your builder to zorg.</p>
+      <ul>
+          <li>slaves are added to
+              <tt>buildbot/osuosl/master/config/slaves.py</tt></li>
+          <li>builders are added to
+              <tt>buildbot/osuosl/master/config/builders.py</tt></li>
+      </ul></li>
+
+  <li><p>Send the buildslave access name and the access password directly
+      to <a href="mailto:gkistanova at gmail.com">Galina Kistanova</a>, and wait
+      till she will let you know that your changes are applied and buildmaster
+      is reconfigured.</p>
+
+  <li><p>Check the status of your buildslave on the
+      <a href="http://lab.llvm.org:8011/waterfall">Waterfall Display</a>
+      to make sure it is connected, and
+      <a href="http://lab.llvm.org:8011/buildslaves/your-buildslave-name">
+      http://lab.llvm.org:8011/buildslaves/<your-buildslave-name></a>
+      to see if administrator contact and slave information are correct.</p>
+      </li>
+
+  <li><p>Wait for the first build to succeed and enjoy.</p></li>
+</ol>
+
+</div>
+
+<!-- *********************************************************************** -->
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a>
+  <br>
+  Last modified: $Date: 2011-10-31 12:50:0 -0700 (Mon, 31 Oct 2011) $
+</address>
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/HowToReleaseLLVM.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HowToReleaseLLVM.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HowToReleaseLLVM.html (added)
+++ www-releases/trunk/3.1/docs/HowToReleaseLLVM.html Tue May 22 14:32:29 2012
@@ -0,0 +1,581 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>How To Release LLVM To The Public</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+<body>
+
+<h1>How To Release LLVM To The Public</h1>
+<ol>
+  <li><a href="#introduction">Introduction</a></li>
+  <li><a href="#criteria">Qualification Criteria</a></li>
+  <li><a href="#introduction">Release Timeline</a></li>
+  <li><a href="#process">Release Process</a></li>
+</ol>
+<div class="doc_author">
+  <p>Written by <a href="mailto:tonic at nondot.org">Tanya Lattner</a>,
+  <a href="mailto:rspencer at x10sys.com">Reid Spencer</a>,
+  <a href="mailto:criswell at cs.uiuc.edu">John Criswell</a>, &
+  <a href="mailto:wendling at apple.com">Bill Wendling</a>
+  </p>
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="introduction">Introduction</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>This document contains information about successfully releasing LLVM —
+   including subprojects: e.g., <tt>clang</tt> and <tt>dragonegg</tt> — to
+   the public. It is the Release Manager's responsibility to ensure that a high
+   quality build of LLVM is released.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="process">Release Timeline</a></h2>
+<!-- *********************************************************************** -->
+<div>
+
+<p>LLVM is released on a time based schedule — roughly every 6 months. We
+   do not normally have dot releases because of the nature of LLVM's incremental
+   development philosophy. That said, the only thing preventing dot releases for
+   critical bug fixes from happening is a lack of resources — testers,
+   machines, time, etc. And, because of the high quality we desire for LLVM
+   releases, we cannot allow for a truncated form of release qualification.</p>
+
+<p>The release process is roughly as follows:</p>
+
+<ul>
+  <li><p>Set code freeze and branch creation date for 6 months after last code
+      freeze date. Announce release schedule to the LLVM community and update
+      the website.</p></li>
+
+  <li><p>Create release branch and begin release process.</p></li>
+
+  <li><p>Send out release candidate sources for first round of testing. Testing
+      lasts 7-10 days. During the first round of testing, any regressions found
+      should be fixed. Patches are merged from mainline into the release
+      branch. Also, all features need to be completed during this time. Any
+      features not completed at the end of the first round of testing will be
+      removed or disabled for the release.</p></li>
+
+  <li><p>Generate and send out the second release candidate sources. Only
+      <em>critial</em> bugs found during this testing phase will be fixed. Any
+      bugs introduced by merged patches will be fixed. If so a third round of
+      testing is needed.</p></li>
+
+  <li><p>The release notes are updated.</p></li>
+
+  <li><p>Finally, release!</p></li>
+</ul>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="process">Release Process</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<ol>
+  <li><a href="#release-admin">Release Administrative Tasks</a>
+  <ol>
+    <li><a href="#branch">Create Release Branch</a></li>
+    <li><a href="#verchanges">Update Version Numbers</a></li>
+  </ol>
+  </li>
+  <li><a href="#release-build">Building the Release</a>
+  <ol>
+    <li><a href="#dist">Build the LLVM Source Distributions</a></li>
+    <li><a href="#build">Build LLVM</a></li>
+    <li><a href="#clangbin">Build the Clang Binary Distribution</a></li>
+    <li><a href="#target-build">Target Specific Build Details</a></li>
+  </ol>
+  </li>
+  <li><a href="#release-qualify">Release Qualification Criteria</a>
+  <ol>
+    <li><a href="#llvm-qualify">Qualify LLVM</a></li>
+    <li><a href="#clang-qualify">Qualify Clang</a></li>
+    <li><a href="#targets">Specific Target Qualification Details</a></li>
+  </ol>
+  </li>
+
+  <li><a href="#commTest">Community Testing</a></li>    
+  <li><a href="#release-patch">Release Patch Rules</a></li>
+  <li><a href="#release-final">Release final tasks</a>
+  <ol>
+    <li><a href="#updocs">Update Documentation</a></li>
+    <li><a href="#tag">Tag the LLVM Final Release</a></li>
+    <li><a href="#updemo">Update the LLVM Demo Page</a></li>
+    <li><a href="#webupdates">Update the LLVM Website</a></li>
+    <li><a href="#announce">Announce the Release</a></li>
+  </ol>
+  </li>
+</ol>
+
+<!-- ======================================================================= -->
+<h3><a name="release-admin">Release Administrative Tasks</a></h3>
+
+<div>
+
+<p>This section describes a few administrative tasks that need to be done for
+   the release process to begin. Specifically, it involves:</p>
+
+<ul>
+  <li>Creating the release branch,</li>
+  <li>Setting version numbers, and</li>
+  <li>Tagging release candidates for the release team to begin testing</li>
+</ul>
+
+<!-- ======================================================================= -->
+<h4><a name="branch">Create Release Branch</a></h4>
+
+<div>
+
+<p>Branch the Subversion trunk using the following procedure:</p>
+
+<ol>
+  <li><p>Remind developers that the release branching is imminent and to refrain
+      from committing patches that might break the build. E.g., new features,
+      large patches for works in progress, an overhaul of the type system, an
+      exciting new TableGen feature, etc.</p></li>
+
+  <li><p>Verify that the current Subversion trunk is in decent shape by
+      examining nightly tester and buildbot results.</p></li>
+
+  <li><p>Create the release branch for <tt>llvm</tt>, <tt>clang</tt>,
+      the <tt>test-suite</tt>, and <tt>dragonegg</tt> from the last known good
+      revision. The branch's name is <tt>release_<i>XY</i></tt>,
+      where <tt>X</tt> is the major and <tt>Y</tt> the minor release
+      numbers. The branches should be created using the following commands:</p>
+  
+<div class="doc_code">
+<pre>
+$ svn copy https://llvm.org/svn/llvm-project/llvm/trunk \
+           https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XY</i>
+
+$ svn copy https://llvm.org/svn/llvm-project/cfe/trunk \
+           https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i>
+
+$ svn copy https://llvm.org/svn/llvm-project/dragonegg/trunk \
+           https://llvm.org/svn/llvm-project/dragonegg/branches/release_<i>XY</i>
+
+$ svn copy https://llvm.org/svn/llvm-project/test-suite/trunk \
+           https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XY</i>
+</pre>
+</div></li>
+
+  <li><p>Advise developers that they may now check their patches into the
+      Subversion tree again.</p></li>
+
+  <li><p>The Release Manager should switch to the release branch, because all
+      changes to the release will now be done in the branch. The easiest way to
+      do this is to grab a working copy using the following commands:</p>
+
+<div class="doc_code">
+<pre>
+$ svn co https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XY</i> llvm-<i>X.Y</i>
+
+$ svn co https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i> clang-<i>X.Y</i>
+
+$ svn co https://llvm.org/svn/llvm-project/dragonegg/branches/release_<i>XY</i> dragonegg-<i>X.Y</i>
+
+$ svn co https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XY</i> test-suite-<i>X.Y</i>
+</pre>
+</div></li>
+</ol>
+
+</div>
+
+<!-- ======================================================================= -->
+<h4><a name="verchanges">Update LLVM Version</a></h4>
+
+<div>
+
+<p>After creating the LLVM release branch, update the release branches'
+   <tt>autoconf</tt> and <tt>configure.ac</tt> versions from '<tt>X.Ysvn</tt>'
+   to '<tt>X.Y</tt>'. Update it on mainline as well to be the next version
+   ('<tt>X.Y+1svn</tt>'). Regenerate the configure scripts for both
+   <tt>llvm</tt> and the <tt>test-suite</tt>.</p>
+
+<p>In addition, the version numbers of all the Bugzilla components must be
+   updated for the next release.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h4><a name="dist">Build the LLVM Release Candidates</a></h4>
+
+<div>
+
+<p>Create release candidates for <tt>llvm</tt>, <tt>clang</tt>,
+   <tt>dragonegg</tt>, and the LLVM <tt>test-suite</tt> by tagging the branch
+   with the respective release candidate number. For instance, to
+   create <b>Release Candidate 1</b> you would issue the following commands:</p>
+
+<div class="doc_code">
+<pre>
+$ svn mkdir https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>
+$ svn copy https://llvm.org/svn/llvm-project/llvm/branches/release_<i>XY</i> \
+           https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>/rc1
+
+$ svn mkdir https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>
+$ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_<i>XY</i> \
+           https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/rc1
+
+$ svn mkdir https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>
+$ svn copy https://llvm.org/svn/llvm-project/dragonegg/branches/release_<i>XY</i> \
+           https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>/rc1
+
+$ svn mkdir https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>
+$ svn copy https://llvm.org/svn/llvm-project/test-suite/branches/release_<i>XY</i> \
+           https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>/rc1
+</pre>
+</div>
+
+<p>Similarly, <b>Release Candidate 2</b> would be named <tt>RC2</tt> and so
+   on. This keeps a permanent copy of the release candidate around for people to
+   export and build as they wish. The final released sources will be tagged in
+   the <tt>RELEASE_<i>XY</i></tt> directory as <tt>Final</tt>
+   (c.f. <a href="#tag">Tag the LLVM Final Release</a>).</p>
+
+<p>The Release Manager may supply pre-packaged source tarballs for users. This
+   can be done with the following commands:</p>
+
+<div class="doc_code">
+<pre>
+$ svn export https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>/rc1 llvm-<i>X.Y</i>rc1
+$ svn export https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/rc1 clang-<i>X.Y</i>rc1
+$ svn export https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>/rc1 dragonegg-<i>X.Y</i>rc1
+$ svn export https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>/rc1 llvm-test-<i>X.Y</i>rc1
+
+$ tar -cvf - llvm-<i>X.Y</i>rc1        | gzip > llvm-<i>X.Y</i>rc1.src.tar.gz
+$ tar -cvf - clang-<i>X.Y</i>rc1       | gzip > clang-<i>X.Y</i>rc1.src.tar.gz
+$ tar -cvf - dragonegg-<i>X.Y</i>rc1   | gzip > dragonegg-<i>X.Y</i>rc1.src.tar.gz
+$ tar -cvf - llvm-test-<i>X.Y</i>rc1   | gzip > llvm-test-<i>X.Y</i>rc1.src.tar.gz
+</pre>
+</div>
+
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="release-build">Building the Release</a></h3>
+
+<div>
+
+<p>The builds of <tt>llvm</tt>, <tt>clang</tt>, and <tt>dragonegg</tt>
+   <em>must</em> be free of errors and warnings in Debug, Release+Asserts, and
+   Release builds. If all builds are clean, then the release passes Build
+   Qualification.</p>
+
+<p>The <tt>make</tt> options for building the different modes:</p>
+
+<table>
+  <tr><th>Mode</th><th>Options</th></tr>
+  <tr align="left"><td>Debug</td><td><tt>ENABLE_OPTIMIZED=0</tt></td></tr>
+  <tr align="left"><td>Release+Asserts</td><td><tt>ENABLE_OPTIMIZED=1</tt></td></tr>
+  <tr align="left"><td>Release</td><td><tt>ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1</tt></td></tr>
+</table>
+
+<!-- ======================================================================= -->
+<h4><a name="build">Build LLVM</a></h4>
+
+<div>
+
+<p>Build <tt>Debug</tt>, <tt>Release+Asserts</tt>, and <tt>Release</tt> versions
+   of <tt>llvm</tt> on all supported platforms. Directions to build
+   <tt>llvm</tt> are <a href="GettingStarted.html#quickstart">here</a>.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h4><a name="clangbin">Build Clang Binary Distribution</a></h4>
+
+<div>
+
+<p>Creating the <tt>clang</tt> binary distribution
+   (Debug/Release+Asserts/Release) requires performing the following steps for
+   each supported platform:</p>
+
+<ol>
+  <li>Build clang according to the directions
+      <a href="http://clang.llvm.org/get_started.html">here</a>.</li>
+
+  <li>Build both a Debug and Release version of clang. The binary will be the
+      Release build.</lI>
+
+  <li>Package <tt>clang</tt> (details to follow).</li>
+</ol>
+
+</div>
+
+<!-- ======================================================================= -->
+<h4><a name="target-build">Target Specific Build Details</a></h4>
+
+<div>
+
+<p>The table below specifies which compilers are used for each Arch/OS
+   combination when qualifying the build of <tt>llvm</tt>, <tt>clang</tt>,
+   and <tt>dragonegg</tt>.</p>
+
+<table>
+  <tr><th>Architecture</th> <th>OS</th>          <th>compiler</th></tr>
+  <tr><td>x86-32</td>       <td>Mac OS 10.5</td> <td>gcc 4.0.1</td></tr>
+  <tr><td>x86-32</td>       <td>Linux</td>       <td>gcc 4.2.X, gcc 4.3.X</td></tr>
+  <tr><td>x86-32</td>       <td>FreeBSD</td>     <td>gcc 4.2.X</td></tr>
+  <tr><td>x86-32</td>       <td>mingw</td>       <td>gcc 3.4.5</td></tr>
+  <tr><td>x86-64</td>       <td>Mac OS 10.5</td> <td>gcc 4.0.1</td></tr>
+  <tr><td>x86-64</td>       <td>Linux</td>       <td>gcc 4.2.X, gcc 4.3.X</td></tr>
+  <tr><td>x86-64</td>       <td>FreeBSD</td>     <td>gcc 4.2.X</td></tr>
+</table> 
+
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="release-qualify">Building the Release</a></h3>
+
+<div>
+
+<p>A release is qualified when it has no regressions from the previous release
+   (or baseline). Regressions are related to correctness first and performance
+   second. (We may tolerate some minor performance regressions if they are
+   deemed necessary for the general quality of the compiler.)</p>
+
+<p><b>Regressions are new failures in the set of tests that are used to qualify
+   each product and only include things on the list. Every release will have
+   some bugs in it. It is the reality of developing a complex piece of
+   software. We need a very concrete and definitive release criteria that
+   ensures we have monotonically improving quality on some metric. The metric we
+   use is described below. This doesn't mean that we don't care about other
+   criteria, but these are the criteria which we found to be most important and
+   which must be satisfied before a release can go out</b></p>
+
+<!-- ======================================================================= -->
+<h4><a name="llvm-qualify">Qualify LLVM</a></h4>
+
+<div>
+
+<p>LLVM is qualified when it has a clean test run without a front-end. And it
+   has no regressions when using either <tt>clang</tt> or <tt>dragonegg</tt>
+   with the <tt>test-suite</tt> from the previous release.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h4><a name="clang-qualify">Qualify Clang</a></h4>
+
+<div>
+
+<p><tt>Clang</tt> is qualified when front-end specific tests in the 
+   <tt>llvm</tt> dejagnu test suite all pass, clang's own test suite passes
+   cleanly, and there are no regressions in the <tt>test-suite</tt>.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h4><a name="targets">Specific Target Qualification Details</a></h4>
+
+<div>
+
+<table>
+  <tr><th>Architecture</th> <th>OS</th>          <th>clang baseline</th> <th>tests</th></tr>
+  <tr><td>x86-32</td>       <td>Linux</td>       <td>last release</td>   <td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
+  <tr><td>x86-32</td>       <td>FreeBSD</td>     <td>last release</td>   <td>llvm dejagnu, clang tests, test-suite</td></tr>
+  <tr><td>x86-32</td>       <td>mingw</td>       <td>none</td>           <td>QT</td></tr>
+  <tr><td>x86-64</td>       <td>Mac OS 10.X</td> <td>last release</td>   <td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
+  <tr><td>x86-64</td>       <td>Linux</td>       <td>last release</td>   <td>llvm dejagnu, clang tests, test-suite (including spec)</td></tr>
+  <tr><td>x86-64</td>       <td>FreeBSD</td>     <td>last release</td>   <td>llvm dejagnu, clang tests, test-suite</td></tr>
+</table>
+
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="commTest">Community Testing</a></h3>
+<div>
+
+<p>Once all testing has been completed and appropriate bugs filed, the release
+   candidate tarballs are put on the website and the LLVM community is
+   notified. Ask that all LLVM developers test the release in 2 ways:</p>
+
+<ol>
+  <li>Download <tt>llvm-<i>X.Y</i></tt>, <tt>llvm-test-<i>X.Y</i></tt>, and the
+      appropriate <tt>clang</tt> binary. Build LLVM. Run <tt>make check</tt> and
+      the full LLVM test suite (<tt>make TEST=nightly report</tt>).</li>
+
+  <li>Download <tt>llvm-<i>X.Y</i></tt>, <tt>llvm-test-<i>X.Y</i></tt>, and the
+      <tt>clang</tt> sources. Compile everything. Run <tt>make check</tt> and
+      the full LLVM test suite (<tt>make TEST=nightly report</tt>).</li>
+</ol>
+
+<p>Ask LLVM developers to submit the test suite report and <tt>make check</tt>
+   results to the list. Verify that there are no regressions from the previous
+   release. The results are not used to qualify a release, but to spot other
+   potential problems. For unsupported targets, verify that <tt>make check</tt>
+   is at least clean.</p>
+  
+<p>During the first round of testing, all regressions must be fixed before the
+   second release candidate is tagged.</p>
+  
+<p>If this is the second round of testing, the testing is only to ensure that
+   bug fixes previously merged in have not created new major problems. <i>This
+   is not the time to solve additional and unrelated bugs!</i> If no patches are
+   merged in, the release is determined to be ready and the release manager may
+   move onto the next stage.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="release-patch">Release Patch Rules</a></h3>
+
+<div>
+
+<p>Below are the rules regarding patching the release branch:</p>
+
+<ol>
+  <li><p>Patches applied to the release branch may only be applied by the
+      release manager.</p></li>
+
+  <li><p>During the first round of testing, patches that fix regressions or that
+      are small and relatively risk free (verified by the appropriate code
+      owner) are applied to the branch. Code owners are asked to be very
+      conservative in approving patches for the branch. We reserve the right to
+      reject any patch that does not fix a regression as previously
+      defined.</p></li>
+
+  <li><p>During the remaining rounds of testing, only patches that fix critical
+      regressions may be applied.</p></li>
+</ol>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="release-final">Release Final Tasks</a></h3>
+
+<div>
+
+<p>The final stages of the release process involves tagging the "final" release
+   branch, updating documentation that refers to the release, and updating the
+   demo page.</p>
+
+<!-- ======================================================================= -->
+<h4><a name="updocs">Update Documentation</a></h4>
+
+<div>
+
+<p>Review the documentation and ensure that it is up to date. The "Release
+   Notes" must be updated to reflect new features, bug fixes, new known issues,
+   and changes in the list of supported platforms. The "Getting Started Guide"
+   should be updated to reflect the new release version number tag avaiable from
+   Subversion and changes in basic system requirements. Merge both changes from
+   mainline into the release branch.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h4><a name="tag">Tag the LLVM Final Release</a></h4>
+
+<div>
+
+<p>Tag the final release sources using the following procedure:</p>
+
+<div class="doc_code">
+<pre>
+$ svn copy https://llvm.org/svn/llvm-project/llvm/branches/release_XY \
+           https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_<i>XY</i>/Final
+
+$ svn copy https://llvm.org/svn/llvm-project/cfe/branches/release_XY \
+           https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_<i>XY</i>/Final
+
+$ svn copy https://llvm.org/svn/llvm-project/dragonegg/branches/release_XY \
+           https://llvm.org/svn/llvm-project/dragonegg/tags/RELEASE_<i>XY</i>/Final
+
+$ svn copy https://llvm.org/svn/llvm-project/test-suite/branches/release_XY \
+           https://llvm.org/svn/llvm-project/test-suite/tags/RELEASE_<i>XY</i>/Final
+</pre>
+</div>
+
+</div>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3><a name="updemo">Update the LLVM Demo Page</a></h3>
+
+<div>
+
+<p>The LLVM demo page must be updated to use the new release. This consists of
+   using the new <tt>clang</tt> binary and building LLVM.</p>
+
+<!-- ======================================================================= -->
+<h4><a name="webupdates">Update the LLVM Website</a></h4>
+
+<div>
+
+<p>The website must be updated before the release announcement is sent out. Here
+   is what to do:</p>
+
+<ol>
+  <li>Check out the <tt>www</tt> module from Subversion.</li>
+
+  <li>Create a new subdirectory <tt>X.Y</tt> in the releases directory.</li>
+
+  <li>Commit the <tt>llvm</tt>, <tt>test-suite</tt>, <tt>clang</tt> source,
+      <tt>clang binaries</tt>, <tt>dragonegg</tt> source, and <tt>dragonegg</tt>
+      binaries in this new directory.</li>
+
+  <li>Copy and commit the <tt>llvm/docs</tt> and <tt>LICENSE.txt</tt> files
+      into this new directory. The docs should be built with
+      <tt>BUILD_FOR_WEBSITE=1</tt>.</li>
+
+  <li>Commit the <tt>index.html</tt> to the <tt>release/X.Y</tt> directory to
+      redirect (use from previous release.</li>
+
+  <li>Update the <tt>releases/download.html</tt> file with the new release.</li>
+
+  <li>Update the <tt>releases/index.html</tt> with the new release and link to
+      release documentation.</li>
+
+  <li>Finally, update the main page (<tt>index.html</tt> and sidebar) to point
+      to the new release and release announcement. Make sure this all gets
+      committed back into Subversion.</li>
+</ol>
+
+</div>
+
+<!-- ======================================================================= -->
+<h4><a name="announce">Announce the Release</a></h4>
+
+<div>
+
+<p>Have Chris send out the release announcement when everything is finished.</p>
+
+</div>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a>
+  <br>
+  Last modified: $Date: 2011-10-31 04:21:59 -0700 (Mon, 31 Oct 2011) $
+</address>
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/HowToSubmitABug.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/HowToSubmitABug.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/HowToSubmitABug.html (added)
+++ www-releases/trunk/3.1/docs/HowToSubmitABug.html Tue May 22 14:32:29 2012
@@ -0,0 +1,348 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>How to submit an LLVM bug report</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+<body>
+
+<h1>
+  How to submit an LLVM bug report
+</h1>
+
+<table class="layout" style="width: 90%" >
+<tr class="layout">
+  <td class="left">
+<ol>
+  <li><a href="#introduction">Introduction - Got bugs?</a></li>
+  <li><a href="#crashers">Crashing Bugs</a>
+    <ul>
+    <li><a href="#front-end">Front-end bugs</a>
+    <li><a href="#ct_optimizer">Compile-time optimization bugs</a>
+    <li><a href="#ct_codegen">Code generator bugs</a>
+    </ul></li>
+  <li><a href="#miscompilations">Miscompilations</a></li>
+  <li><a href="#codegen">Incorrect code generation (JIT and LLC)</a></li>
+</ol>
+<div class="doc_author">
+  <p>Written by <a href="mailto:sabre at nondot.org">Chris Lattner</a> and
+                <a href="http://misha.brukman.net">Misha Brukman</a></p>
+</div>
+</td>
+<td class="right">
+  <img src="img/Debugging.gif" alt="Debugging" width="444" height="314">
+</td>
+</tr>
+</table>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="introduction">Introduction - Got bugs?</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>If you're working with LLVM and run into a bug, we definitely want to know
+about it.  This document describes what you can do to increase the odds of
+getting it fixed quickly.</p>
+
+<p>Basically you have to do two things at a minimum.  First, decide whether the
+bug <a href="#crashers">crashes the compiler</a> (or an LLVM pass), or if the
+compiler is <a href="#miscompilations">miscompiling</a> the program (i.e., the
+compiler successfully produces an executable, but it doesn't run right).  Based
+on
+what type of bug it is, follow the instructions in the linked section to narrow
+down the bug so that the person who fixes it will be able to find the problem
+more easily.</p>
+
+<p>Once you have a reduced test-case, go to <a
+href="http://llvm.org/bugs/enter_bug.cgi">the LLVM Bug Tracking
+System</a> and fill out the form with the necessary details (note that you don't
+need to pick a category, just use the "new-bugs" category if you're not sure).
+The bug description should contain the following
+information:</p>
+
+<ul>
+  <li>All information necessary to reproduce the problem.</li>
+  <li>The reduced test-case that triggers the bug.</li>
+  <li>The location where you obtained LLVM (if not from our Subversion
+  repository).</li>
+</ul>
+
+<p>Thanks for helping us make LLVM better!</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="crashers">Crashing Bugs</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>More often than not, bugs in the compiler cause it to crash—often due
+to an assertion failure of some sort. The most important
+piece of the puzzle is to figure out if it is crashing in the GCC front-end
+or if it is one of the LLVM libraries (e.g. the optimizer or code generator)
+that has problems.</p>
+
+<p>To figure out which component is crashing (the front-end,
+optimizer or code generator), run the
+<tt><b>llvm-gcc</b></tt> command line as you were when the crash occurred, but
+with the following extra command line options:</p>
+
+<ul>
+  <li><tt><b>-O0 -emit-llvm</b></tt>: If <tt>llvm-gcc</tt> still crashes when
+  passed these options (which disable the optimizer and code generator), then
+  the crash is in the front-end.  Jump ahead to the section on <a
+  href="#front-end">front-end bugs</a>.</li>
+
+  <li><tt><b>-emit-llvm</b></tt>: If <tt>llvm-gcc</tt> crashes with this option
+  (which disables the code generator), you found an optimizer bug.  Jump ahead
+  to <a href="#ct_optimizer"> compile-time optimization bugs</a>.</li>
+
+  <li>Otherwise, you have a code generator crash.  Jump ahead to <a
+  href="#ct_codegen">code generator bugs</a>.</li>
+
+</ul>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="front-end">Front-end bugs</a>
+</h3>
+
+<div>
+
+<p>If the problem is in the front-end, you should re-run the same
+<tt>llvm-gcc</tt> command that resulted in the crash, but add the
+<tt>-save-temps</tt> option.  The compiler will crash again, but it will leave
+behind a <tt><i>foo</i>.i</tt> file (containing preprocessed C source code) and
+possibly <tt><i>foo</i>.s</tt> for each
+compiled <tt><i>foo</i>.c</tt> file. Send us the <tt><i>foo</i>.i</tt> file,
+along with the options you passed to llvm-gcc, and a brief description of the
+error it caused.</p>
+
+<p>The <a href="http://delta.tigris.org/">delta</a> tool helps to reduce the
+preprocessed file down to the smallest amount of code that still replicates the
+problem. You're encouraged to use delta to reduce the code to make the
+developers' lives easier. <a
+href="http://gcc.gnu.org/wiki/A_guide_to_testcase_reduction">This website</a>
+has instructions on the best way to use delta.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="ct_optimizer">Compile-time optimization bugs</a>
+</h3>
+
+<div>
+
+<p>If you find that a bug crashes in the optimizer, compile your test-case to a
+<tt>.bc</tt> file by passing "<tt><b>-emit-llvm -O0 -c -o foo.bc</b></tt>".
+Then run:</p>
+
+<div class="doc_code">
+<p><tt><b>opt</b> -std-compile-opts -debug-pass=Arguments foo.bc
+    -disable-output</tt></p>
+</div>
+
+<p>This command should do two things: it should print out a list of passes, and
+then it should crash in the same way as llvm-gcc.  If it doesn't crash, please
+follow the instructions for a <a href="#front-end">front-end bug</a>.</p>
+
+<p>If this does crash, then you should be able to debug this with the following
+bugpoint command:</p>
+
+<div class="doc_code">
+<p><tt><b>bugpoint</b> foo.bc <list of passes printed by 
+<b>opt</b>></tt></p>
+</div>
+
+<p>Please run this, then file a bug with the instructions and reduced .bc files
+that bugpoint emits.  If something goes wrong with bugpoint, please submit the
+"foo.bc" file and the list of passes printed by <b>opt</b>.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<h3>
+  <a name="ct_codegen">Code generator bugs</a>
+</h3>
+
+<div>
+
+<p>If you find a bug that crashes llvm-gcc in the code generator, compile your
+source file to a .bc file by passing "<tt><b>-emit-llvm -c -o foo.bc</b></tt>"
+to llvm-gcc (in addition to the options you already pass).  Once your have
+foo.bc, one of the following commands should fail:</p>
+
+<ol>
+<li><tt><b>llc</b> foo.bc</tt></li>
+<li><tt><b>llc</b> foo.bc -relocation-model=pic</tt></li>
+<li><tt><b>llc</b> foo.bc -relocation-model=static</tt></li>
+</ol>
+
+<p>If none of these crash, please follow the instructions for a
+<a href="#front-end">front-end bug</a>.  If one of these do crash, you should
+be able to reduce this with one of the following bugpoint command lines (use
+the one corresponding to the command above that failed):</p>
+
+<ol>
+<li><tt><b>bugpoint</b> -run-llc foo.bc</tt></li>
+<li><tt><b>bugpoint</b> -run-llc foo.bc --tool-args
+           -relocation-model=pic</tt></li>
+<li><tt><b>bugpoint</b> -run-llc foo.bc --tool-args
+           -relocation-model=static</tt></li>
+</ol>
+
+<p>Please run this, then file a bug with the instructions and reduced .bc file
+that bugpoint emits.  If something goes wrong with bugpoint, please submit the
+"foo.bc" file and the option that llc crashes with.</p>
+
+</div>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="miscompilations">Miscompilations</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>If llvm-gcc successfully produces an executable, but that executable doesn't
+run right, this is either a bug in the code or a bug in the
+compiler.  The first thing to check is to make sure it is not using undefined
+behavior (e.g. reading a variable before it is defined).  In particular, check
+to see if the program <a href="http://valgrind.org/">valgrind</a>s clean,
+passes purify, or some other memory checker tool.  Many of the "LLVM bugs" that
+we have chased down ended up being bugs in the program being compiled, not
+ LLVM.</p>
+
+<p>Once you determine that the program itself is not buggy, you should choose 
+which code generator you wish to compile the program with (e.g. C backend, the 
+JIT, or LLC) and optionally a series of LLVM passes to run.  For example:</p>
+
+<div class="doc_code">
+<p><tt>
+<b>bugpoint</b> -run-cbe [... optzn passes ...] file-to-test.bc --args -- [program arguments]</tt></p>
+</div>
+
+<p><tt>bugpoint</tt> will try to narrow down your list of passes to the one pass
+that causes an error, and simplify the bitcode file as much as it can to assist
+you. It will print a message letting you know how to reproduce the resulting
+error.</p>
+
+</div>
+
+<!-- *********************************************************************** -->
+<h2>
+  <a name="codegen">Incorrect code generation</a>
+</h2>
+<!-- *********************************************************************** -->
+
+<div>
+
+<p>Similarly to debugging incorrect compilation by mis-behaving passes, you can
+debug incorrect code generation by either LLC or the JIT, using
+<tt>bugpoint</tt>. The process <tt>bugpoint</tt> follows in this case is to try
+to narrow the code down to a function that is miscompiled by one or the other
+method, but since for correctness, the entire program must be run,
+<tt>bugpoint</tt> will compile the code it deems to not be affected with the C
+Backend, and then link in the shared object it generates.</p>
+
+<p>To debug the JIT:</p>
+
+<div class="doc_code">
+<pre>
+bugpoint -run-jit -output=[correct output file] [bitcode file]  \
+         --tool-args -- [arguments to pass to lli]              \
+         --args -- [program arguments]
+</pre>
+</div>
+
+<p>Similarly, to debug the LLC, one would run:</p>
+
+<div class="doc_code">
+<pre>
+bugpoint -run-llc -output=[correct output file] [bitcode file]  \
+         --tool-args -- [arguments to pass to llc]              \
+         --args -- [program arguments]
+</pre>
+</div>
+
+<p><b>Special note:</b> if you are debugging MultiSource or SPEC tests that
+already exist in the <tt>llvm/test</tt> hierarchy, there is an easier way to
+debug the JIT, LLC, and CBE, using the pre-written Makefile targets, which
+will pass the program options specified in the Makefiles:</p>
+
+<div class="doc_code">
+<p><tt>
+cd llvm/test/../../program<br>
+make bugpoint-jit
+</tt></p>
+</div>
+
+<p>At the end of a successful <tt>bugpoint</tt> run, you will be presented
+with two bitcode files: a <em>safe</em> file which can be compiled with the C
+backend and the <em>test</em> file which either LLC or the JIT
+mis-codegenerates, and thus causes the error.</p>
+
+<p>To reproduce the error that <tt>bugpoint</tt> found, it is sufficient to do
+the following:</p>
+
+<ol>
+
+<li><p>Regenerate the shared object from the safe bitcode file:</p>
+
+<div class="doc_code">
+<p><tt>
+<b>llc</b> -march=c safe.bc -o safe.c<br>
+<b>gcc</b> -shared safe.c -o safe.so
+</tt></p>
+</div></li>
+
+<li><p>If debugging LLC, compile test bitcode native and link with the shared
+    object:</p>
+
+<div class="doc_code">
+<p><tt>
+<b>llc</b> test.bc -o test.s<br>
+<b>gcc</b> test.s safe.so -o test.llc<br>
+./test.llc [program options]
+</tt></p>
+</div></li>
+    
+<li><p>If debugging the JIT, load the shared object and supply the test
+    bitcode:</p>
+
+<div class="doc_code">
+<p><tt><b>lli</b> -load=safe.so test.bc [program options]</tt></p>
+</div></li>  
+
+</ol>
+
+</div>
+
+<!-- *********************************************************************** -->
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+
+  <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
+  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a>
+  <br>
+  Last modified: $Date: 2011-10-31 04:21:59 -0700 (Mon, 31 Oct 2011) $
+</address>
+
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/LLVMBuild.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/LLVMBuild.html?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/LLVMBuild.html (added)
+++ www-releases/trunk/3.1/docs/LLVMBuild.html Tue May 22 14:32:29 2012
@@ -0,0 +1,368 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <title>LLVMBuild Documentation</title>
+  <link rel="stylesheet" href="llvm.css" type="text/css">
+</head>
+<body>
+
+<h1>LLVMBuild Guide</h1>
+
+<ol>
+  <li><a href="#introduction">Introduction</a></li>
+  <li><a href="#projectorg">Project Organization</a></li>
+  <li><a href="#buildintegration">Build Integration</a></li>
+  <li><a href="#componentoverview">Component Overview</a></li>
+  <li><a href="#formatreference">Format Reference</a></li>
+</ol>
+
+<!-- *********************************************************************** -->
+<h2><a name="introduction">Introduction</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+  <p>This document describes the <tt>LLVMBuild</tt> organization and files which
+  we use to describe parts of the LLVM ecosystem. For description of specific
+  LLVMBuild related tools, please see the command guide.</p>
+
+  <p>LLVM is designed to be a modular set of libraries which can be flexibly
+  mixed together in order to build a variety of tools, like compilers, JITs,
+  custom code generators, optimization passes, interpreters, and so on. Related
+  projects in the LLVM system like Clang and LLDB also tend to follow this
+  philosophy.</p>
+
+  <p>In order to support this usage style, LLVM has a fairly strict structure as
+  to how the source code and various components are organized. The
+  <tt>LLVMBuild.txt</tt> files are the explicit specification of that structure,
+  and are used by the build systems and other tools in order to develop the LLVM
+  project.</p>
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="projectorg">Project Organization</a></h2>
+<!-- *********************************************************************** -->
+
+<!-- FIXME: We should probably have an explicit top level project object. Good
+place to hang project level data, name, etc. Also useful for serving as the
+$ROOT of project trees for things which can be checked out separately. -->
+
+<div>
+  <p>The source code for LLVM projects using the LLVMBuild system (LLVM, Clang,
+  and LLDB) is organized into <em>components</em>, which define the separate
+  pieces of functionality that make up the project. These projects may consist
+  of many libraries, associated tools, build tools, or other utility tools (for
+  example, testing tools).</p>
+
+  <p>For the most part, the project contents are organized around defining one
+  main component per each subdirectory. Each such directory contains
+  an <tt>LLVMBuild.txt</tt> which contains the component definitions.</p>
+
+  <p>The component descriptions for the project as a whole are automatically
+  gathered by the LLVMBuild tools. The tools automatically traverse the source
+  directory structure to find all of the component description files. NOTE: For
+  performance/sanity reasons, we only traverse into subdirectories when the
+  parent itself contains an <tt>LLVMBuild.txt</tt> description file.</p>
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="buildintegration">Build Integration</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+  <p>The LLVMBuild files themselves are just a declarative way to describe the
+  project structure. The actual building of the LLVM project is handled by
+  another build system (currently we support
+  both <a href="MakefileGuide.html">Makefiles</a>
+  and <a href="CMake.html">CMake</a>.</p>
+
+  <p>The build system implementation will load the relevant contents of the
+  LLVMBuild files and use that to drive the actual project build. Typically, the
+  build system will only need to load this information at "configure" time, and
+  use it to generative native information. Build systems will also handle
+  automatically reconfiguring their information when the contents of
+  the <i>LLVMBuild.txt</i> files change.</p>
+
+  <p>Developers generally are not expected to need to be aware of the details of
+  how the LLVMBuild system is integrated into their build. Ideally, LLVM
+  developers who are not working on the build system would only ever need to
+  modify the contents of the <i>LLVMBuild.txt</i> description files (although we
+  have not reached this goal yet).</p>
+
+  <p>For more information on the utility tool we provide to help interfacing
+  with the build system, please see
+  the <a href="CommandGuide/html/llvm-build.html">llvm-build</a>
+  documentation.</p>
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="componentoverview">Component Overview</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+  <p>As mentioned earlier, LLVM projects are organized into
+  logical <em>components</em>. Every component is typically grouped into its
+  own subdirectory. Generally, a component is organized around a coherent group
+  of sources which have some kind of clear API separation from other parts of
+  the code.</p>
+
+  <p>LLVM primarily uses the following types of components:</p>
+  <ul>
+    <li><em>Libraries</em> - Library components define a distinct API which can
+    be independently linked into LLVM client applications. Libraries typically
+    have private and public header files, and may specify a link of required
+    libraries that they build on top of.</li>
+
+    <li><em>Build Tools</em> - Build tools are applications which are designed
+    to be run as part of the build process (typically to generate other source
+    files). Currently, LLVM uses one main build tool
+    called <a href="TableGenFundamentals.html">TableGen</a> to generate a
+    variety of source files.</li>
+
+    <li><em>Tools</em> - Command line applications which are built using the
+    LLVM component libraries. Most LLVM tools are small and are primarily
+    frontends to the library interfaces.</li>
+
+<!-- FIXME: We also need shared libraries as a first class component, but this
+     is not yet implemented. -->
+  </ul>
+
+  <p>Components are described using <em>LLVMBuild.txt</em> files in the
+  directories that define the component. See
+  the <a href="#formatreference">Format Reference</a> section for information on
+  the exact format of these files.</p>
+</div>
+
+<!-- *********************************************************************** -->
+<h2><a name="formatreference">LLVMBuild Format Reference</a></h2>
+<!-- *********************************************************************** -->
+
+<div>
+  <p>LLVMBuild files are written in a simple variant of the INI or configuration
+  file format (<a href="http://en.wikipedia.org/wiki/INI_file">Wikipedia
+  entry</a>). The format defines a list of sections each of which may contain
+  some number of properties. A simple example of the file format is below:</p>
+  <div class="doc_code">
+  <pre>
+<i>; Comments start with a semi-colon.</i>
+
+<i>; Sections are declared using square brackets.</i>
+[component_0]
+
+<i>; Properties are declared using '=' and are contained in the previous section.
+;
+; We support simple string and boolean scalar values and list values, where
+; items are separated by spaces. There is no support for quoting, and so
+; property values may not contain spaces.</i>
+property_name = property_value
+list_property_name = value_1 value_2 <em>...</em> value_n
+boolean_property_name = 1 <em>(or 0)</em>
+</pre>
+  </div>
+
+  <p>LLVMBuild files are expected to define a strict set of sections and
+  properties. An typical component description file for a library
+  component would look typically look like the following example:</p>
+  <div class="doc_code">
+  <pre>
+[component_0]
+type = Library
+name = Linker
+parent = Libraries
+required_libraries = Archive BitReader Core Support TransformUtils
+</pre>
+  </div>
+
+  <p>A full description of the exact sections and properties which are allowed
+ follows.</p>
+
+  <p>Each file may define exactly one common component, named "common". The
+  common component may define the following properties:</p>
+  <ul>
+    <li><i>subdirectories</i> <b>[optional]</b>
+      <p>If given, a list of the names of the subdirectories from the current
+        subpath to search for additional LLVMBuild files.</p></li>
+  </ul>
+
+  <p>Each file may define multiple components. Each component is described by a
+  section who name starts with "component". The remainder of the section name is
+  ignored, but each section name must be unique. Typically components are just
+  number in order for files with multiple components ("component_0",
+  "component_1", and so on).<p>
+
+  <p><b>Section names not matching this format (or the "common" section) are
+  currently unused and are disallowed.</b></p>
+
+  <p>Every component is defined by the properties in the section. The exact list
+  of properties that are allowed depends on the component
+  type. Components <b>may not</b> define any properties other than those
+  expected by the component type.</p>
+
+  <p>Every component must define the following properties:</p>
+  <ul>
+    <li><i>type</i> <b>[required]</b>
+      <p>The type of the component. Supported component types are
+      detailed below. Most components will define additional properties which
+      may be required or optional.</p></li>
+
+    <li><i>name</i> <b>[required]</b>
+      <p>The name of the component. Names are required to be unique
+      across the entire project.</p></li>
+
+    <li><i>parent</i> <b>[required]</b>
+      <p>The name of the logical parent of the component. Components are
+      organized into a logical tree to make it easier to navigate and organize
+      groups of components. The parents have no semantics as far as the project
+      build is concerned, however. Typically, the parent will be the main
+      component of the parent directory.</p>
+
+      <!-- FIXME: Should we make the parent optional, and default to parent
+      directories component? -->
+
+      <p>Components may reference the root pseudo component using '$ROOT' to
+      indicate they should logically be grouped at the top-level.</p>
+    </li>
+  </ul>
+
+  <p>Components may define the following properties:</p>
+  <ul>
+    <li><i>dependencies</i> <b>[optional]</b>
+      <p>If specified, a list of names of components which <i>must</i> be built
+      prior to this one. This should only be exactly those components which
+      produce some tool or source code required for building the
+      component.</p>
+
+      <p><em>NOTE:</em> Group and LibraryGroup components have no semantics for
+      the actual build, and are not allowed to specify dependencies.</p></li>
+  </ul>
+
+  <p>The following section lists the available component types, as well as the
+  properties which are associated with that component.</p>
+
+  <ul>
+    <li><i>type = Group</i>
+      <p>Group components exist purely to allow additional arbitrary structuring
+      of the logical components tree. For example, one might define a
+      "Libraries" group to hold all of the root library components.</p>
+
+      <p>Group components have no additionally properties.</p>
+    </li>
+
+    <li><i>type = Library</i>
+      <p>Library components define an individual library which should be built
+      from the source code in the component directory.</p>
+
+      <p>Components with this type use the following properties:</p>
+      <ul>
+        <li><i>library_name</i> <b>[optional]</b>
+          <p>If given, the name to use for the actual library file on disk. If
+          not given, the name is derived from the component name
+          itself.</p></li>
+
+        <li><i>required_libraries</i> <b>[optional]</b>
+          <p>If given, a list of the names of Library or LibraryGroup components
+          which must also be linked in whenever this library is used. That is,
+          the link time dependencies for this component. When tools are built,
+          the build system will include the transitive closure of
+          all <i>required_libraries</i> for the components the tool needs.</p></li>
+
+        <li><i>add_to_library_groups</i> <b>[optional]</b>
+          <p>If given, a list of the names of LibraryGroup components which this
+          component is also part of. This allows nesting groups of
+          components. For example, the <i>X86</i> target might define a library
+          group for all of the <i>X86</i> components. That library group might
+          then be included in the <i>all-targets</i> library group.</p></li>
+
+        <li><i>installed</i> <b>[optional]</b> <b>[boolean]</b>
+          <p>Whether this library is installed. Libraries that are not installed
+          are only reported by <tt>llvm-config</tt> when it is run as part of a
+          development directory.</p></li>
+      </ul>
+    </li>
+
+    <li><i>type = LibraryGroup</i>
+      <p>LibraryGroup components are a mechanism to allow easy definition of
+      useful sets of related components. In particular, we use them to easily
+      specify things like "all targets", or "all assembly printers".</p>
+
+      <p>Components with this type use the following properties:</p>
+      <ul>
+        <li><i>required_libraries</i> <b>[optional]</b>
+          <p>See the Library type for a description of this property.</p></li>
+
+        <li><i>add_to_library_groups</i> <b>[optional]</b>
+          <p>See the Library type for a description of this property.</p></li>
+      </ul>
+    </li>
+
+    <li><i>type = TargetGroup</i>
+      <p>TargetGroup components are an extension of LibraryGroups, specifically
+      for defining LLVM targets (which are handled specially in a few
+      places).</p>
+
+      <p>The name of the component should always be the name of the target.</p>
+
+      <p>Components with this type use the LibraryGroup properties in addition
+      to:</p>
+      <ul>
+        <li><i>has_asmparser</i> <b>[optional]</b> <b>[boolean]</b>
+          <p>Whether this target defines an assembly parser.</p></li>
+        <li><i>has_asmprinter</i> <b>[optional]</b> <b>[boolean]</b>
+          <p>Whether this target defines an assembly printer.</p></li>
+        <li><i>has_disassembler</i> <b>[optional]</b> <b>[boolean]</b>
+          <p>Whether this target defines a disassembler.</p></li>
+        <li><i>has_jit</i> <b>[optional]</b> <b>[boolean]</b>
+          <p>Whether this target supports JIT compilation.</p></li>
+      </ul>
+    </li>
+
+    <li><i>type = Tool</i>
+      <p>Tool components define standalone command line tools which should be
+      built from the source code in the component directory and linked.</p>
+
+      <p>Components with this type use the following properties:</p>
+      <ul>
+        <li><i>required_libraries</i> <b>[optional]</b>
+
+          <p>If given, a list of the names of Library or LibraryGroup components
+          which this tool is required to be linked with. <b>NOTE:</b> The values
+          should be the component names, which may not always match up with the
+          actual library names on disk.</p>
+
+          <p>Build systems are expected to properly include all of the libraries
+          required by the linked components (i.e., the transitive closer
+          of <em>required_libraries</em>).</p>
+
+          <p>Build systems are also expected to understand that those library
+          components must be built prior to linking -- they do not also need to
+          be listed under <i>dependencies</i>.</p></li>
+      </ul>
+    </li>
+
+    <li><i>type = BuildTool</i>
+      <p>BuildTool components are like Tool components, except that the tool is
+      supposed to be built for the platform where the build is running (instead
+      of that platform being targetted). Build systems are expected to handle
+      the fact that required libraries may need to be built for multiple
+      platforms in order to be able to link this tool.</p>
+
+      <p>BuildTool components currently use the exact same properties as Tool
+      components, the type distinction is only used to differentiate what the
+      tool is built for.</p>
+    </li>
+  </ul>
+</div>
+
+<!-- *********************************************************************** -->
+<hr>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
+
+  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
+  Last modified: $Date$
+</address>
+</body>
+</html>

Added: www-releases/trunk/3.1/docs/LLVMBuild.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.1/docs/LLVMBuild.txt?rev=157276&view=auto
==============================================================================
--- www-releases/trunk/3.1/docs/LLVMBuild.txt (added)
+++ www-releases/trunk/3.1/docs/LLVMBuild.txt Tue May 22 14:32:29 2012
@@ -0,0 +1,21 @@
+;===- ./docs/LLVMBuild.txt -------------------------------------*- Conf -*--===;
+;
+;                     The LLVM Compiler Infrastructure
+;
+; This file is distributed under the University of Illinois Open Source
+; License. See LICENSE.TXT for details.
+;
+;===------------------------------------------------------------------------===;
+;
+; This is an LLVMBuild description file for the components in this subdirectory.
+;
+; For more information on the LLVMBuild system, please see:
+;
+;   http://llvm.org/docs/LLVMBuild.html
+;
+;===------------------------------------------------------------------------===;
+
+[component_0]
+type = Group
+name = Docs
+parent = $ROOT





More information about the llvm-commits mailing list