Commit Graph

37841 Commits

Author SHA1 Message Date
swift-ci
b69004d25f Merge pull request #66300 from nate-chandler/nfc/20230602/1/type-lowering-nits
[TypeLowering] NFC: Two small cleanups.
2023-06-02 12:02:07 -07:00
Meghana Gupta
f08720b04e Remove #ifndef on skipVarDeclAssert in SILBuilder::createAllocBox signature 2023-06-02 11:57:17 -07:00
Rintaro Ishizaki
86d405bcd0 [Macros] Unify MacroExpansionDecl/MacroExpansionExpr expansion logic
'MacroExpansionDecl' and 'MacroExpansionExpr' have many common methods.
Introduce a common base class 'FreestandingMacroExpansion' that holds
'MacroExpansionInfo'.

Factor out common expansion logic to 'evaluateFreestandingMacro'
function that resembles 'evaluateAttachedMacro'.
2023-06-02 11:54:05 -07:00
Slava Pestov
7499c222ee AST: Requestify lookup of protocol referenced by ImplementsAttr
Direct lookup relied in primary file checking to have filled in the
protocol type stored in the ImplementsAttr. This was already wrong
with multi-file test cases in non-WMO mode, and crashed in the
ASTPrinter if printing a declaration in a non-primary file.

I don't have a standalone test case that is independent of my
upcoming ASTPrinter changes, but this is a nice cleanup regardless.
2023-06-02 13:17:25 -04:00
Ben Barham
18f56c9de5 [NFC][ASTGen] Add wrapping structs for commonly bridged types
Adds wrapping structs for a bunch of commonly bridged types (but not all
the AST nodes yet).
2023-06-02 10:11:46 -07:00
Sophia Poirier
8ccabbdae8 Merge pull request #66244 from sophiapoirier/MaterializePackExpr-getEndLock-logical-inversion
[Variadic Generics] correct a logical inversion typo in MaterializePa…
2023-06-02 10:42:44 -04:00
Nate Chandler
78d85336a5 [TypeLowering] NFC: Fixed type.
It happened not to matter because some other enum : bool was being
constructed/returned and it was only ever used when being converted to
bool.
2023-06-02 07:27:59 -07:00
Slava Pestov
fd81f8135d Merge pull request #66294 from slavapestov/pack-element-type-part-2
PackElementType changes, part 2
2023-06-02 07:32:54 -04:00
Slava Pestov
c441187355 AST: Break circularity in PackArchetypeType::getReducedShape()
This can't happen yet, but with an upcoming change, we hit an infinite
recursion here with PackExpansionType::get() -> getReducedShape()
-> mapTypeIntoContext() -> PackExpansionType::get().
2023-06-01 22:36:24 -04:00
Meghana Gupta
1122050658 Merge pull request #66187 from meg-gupta/escapeflags
Add pointer_escape flag to move_value/begin_borrow/alloc_box
2023-06-01 16:59:21 -07:00
Andrew Trick
c4b6710822 Merge pull request #66279 from atrick/fix-dropdeinit-sideeffect
Fix drop_deinit side effects.
2023-06-01 16:24:23 -07:00
Slava Pestov
c20532eb16 AST: Move TypeBase::isParameterPack() to ParameterPack.cpp 2023-06-01 19:20:11 -04:00
Slava Pestov
5e7a91d62a SIL: Generalize SILType::subst() to take SubstOptions 2023-06-01 19:20:11 -04:00
Ellie Shin
3cd653d7ae Merge pull request #66226 from apple/es-alias-rename
Update module aliasing terms in diagnostics and comments
2023-06-01 15:51:25 -07:00
Adrian Prantl
e74720bd94 Merge pull request #66260 from adrian-prantl/109123395
Ensure calls to getters have a source location.
2023-06-01 14:34:42 -07:00
Doug Gregor
7e5ecfd1f2 Merge pull request #66257 from DougGregor/member-lookup-macro-expansion-performance
Member lookup macro expansion performance
2023-06-01 11:55:35 -07:00
Slava Pestov
e476b220b6 Merge pull request #66250 from slavapestov/variadic-generics-feature
Basic: Remove VariadicGenerics feature
2023-06-01 12:51:18 -04:00
Andrew Trick
af49f62d63 Fix drop_deinit side effects.
rdar://109863801 ([move-only] DCE removes drop_deinit, so user-defined
deinitializers call themselves recursively at -O)
2023-06-01 09:46:59 -07:00
Slava Pestov
ef466ca9d0 Basic: Remove VariadicGenerics feature 2023-05-31 23:41:23 -04:00
Adrian Prantl
958a1577b5 Ensure calls to getters have a source location.
Calls to getters are implicit because the compiler inserts them on a property
access, but the location is useful in backtraces so it should be preserved.

