Commit Graph

292 Commits

Author SHA1 Message Date
Chris Lattner
cd5c533a40 add silparser support for upcast.
Swift SVN r5926
2013-07-01 16:40:47 +00:00
Chris Lattner
03aa55802b implement alloc_ref and ref_to_object_pointer
Swift SVN r5919
2013-07-01 00:38:47 +00:00
Chris Lattner
9f5145be4f silparser support for project_existential and destroy_addr.
Swift SVN r5917
2013-07-01 00:00:19 +00:00
Chris Lattner
76e15b8472 make the SIL parser put basic blocks in the order that they are defined, not
the order they are referenced.  Fix a testcase to use control flow instead
of producing invalid SSA to test forward refs of values, fixing a FIXME.


Swift SVN r5916
2013-06-30 23:40:59 +00:00
Chris Lattner
5ac61b6b90 add testcase for unconditional branch, which exposes a bug: the wrong mneumonic was used.
Swift SVN r5915
2013-06-30 23:37:12 +00:00
Chris Lattner
b13c50157e implement proper name binding and resolution of global sil function names, including
diagnosing redefinitions, use of undefined values, handling forward references, etc.



Swift SVN r5908
2013-06-30 19:31:19 +00:00
Chris Lattner
20229fbf85 Introduce infrastructure for maintaining per-translation unit SIL parser state across
invocations of the parser.



Swift SVN r5906
2013-06-30 18:44:59 +00:00
Manman Ren
8b2cf98fec SIL Parser: parse branch and condbranch.
Swift SVN r5872
2013-06-28 17:51:13 +00:00
Chris Lattner
5c661f3c38 push global reference parsing forward a bit, diagnosing a type error.
Swift SVN r5811
2013-06-26 05:33:49 +00:00
Chris Lattner
be0f7b4c48 Wire up initial support for function_ref, allowing us to SILParse the code for "return 4".
This is terrible in several ways: it doesn't handle forward references, we do a linear scan
of SILFunctions, and diagnostics don't exist.  Room for improvement some other time.


Swift SVN r5736
2013-06-21 05:27:15 +00:00
Chris Lattner
706ceffab0 generalize call parsing to also handle partial_apply
Swift SVN r5726
2013-06-20 20:52:11 +00:00
Chris Lattner
9cf535be31 after parsing an applyinst, actually create it! We can now silparse
the sil for this function:

func call(fnptr : () -> Int) -> Int {
  return fnptr()
}



Swift SVN r5724
2013-06-20 20:29:21 +00:00
Chris Lattner
88e8f0227a Start parsing SIL apply instructions. Right now, they are dropped on the floor because I have to run.
Swift SVN r5720
2013-06-20 17:57:04 +00:00
Chris Lattner
e4e1d635a2 fix couple fixme's by having the SILParser make SILTypes directly
instead of going through TypeConverter.


Swift SVN r5527
2013-06-07 23:19:18 +00:00
Chris Lattner
5350849cbe Parser support for retain/release/retain_autoreleased.
Swift SVN r5357
2013-05-26 23:22:40 +00:00
Chris Lattner
3b82c89106 implement parsing support for the metatype instruction.
Swift SVN r5356
2013-05-26 23:14:41 +00:00
Chris Lattner
e052f3ca41 change the sil printer to print the type of the destination
operand, producing something like:

	%2 = store %0 to %1 : $*Int64

Enhance the sil parser to be able to parse this.  We can now
round trip everything required to handle this function:

func foo(a : Int) -> Int {
  return a
}




Swift SVN r5354
2013-05-26 14:43:17 +00:00
Chris Lattner
63557b5ddd parse basic block argument lists.
Swift SVN r5353
2013-05-26 06:22:02 +00:00
Chris Lattner
91140d85c1 rename SILParserFunctionState to SILParser, no functionality change.
Swift SVN r5352
2013-05-26 06:12:58 +00:00
Chris Lattner
dfef589a4b implement generic support for parsing the [thin] attribute on function types.
Switch SILType parsing to parse type annotations.
This allows us to use thin functions in .sil files.


Swift SVN r5351
2013-05-26 06:11:13 +00:00
Chris Lattner
56ded647de - Implement parsing of load, alloc_var, and dealloc_var.
- Fix SIL Type parsing of address types.
- Remove dead siltype parsing logic for attributes like sil_sret
  and sil_uncurry.



Swift SVN r5350
2013-05-26 06:00:21 +00:00
Chris Lattner
a34f4efa13 parse integer_literal. Parse and print tuple instructions with named
elements in a way that we can not lose information.


Swift SVN r5348
2013-05-26 01:09:46 +00:00
Chris Lattner
479cbd2ac6 don't require the basic block name to be present. It is particularly
annoying when hand writing tests for the entry block.


