File tree Expand file tree Collapse file tree 3 files changed +36
-0
lines changed Expand file tree Collapse file tree 3 files changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -98,6 +98,11 @@ void IRGenModule::emitClangDecl(const clang::Decl *decl) {
98
98
refFinder.TraverseDecl (executableDecl);
99
99
next = executableDecl;
100
100
}
101
+
102
+ if (auto var = dyn_cast<clang::VarDecl>(next))
103
+ if (!var->isFileVarDecl ())
104
+ continue ;
105
+
101
106
ClangCodeGen->HandleTopLevelDecl (clang::DeclGroupRef (next));
102
107
}
103
108
}
Original file line number Diff line number Diff line change
1
+ static inline int _no_prior_var () {
2
+ extern int var ;
3
+ return var ;
4
+ }
5
+
6
+ static inline int _no_prior_func () {
7
+ extern int func ();
8
+ return func ();
9
+ }
10
+
11
+ static int prior_var = 1 ;
12
+ static inline int _prior_var () {
13
+ extern int prior_var ;
14
+ return prior_var ;
15
+ }
16
+
17
+ static inline int prior_func () { return 1 ; }
18
+ static inline int _prior_func () {
19
+ extern int prior_func ();
20
+ return prior_func ();
21
+ }
Original file line number Diff line number Diff line change
1
+ // RUN: %target-swift-frontend -import-objc-header %S/Inputs/local_extern.h %s -emit-ir | %FileCheck %s
2
+ // CHECK: @var = external global i32
3
+ // CHECK: @prior_var = internal global i32
4
+ // CHECK: declare i32 @func
5
+ // CHECK: define internal i32 @prior_func
6
+
7
+ print ( " \( _no_prior_var ( ) ) " )
8
+ print ( " \( _no_prior_func ( ) ) " )
9
+ print ( " \( _prior_var ( ) ) " )
10
+ print ( " \( _prior_func ( ) ) " )
You can’t perform that action at this time.
0 commit comments