rdar://109123395
2023-05-31 17:41:26 -07:00
Doug Gregor
54d2ea0a17 [Member name lookup] Only look to expand macros in types/extensions that matter
Keep track of those types and extensions that have any macro expansions,
so that when we need to check whether to expand macros to satisfy name
lookup, we only look through that list---rather than looking at every
extension again.

This improves compile times significantly for a source file with a
large number of extensions on a single type. However, there is still
much to do here.
2023-05-31 16:06:09 -07:00
Doug Gregor
af3ea4d142 [Name lookup] Only walk types/extensions to expand macros when we need to
Keep track of which types/extensions have members that could be produced by
a macro expansion, including the names of those members. Use this to
avoid walking into extensions or type definitions to expand macros
when they don't have any related macros.
2023-05-31 15:37:46 -07:00
Ellie Shin
8c66776ce1 Update module aliasing terms in diagnostics and comments
s/underlying_name/real_name

rdar://110028578
2023-05-31 11:47:11 -07:00
Sophia Poirier
ced806ab52 [Variadic Generics] correct a logical inversion typo in MaterializePackExpr::getEndLoc (introduced in 0594efc0c) 2023-05-31 10:10:52 -04:00
Allan Shortlidge
0e7ad1e9a4 Frontend: Don't append -target-min-inlining-target target to implicit module builds.
When performing an implicit module build, the frontend was prepending
`-target-min-inlining-target target` to the command line. This was overriding
the implicit `-target-min-inlining-target min` argument that is implied when
`-library-level api` is specified. As a result, the wrong overload could be
picked when compiling the body of an inlinable function to SIL for emission
into the client, potentially resulting in crashes when the client of the module
is back deployed to an older OS.

