Skip to content

Commit e9f8eb0

Browse files
committed
ClangImporter: support __isoc_va_list for WASI/musl
1 parent 6c50414 commit e9f8eb0

File tree

5 files changed

+22
-1
lines changed

5 files changed

+22
-1
lines changed

lib/ClangImporter/ImportType.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -787,7 +787,7 @@ namespace {
787787
}
788788

789789
static const llvm::StringLiteral vaListNames[] = {
790-
"va_list", "__gnuc_va_list", "__va_list"
790+
"va_list", "__gnuc_va_list", "__isoc_va_list", "__va_list"
791791
};
792792

793793
ImportHint hint = ImportHint::None;

lib/ClangImporter/MappedTypes.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ MAP_STDLIB_TYPE("u_int64_t", UnsignedInt, 64, "UInt64", false, DoNothing)
128128
// There's an explicit workaround in ImportType.cpp's VisitDecayedType for that.
129129
MAP_STDLIB_TYPE("va_list", VaList, 0, "CVaListPointer", false, DoNothing)
130130
MAP_STDLIB_TYPE("__gnuc_va_list", VaList, 0, "CVaListPointer", false, DoNothing)
131+
MAP_STDLIB_TYPE("__isoc_va_list", VaList, 0, "CVaListPointer", false, DoNothing)
131132
MAP_STDLIB_TYPE("__va_list", VaList, 0, "CVaListPointer", false, DoNothing)
132133

133134
// libkern/OSTypes.h types.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module ImportCVAList {
2+
header "va_list.h"
3+
export *
4+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#include <stdarg.h>
2+
3+
typedef va_list __gnuc_va_list;
4+
typedef va_list __isoc_va_list;
5+
typedef va_list __va_list;
6+
7+
va_list va;
8+
__gnuc_va_list gnu;
9+
__isoc_va_list isoC;
10+
__va_list underscore;

test/Interop/C/va_list/va_list.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// RUN: %target-swift-ide-test -print-module -module-to-print=ImportCVAList -I %S/Inputs -source-filename=x | %FileCheck %s
2+
3+
// CHECK: var va: CVaListPointer
4+
// CHECK: var gnu: CVaListPointer
5+
// CHECK: var isoC: CVaListPointer
6+
// CHECK: var underscore: CVaListPointer

0 commit comments

Comments
 (0)