diff options
| author | Sean Callanan <scallanan@apple.com> | 2016-11-07 20:42:25 +0000 |
|---|---|---|
| committer | Sean Callanan <scallanan@apple.com> | 2016-11-07 20:42:25 +0000 |
| commit | 24c5fe6b343eaf2d1261786f573fd3d866b15ef9 (patch) | |
| tree | af16e9795b1e8de3dbaf7b00209313a015b52941 /clang/test/ASTMerge/Inputs/macro1.h | |
| parent | 5caae908b71c9a4f94a96e336b674f07598fe525 (diff) | |
| download | bcm5719-llvm-24c5fe6b343eaf2d1261786f573fd3d866b15ef9.tar.gz bcm5719-llvm-24c5fe6b343eaf2d1261786f573fd3d866b15ef9.zip | |
When the ASTImporter imports a source location, it avoids importing macro
expansions by calling getSpellingLoc(). That's great in most cases, but for
macros defined in the '<built-in>' source file, the source file is invalid
and does not import correctly, causing an assertion failure (the assertion
is Invalid SLocOffset or bad function choice).
A more reliable way to avoid this is to use getFileLoc(), which does not
return built-in locations. This avoids the crash but still preserves valid
source locations.
I've added a testcase that covers the previously crashing scenario.
https://reviews.llvm.org/D26054
llvm-svn: 286144
Diffstat (limited to 'clang/test/ASTMerge/Inputs/macro1.h')
| -rw-r--r-- | clang/test/ASTMerge/Inputs/macro1.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/test/ASTMerge/Inputs/macro1.h b/clang/test/ASTMerge/Inputs/macro1.h new file mode 100644 index 00000000000..f089e612543 --- /dev/null +++ b/clang/test/ASTMerge/Inputs/macro1.h @@ -0,0 +1,5 @@ +typedef void *VoidRef; + +void maybeNull( + int i, + __nullable VoidRef *__nullable); |