Resolves rdar://109336472
2023-05-30 13:33:26 -07:00
Sophia Poirier
0594efc0ce Merge pull request #66214 from sophiapoirier/tuple-expansion-without-dot-element
[Variadic Generics] drop requirement of .element for tuple expansion
2023-05-30 16:29:55 -04:00
Steven Wu
daaee2705b Merge pull request #65924 from cachemeifyoucan/eng/PR-swift-cache-replay
[CAS] Teach swift-frontend to replay result from cache
2023-05-30 12:56:46 -07:00
Meghana Gupta
73c962f190 Add pointer_escape flag to move_value/begin_borrow/alloc_box 2023-05-30 12:45:26 -07:00
swift-ci
da15bf6d67 Merge pull request #66210 from mikeash/ptrauth-standard-concurrency-descriptors
[Runtime] Add ptrauth to standard concurrency descriptors.
2023-05-30 10:29:14 -07:00
Alexis Laferrière
814ca434f0 Merge pull request #66186 from xymus/force-workaround
[Serialization] Add flag to force unsafe recovery from some xref failures
2023-05-30 08:55:17 -07:00
Sophia Poirier
93864f6c15 [Variadic Generics] drop requirement of .element for tuple expansion rdar://107160966 2023-05-30 11:37:55 -04:00
Mike Ash
bf868b0b04 [Runtime] Add ptrauth to standard concurrency descriptors.
Put the __ptrauth_swift_type_descriptor qualifier on the fields of ConcurrencyStandardTypeDescriptors.
2023-05-30 10:29:31 -04:00
Anton Korobeynikov
0b7d8ab78c [AutoDiff] Remove 'readnone' attribute from autoDiffCreateLinearMapContext. (#66203)
It certainly has side effects and returned value every time is different.
This way we ensure multiple calls are not CSE'd or LICM'ed.

Fixes #65989
2023-05-29 23:56:33 -07:00
Doug Gregor
5cdd34aa93 Merge pull request #66198 from DougGregor/closure-local-discriminators-in-macro-expansions
[Macros] Rework the way we assign closure and local discriminators
2023-05-28 23:03:34 -07:00
Doug Gregor
7386a7e7bd [Macros] Rework the way we assign closure and local discriminators
Setting closure and local discriminators depends on an in-order walk
of the AST. For macros, it was walking into both macro expansions and
arguments. However, this doesn't work well with lazy macro expansions,
and could result in some closures/local variables not getting
discriminators set at all.

Make the assignment of discriminators only walk macro arguments, and
then lazily assign discriminators for anything within a macro
expansion or in ill-formed code. This replaces the single global "next
autoclosure discriminator" scheme with a per-DeclContext scheme, that
is more reliable/robust, although it does mean that discriminators
of closures and locals within macro expansions are dependent on
ordering. That shouldn't matter, because these are local values.

Fixes rdar://108682196.
2023-05-28 16:49:20 -07:00
Michael Gottesman
577e76b0f6 [move-only] Change closure capture diagnostic for let patterns to say that it cannot be captured by an escaping closure.
rdar://109742587
2023-05-28 13:58:59 -07:00
Michael Gottesman
1d04df9155 [move-only] Teach deinit devirtualization how to handle devirtualizing a deinit of a resilient type.
Specifically, such a type has an @in convention for its deinit and the pass was
setup expecting self to always be @owned.

rdar://109904633
2023-05-27 22:07:04 -07:00
Michael Gottesman
8579c1924d [move-only] Make sure that we serialize deinits and if we are not able to see the value witness function, call it via the value witness function.
Some notes:

1. I put in both a swiftpm like test case and a library evolution test case. I
also updated the moveonly_deinit serialization swift test to show that we
actually serialize the deinit.

2. I changed when we emit the deinit table to only be when we have a type with
an actual value type destructor. Notably this doesn't include classes today so
as a side-effect, we no longer attempt to devirtualize moveonly class deinits.
This doesn't affect anything we are trying to actually do since we do not
support noncopyable classes today. With that in mind, I changed one test that
was showing that deinit devirtualization worked to use a struct with deinit
instead of a class.

rdar://109679168
2023-05-27 22:07:04 -07:00
Ellie Shin
79a2ff5efd Merge pull request #66189 from apple/es-diag
Improve diagnostics when package acl is used but no package-name is passed
2023-05-27 12:23:10 -07:00
Ellie Shin
854e7dca46 s/passed/specified 2023-05-26 17:10:32 -07:00
Alexis Laferrière
261f32cb84 Merge pull request #66139 from xymus/r-module-recovery 2023-05-26 16:00:43 -07:00
Ellie Shin
61dd3008f8 Improve diagnostics when package acl is used but no package-name is passed 2023-05-26 15:59:51 -07:00
Meghana Gupta
2c6139dce4 Rename SILArgument::isEscaping -> SILArgument::hasPointerEscape 2023-05-26 15:58:30 -07:00
Alexis Laferrière
d50f20e4a8 [Serialization] Make a warning the diagnostic about attempting recovery
Use the `attempting forced recovery` diagnostic as main warning to which
we attach other messages as notes. Also mention the flag in the
diagnostic to reinforce that the flag is active.
2023-05-26 15:28:01 -07:00
Artem Chikin
bc5e8bafed Merge pull request #66148 from artemcm/PrivateClangSubmoduleScan
[Dependency Scannning] Handle special case import of Clang Private "submodules"
2023-05-26 14:50:06 -07:00
Alexis Laferrière
642980cbb1 [Serialization] Add flag to force unsafe recovery from some xref failures
Intro a deserialization mode controlled by the flag
`-experimental-force-workaround-broken-modules` to attempt unsafe
recovery from deserialization failures caused by project issues.

The one issue handled at this time is when a type moves from one module
to another. With this new mode the compiler may be able to pick a
matching type in a different module. This is risky to use, but may help
in a pinch for a client to fix and issue in a library over which they
have no control.
2023-05-26 14:36:28 -07:00
Pavel Yaskevich
950ff0f9b5 Merge pull request #66153 from xedin/rework-pack-conf-isinvalid
[AST] NFC: Fold `PackConformance::isInvalid` into `ProtocolConformanceRef::isInvalid`
2023-05-26 14:32:27 -07:00
Kuba (Brecka) Mracek
2d5f33e2e3 Add @_used and @_section attributes for global variables and top-level functions (#65901)
* Add @_used and @_section attributes for global variables and top-level functions

This adds:
- @_used attribute that flags as a global variable or a top-level function as
  "do not dead-strip" via llvm.used, roughly the equivalent of
  __attribute__((used)) in C/C++.
- @_section("...") attribute that places a global variable or a top-level
  function into a section with that name, roughly the equivalent of
  __attribute__((section("..."))) in C/C++.
2023-05-26 14:02:32 -07:00
Pavel Yaskevich
fe8fd91307 [AST] NFC: Fold PackConformance::isInvalid into ProtocolConformanceRef::isInvalid
Instead of making callers responsible for that (like in other cases),
let's fold the code check `isInvalid` to make mistakes less likely.
2023-05-26 08:53:11 -07:00
Slava Pestov
9b3faad523 Merge pull request #66126 from slavapestov/pack-element-refactoring
Preliminary work for introducing PackElementType
2023-05-26 09:13:53 -04:00