Swift SVN r5347
2013-05-25 22:36:17 +00:00
Chris Lattner
c801ea6de0 diagnose use of undefined values.
Swift SVN r5345
2013-05-25 22:19:26 +00:00
Chris Lattner
2e69c61f71 Implement more reasonable local value name lookup:
- Allow forward references.
  - Diagnose redefinitions.
  - Diagnose cases where the use/def of a value mismatch type.

While I'm at it, this fixes a bug where tuple parsing wasn't parsing
the separating commas.


Swift SVN r5343
2013-05-25 18:42:38 +00:00
Chris Lattner
44cdd1d59d parse and build tuple and return instructions. Add a terrible hack at
local name lookup.


Swift SVN r5334
2013-05-25 16:12:42 +00:00
Chris Lattner
bb82daca8f generalize parseToken to take an arbitrary argument list for the diagnostic
when it fails.

Teach the SIL parser to parse and validate (but still discard) tuple and
return instructions.


Swift SVN r5318
2013-05-25 00:40:46 +00:00
Chris Lattner
bd217c9227 extend the general form of parseIdentifier to optionally return a SourceLoc,
and use this throughout the parser.


Swift SVN r5314
2013-05-25 00:07:56 +00:00
Chris Lattner
5d434c581b move sil function parsing logic into the SILParserFunctionState class.
Swift SVN r5311
2013-05-24 23:43:02 +00:00
Chris Lattner
39d0d13dbb Diagnose SIL BB redefinition errors, add a testcase to check error conditions.
Swift SVN r5278
2013-05-22 23:03:31 +00:00
Chris Lattner
3fb5bcf16b implement name binding mechanics for SILBasicBlock's.
Swift SVN r5277
2013-05-22 22:34:44 +00:00
Chris Lattner
98d708d1fc In a SIL function body, lex %42 as a new sil_local_name token.
Swift SVN r5261
2013-05-22 05:34:18 +00:00
Chris Lattner
eeb05ae90b Start working towards SIL parser support for basic blocks and instructions.
For now, just stub out instruction parsing with a hungry loop to get our
minimal testcase parsing (but ignored).


Swift SVN r5259
2013-05-22 00:55:52 +00:00
Chris Lattner
e0527c8a84 simplify resolveIdentifierType() in two ways:
1) a DeclContext doesn't need to be passed in, now that IdentifierType tracks it.
2) factor the code that sets Components to ErrorType out of the clients.




Swift SVN r5250
2013-05-21 05:46:16 +00:00
Chris Lattner
8c85a49d2a with the groundwork out of the way, we can now namebind types referenced
by the SIL parser.  Add a test that covers both local types, and types
that require looking through an import decl (Int, from the stdlib).


Swift SVN r5249
2013-05-21 05:34:24 +00:00
Chris Lattner
1fde9f69fd remove the diag::tuple_global_missing_type diagnostic, which printed as
"a tuple type specifying the type of a global must explicitly state the type of each tuple element".

This diagnostic doesn't make any sense, and is apparently only generated by the old
type checker.  It is also the only thing keeping the "isFirstPass" argument to
TC.validateType() alive, so remove it.

The new type checker does have issues with default values, I filed 
rdar://13946171 to track it, but this old approach (which I wrote, *shame*) 
seems way too broken to salvage.



Swift SVN r5244
2013-05-21 04:08:32 +00:00
Chris Lattner
b4e7ab4247 use TypeLowering to produce SILTypes that make sense now that aggregates
have been simplified.  This still isn't ideal, but is a lot better than
what we had, and is waiting for SILFunctionTypeInfo to stop containing
SILTypes.


Swift SVN r5232
2013-05-20 19:36:57 +00:00
Chris Lattner
a38747b6a2 remove parsing logic for SILType calling convention attribute, this
is hoisted up to Type now.



Swift SVN r5230
2013-05-20 19:29:44 +00:00
Chris Lattner
087d4c8430 Implement the parsing logic for SIL types (the SILType specific attributes).
All of it is still dropped on the floor.


Swift SVN r5195
2013-05-17 01:02:02 +00:00
Chris Lattner
611a3a97db Parse sil linkage types, and actually create the SILFunction parsed.
This gets us prototypes parsing and printing, though types aren't
correct at all yet.



Swift SVN r5192
2013-05-16 22:48:07 +00:00
Chris Lattner
bde8f753da wire up minimal sil function parsing (still not validating or creating
a SIL function).  This introduces contextual lexing state for SIL function 
bodies for SIL-specific lexing rules.


Swift SVN r5179
2013-05-16 18:46:46 +00:00
Chris Lattner
192475ad88 carve out a new file for the sil parser logic.
Swift SVN r5177
2013-05-16 17:59:30 +00:00