In https://mlir.llvm.org/docs/LangRef/#regions
The production rule given for region is:
region ::= `{` block* `}`
Similarly the production rule for block is:
block ::= block-label operation+
block-label ::= block-id block-arg-list? `:`
block-id ::= caret-id
caret-id ::= `^` suffix-id
This implies that blocks must start with ‘^’
In the production rule for functions the function body has a region.
My confusion stems from seeing many examples–both within the same document and in the MLIR toy example for functions, where no block (with ‘^’) is defined. Does this mean that single block functions do not need the ‘^’ designator? If so is this documented? Is there another explanation to clear up my confusion?
Garrison