{"action":"created","comment":{"url":"https://api.github.com/repos/apple/swift/pulls/comments/187505547","pull_request_review_id":119301271,"id":187505547,"diff_hunk":"@@ -434,10 +434,31 @@ static ModuleDecl *createBuiltinModule(ASTContext &ctx) {\n   return M;\n }\n \n+inline ASTContext::Implementation &ASTContext::getImpl() const {\n+  auto end = reinterpret_cast<void*>(const_cast<ASTContext*>(this) + 1);\n+  auto impl = llvm::alignAddr(end, alignof(Implementation));\n+  return *reinterpret_cast<Implementation*>(impl);\n+}\n+\n+ASTContext *ASTContext::get(LangOptions &langOpts,\n+                            SearchPathOptions &SearchPathOpts,\n+                            SourceManager &SourceMgr,\n+                            DiagnosticEngine &Diags) {\n+  // If more than two data structures are concatentated, then the aggregate\n+  // size math needs to become more complicated due to per-struct alignment\n+  // constraints.\n+  auto align = std::max(alignof(ASTContext), alignof(Implementation));\n+  auto size = llvm::alignTo(sizeof(ASTContext) + sizeof(Implementation), align);\n+  auto mem = AlignedAlloc(size, align);","path":"lib/AST/ASTContext.cpp","position":37,"original_position":37,"commit_id":"f0c106c0e3779575a51b57ff867ad46031ee402f","original_commit_id":"f0c106c0e3779575a51b57ff867ad46031ee402f","user":{"login":"huonw","id":1203825,"avatar_url":"https://avatars1.githubusercontent.com/u/1203825?v=4","gravatar_id":"","url":"https://api.github.com/users/huonw","html_url":"https://github.com/huonw","followers_url":"https://api.github.com/users/huonw/followers","following_url":"https://api.github.com/users/huonw/following{/other_user}","gists_url":"https://api.github.com/users/huonw/gists{/gist_id}","starred_url":"https://api.github.com/users/huonw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/huonw/subscriptions","organizations_url":"https://api.github.com/users/huonw/orgs","repos_url":"https://api.github.com/users/huonw/repos","events_url":"https://api.github.com/users/huonw/events{/privacy}","received_events_url":"https://api.github.com/users/huonw/received_events","type":"User","site_admin":false},"body":"Unfortunately I think this is causing ASAN problems. The returned pointer is put into a `unique_ptr` at\r\n\r\nhttps://github.com/apple/swift/blob/9cd07e9db30b7fe30ea5fcec422a40ea9bfd4995/lib/Frontend/Frontend.cpp#L152-L154\r\n\r\nand then destroyed with `unique_ptr::reset` (which seems to use `delete` internally):\r\n\r\nhttps://github.com/apple/swift/blob/9cd07e9db30b7fe30ea5fcec422a40ea9bfd4995/lib/Frontend/Frontend.cpp#L887\r\n\r\n[ASAN doesn't like the mismatched allocators](https://ci.swift.org/job/oss-swift-incremental-ASAN-RA-ubuntu-16_04/3229):\r\n\r\n```\r\n15:25:33 ==14342==ERROR: AddressSanitizer: alloc-dealloc-mismatch (malloc vs operator delete) on 0x621000016900\r\n15:25:33     #0 0x6f3e60 in operator delete(void*) (/home/buildnode/jenkins/workspace/oss-swift-incremental-ASAN-RA-ubuntu-16_04/buildbot_incremental_asan/swift-linux-x86_64/bin/swift+0x6f3e60)\r\n15:25:33     #1 0x2b6cd55 in swift::CompilerInstance::freeASTContext() (/home/buildnode/jenkins/workspace/oss-swift-incremental-ASAN-RA-ubuntu-16_04/buildbot_incremental_asan/swift-linux-x86_64/bin/swift+0x2b6cd55)\r\n15:25:33     #2 0x7ebbe0 in performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) (/home/buildnode/jenkins/workspace/oss-swift-incremental-ASAN-RA-ubuntu-16_04/buildbot_incremental_asan/swift-linux-x86_64/bin/swift+0x7ebbe0)\r\n15:25:33     #3 0x7de4bf in swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/home/buildnode/jenkins/workspace/oss-swift-incremental-ASAN-RA-ubuntu-16_04/buildbot_incremental_asan/swift-linux-x86_64/bin/swift+0x7de4bf)\r\n15:25:33     #4 0x6fd1e1 in main (/home/buildnode/jenkins/workspace/oss-swift-incremental-ASAN-RA-ubuntu-16_04/buildbot_incremental_asan/swift-linux-x86_64/bin/swift+0x6fd1e1)\r\n15:25:33     #5 0x7f3969e6882f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)\r\n15:25:33     #6 0x622148 in _start (/home/buildnode/jenkins/workspace/oss-swift-incremental-ASAN-RA-ubuntu-16_04/buildbot_incremental_asan/swift-linux-x86_64/bin/swift+0x622148)\r\n15:25:33 \r\n15:25:33 0x621000016900 is located 0 bytes inside of 4680-byte region [0x621000016900,0x621000017b48)\r\n15:25:33 allocated by thread T0 here:\r\n15:25:33     #0 0x6c2b60 in posix_memalign (/home/buildnode/jenkins/workspace/oss-swift-incremental-ASAN-RA-ubuntu-16_04/buildbot_incremental_asan/swift-linux-x86_64/bin/swift+0x6c2b60)\r\n15:25:33     #1 0x3cba8e7 in swift::ASTContext::get(swift::LangOptions&, swift::SearchPathOptions&, swift::SourceManager&, swift::DiagnosticEngine&) (/home/buildnode/jenkins/workspace/oss-swift-incremental-ASAN-RA-ubuntu-16_04/buildbot_incremental_asan/swift-linux-x86_64/bin/swift+0x3cba8e7)\r\n15:25:33     #2 0x2b61306 in swift::CompilerInstance::setup(swift::CompilerInvocation const&) (/home/buildnode/jenkins/workspace/oss-swift-incremental-ASAN-RA-ubuntu-16_04/buildbot_incremental_asan/swift-linux-x86_64/bin/swift+0x2b61306)\r\n15:25:33     #3 0x7ddc83 in swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/home/buildnode/jenkins/workspace/oss-swift-incremental-ASAN-RA-ubuntu-16_04/buildbot_incremental_asan/swift-linux-x86_64/bin/swift+0x7ddc83)\r\n15:25:33     #4 0x6fd1e1 in main (/home/buildnode/jenkins/workspace/oss-swift-incremental-ASAN-RA-ubuntu-16_04/buildbot_incremental_asan/swift-linux-x86_64/bin/swift+0x6fd1e1)\r\n15:25:33     #5 0x7f3969e6882f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)\r\n```","created_at":"2018-05-11T02:13:56Z","updated_at":"2018-05-11T02:14:08Z","html_url":"https://github.com/apple/swift/pull/16469#discussion_r187505547","pull_request_url":"https://api.github.com/repos/apple/swift/pulls/16469","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/apple/swift/pulls/comments/187505547"},"html":{"href":"https://github.com/apple/swift/pull/16469#discussion_r187505547"},"pull_request":{"href":"https://api.github.com/repos/apple/swift/pulls/16469"}}},"pull_request":{"url":"https://api.github.com/repos/apple/swift/pulls/16469","id":186901114,"html_url":"https://github.com/apple/swift/pull/16469","diff_url":"https://github.com/apple/swift/pull/16469.diff","patch_url":"https://github.com/apple/swift/pull/16469.patch","issue_url":"https://api.github.com/repos/apple/swift/issues/16469","number":16469,"state":"closed","locked":false,"title":"[AST] NFC: Avoid pointer indirection with ASTContext Impl storage","user":{"login":"davezarzycki","id":1071982,"avatar_url":"https://avatars2.githubusercontent.com/u/1071982?v=4","gravatar_id":"","url":"https://api.github.com/users/davezarzycki","html_url":"https://github.com/davezarzycki","followers_url":"https://api.github.com/users/davezarzycki/followers","following_url":"https://api.github.com/users/davezarzycki/following{/other_user}","gists_url":"https://api.github.com/users/davezarzycki/gists{/gist_id}","starred_url":"https://api.github.com/users/davezarzycki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davezarzycki/subscriptions","organizations_url":"https://api.github.com/users/davezarzycki/orgs","repos_url":"https://api.github.com/users/davezarzycki/repos","events_url":"https://api.github.com/users/davezarzycki/events{/privacy}","received_events_url":"https://api.github.com/users/davezarzycki/received_events","type":"User","site_admin":false},"body":"Most of this change is mechanical: `Impl` -> `getImpl()`.","created_at":"2018-05-09T12:04:14Z","updated_at":"2018-05-11T02:14:08Z","closed_at":"2018-05-10T20:03:48Z","merged_at":"2018-05-10T20:03:48Z","merge_commit_sha":"9cd07e9db30b7fe30ea5fcec422a40ea9bfd4995","assignee":null,"assignees":[],"requested_reviewers":[{"login":"davidungar","id":461264,"avatar_url":"https://avatars1.githubusercontent.com/u/461264?v=4","gravatar_id":"","url":"https://api.github.com/users/davidungar","html_url":"https://github.com/davidungar","followers_url":"https://api.github.com/users/davidungar/followers","following_url":"https://api.github.com/users/davidungar/following{/other_user}","gists_url":"https://api.github.com/users/davidungar/gists{/gist_id}","starred_url":"https://api.github.com/users/davidungar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidungar/subscriptions","organizations_url":"https://api.github.com/users/davidungar/orgs","repos_url":"https://api.github.com/users/davidungar/repos","events_url":"https://api.github.com/users/davidungar/events{/privacy}","received_events_url":"https://api.github.com/users/davidungar/received_events","type":"User","site_admin":false},{"login":"DougGregor","id":989428,"avatar_url":"https://avatars3.githubusercontent.com/u/989428?v=4","gravatar_id":"","url":"https://api.github.com/users/DougGregor","html_url":"https://github.com/DougGregor","followers_url":"https://api.github.com/users/DougGregor/followers","following_url":"https://api.github.com/users/DougGregor/following{/other_user}","gists_url":"https://api.github.com/users/DougGregor/gists{/gist_id}","starred_url":"https://api.github.com/users/DougGregor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DougGregor/subscriptions","organizations_url":"https://api.github.com/users/DougGregor/orgs","repos_url":"https://api.github.com/users/DougGregor/repos","events_url":"https://api.github.com/users/DougGregor/events{/privacy}","received_events_url":"https://api.github.com/users/DougGregor/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/apple/swift/pulls/16469/commits","review_comments_url":"https://api.github.com/repos/apple/swift/pulls/16469/comments","review_comment_url":"https://api.github.com/repos/apple/swift/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apple/swift/issues/16469/comments","statuses_url":"https://api.github.com/repos/apple/swift/statuses/f0c106c0e3779575a51b57ff867ad46031ee402f","head":{"label":"davezarzycki:nfc_inline_ASTContext_Impl","ref":"nfc_inline_ASTContext_Impl","sha":"f0c106c0e3779575a51b57ff867ad46031ee402f","user":{"login":"davezarzycki","id":1071982,"avatar_url":"https://avatars2.githubusercontent.com/u/1071982?v=4","gravatar_id":"","url":"https://api.github.com/users/davezarzycki","html_url":"https://github.com/davezarzycki","followers_url":"https://api.github.com/users/davezarzycki/followers","following_url":"https://api.github.com/users/davezarzycki/following{/other_user}","gists_url":"https://api.github.com/users/davezarzycki/gists{/gist_id}","starred_url":"https://api.github.com/users/davezarzycki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davezarzycki/subscriptions","organizations_url":"https://api.github.com/users/davezarzycki/orgs","repos_url":"https://api.github.com/users/davezarzycki/repos","events_url":"https://api.github.com/users/davezarzycki/events{/privacy}","received_events_url":"https://api.github.com/users/davezarzycki/received_events","type":"User","site_admin":false},"repo":{"id":47463067,"name":"swift","full_name":"davezarzycki/swift","owner":{"login":"davezarzycki","id":1071982,"avatar_url":"https://avatars2.githubusercontent.com/u/1071982?v=4","gravatar_id":"","url":"https://api.github.com/users/davezarzycki","html_url":"https://github.com/davezarzycki","followers_url":"https://api.github.com/users/davezarzycki/followers","following_url":"https://api.github.com/users/davezarzycki/following{/other_user}","gists_url":"https://api.github.com/users/davezarzycki/gists{/gist_id}","starred_url":"https://api.github.com/users/davezarzycki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davezarzycki/subscriptions","organizations_url":"https://api.github.com/users/davezarzycki/orgs","repos_url":"https://api.github.com/users/davezarzycki/repos","events_url":"https://api.github.com/users/davezarzycki/events{/privacy}","received_events_url":"https://api.github.com/users/davezarzycki/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/davezarzycki/swift","description":null,"fork":true,"url":"https://api.github.com/repos/davezarzycki/swift","forks_url":"https://api.github.com/repos/davezarzycki/swift/forks","keys_url":"https://api.github.com/repos/davezarzycki/swift/keys{/key_id}","collaborators_url":"https://api.github.com/repos/davezarzycki/swift/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/davezarzycki/swift/teams","hooks_url":"https://api.github.com/repos/davezarzycki/swift/hooks","issue_events_url":"https://api.github.com/repos/davezarzycki/swift/issues/events{/number}","events_url":"https://api.github.com/repos/davezarzycki/swift/events","assignees_url":"https://api.github.com/repos/davezarzycki/swift/assignees{/user}","branches_url":"https://api.github.com/repos/davezarzycki/swift/branches{/branch}","tags_url":"https://api.github.com/repos/davezarzycki/swift/tags","blobs_url":"https://api.github.com/repos/davezarzycki/swift/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/davezarzycki/swift/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/davezarzycki/swift/git/refs{/sha}","trees_url":"https://api.github.com/repos/davezarzycki/swift/git/trees{/sha}","statuses_url":"https://api.github.com/repos/davezarzycki/swift/statuses/{sha}","languages_url":"https://api.github.com/repos/davezarzycki/swift/languages","stargazers_url":"https://api.github.com/repos/davezarzycki/swift/stargazers","contributors_url":"https://api.github.com/repos/davezarzycki/swift/contributors","subscribers_url":"https://api.github.com/repos/davezarzycki/swift/subscribers","subscription_url":"https://api.github.com/repos/davezarzycki/swift/subscription","commits_url":"https://api.github.com/repos/davezarzycki/swift/commits{/sha}","git_commits_url":"https://api.github.com/repos/davezarzycki/swift/git/commits{/sha}","comments_url":"https://api.github.com/repos/davezarzycki/swift/comments{/number}","issue_comment_url":"https://api.github.com/repos/davezarzycki/swift/issues/comments{/number}","contents_url":"https://api.github.com/repos/davezarzycki/swift/contents/{+path}","compare_url":"https://api.github.com/repos/davezarzycki/swift/compare/{base}...{head}","merges_url":"https://api.github.com/repos/davezarzycki/swift/merges","archive_url":"https://api.github.com/repos/davezarzycki/swift/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/davezarzycki/swift/downloads","issues_url":"https://api.github.com/repos/davezarzycki/swift/issues{/number}","pulls_url":"https://api.github.com/repos/davezarzycki/swift/pulls{/number}","milestones_url":"https://api.github.com/repos/davezarzycki/swift/milestones{/number}","notifications_url":"https://api.github.com/repos/davezarzycki/swift/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/davezarzycki/swift/labels{/name}","releases_url":"https://api.github.com/repos/davezarzycki/swift/releases{/id}","deployments_url":"https://api.github.com/repos/davezarzycki/swift/deployments","created_at":"2015-12-05T16:23:41Z","updated_at":"2017-08-16T19:02:08Z","pushed_at":"2018-05-10T21:23:01Z","git_url":"git://github.com/davezarzycki/swift.git","ssh_url":"git@github.com:davezarzycki/swift.git","clone_url":"https://github.com/davezarzycki/swift.git","svn_url":"https://github.com/davezarzycki/swift","homepage":"","size":267105,"stargazers_count":1,"watchers_count":1,"language":"C++","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":1,"default_branch":"github_readme"}},"base":{"label":"apple:master","ref":"master","sha":"e22bed22be7154d288a57063b21b9f2f31b8c21a","user":{"login":"apple","id":10639145,"avatar_url":"https://avatars0.githubusercontent.com/u/10639145?v=4","gravatar_id":"","url":"https://api.github.com/users/apple","html_url":"https://github.com/apple","followers_url":"https://api.github.com/users/apple/followers","following_url":"https://api.github.com/users/apple/following{/other_user}","gists_url":"https://api.github.com/users/apple/gists{/gist_id}","starred_url":"https://api.github.com/users/apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apple/subscriptions","organizations_url":"https://api.github.com/users/apple/orgs","repos_url":"https://api.github.com/users/apple/repos","events_url":"https://api.github.com/users/apple/events{/privacy}","received_events_url":"https://api.github.com/users/apple/received_events","type":"Organization","site_admin":false},"repo":{"id":44838949,"name":"swift","full_name":"apple/swift","owner":{"login":"apple","id":10639145,"avatar_url":"https://avatars0.githubusercontent.com/u/10639145?v=4","gravatar_id":"","url":"https://api.github.com/users/apple","html_url":"https://github.com/apple","followers_url":"https://api.github.com/users/apple/followers","following_url":"https://api.github.com/users/apple/following{/other_user}","gists_url":"https://api.github.com/users/apple/gists{/gist_id}","starred_url":"https://api.github.com/users/apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apple/subscriptions","organizations_url":"https://api.github.com/users/apple/orgs","repos_url":"https://api.github.com/users/apple/repos","events_url":"https://api.github.com/users/apple/events{/privacy}","received_events_url":"https://api.github.com/users/apple/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apple/swift","description":"The Swift Programming Language","fork":false,"url":"https://api.github.com/repos/apple/swift","forks_url":"https://api.github.com/repos/apple/swift/forks","keys_url":"https://api.github.com/repos/apple/swift/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apple/swift/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apple/swift/teams","hooks_url":"https://api.github.com/repos/apple/swift/hooks","issue_events_url":"https://api.github.com/repos/apple/swift/issues/events{/number}","events_url":"https://api.github.com/repos/apple/swift/events","assignees_url":"https://api.github.com/repos/apple/swift/assignees{/user}","branches_url":"https://api.github.com/repos/apple/swift/branches{/branch}","tags_url":"https://api.github.com/repos/apple/swift/tags","blobs_url":"https://api.github.com/repos/apple/swift/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apple/swift/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apple/swift/git/refs{/sha}","trees_url":"https://api.github.com/repos/apple/swift/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apple/swift/statuses/{sha}","languages_url":"https://api.github.com/repos/apple/swift/languages","stargazers_url":"https://api.github.com/repos/apple/swift/stargazers","contributors_url":"https://api.github.com/repos/apple/swift/contributors","subscribers_url":"https://api.github.com/repos/apple/swift/subscribers","subscription_url":"https://api.github.com/repos/apple/swift/subscription","commits_url":"https://api.github.com/repos/apple/swift/commits{/sha}","git_commits_url":"https://api.github.com/repos/apple/swift/git/commits{/sha}","comments_url":"https://api.github.com/repos/apple/swift/comments{/number}","issue_comment_url":"https://api.github.com/repos/apple/swift/issues/comments{/number}","contents_url":"https://api.github.com/repos/apple/swift/contents/{+path}","compare_url":"https://api.github.com/repos/apple/swift/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apple/swift/merges","archive_url":"https://api.github.com/repos/apple/swift/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apple/swift/downloads","issues_url":"https://api.github.com/repos/apple/swift/issues{/number}","pulls_url":"https://api.github.com/repos/apple/swift/pulls{/number}","milestones_url":"https://api.github.com/repos/apple/swift/milestones{/number}","notifications_url":"https://api.github.com/repos/apple/swift/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apple/swift/labels{/name}","releases_url":"https://api.github.com/repos/apple/swift/releases{/id}","deployments_url":"https://api.github.com/repos/apple/swift/deployments","created_at":"2015-10-23T21:15:07Z","updated_at":"2018-05-11T02:06:04Z","pushed_at":"2018-05-11T02:09:11Z","git_url":"git://github.com/apple/swift.git","ssh_url":"git@github.com:apple/swift.git","clone_url":"https://github.com/apple/swift.git","svn_url":"https://github.com/apple/swift","homepage":"https://swift.org/","size":287481,"stargazers_count":43760,"watchers_count":43760,"language":"C++","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":6889,"mirror_url":null,"archived":false,"open_issues_count":322,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":6889,"open_issues":322,"watchers":43760,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apple/swift/pulls/16469"},"html":{"href":"https://github.com/apple/swift/pull/16469"},"issue":{"href":"https://api.github.com/repos/apple/swift/issues/16469"},"comments":{"href":"https://api.github.com/repos/apple/swift/issues/16469/comments"},"review_comments":{"href":"https://api.github.com/repos/apple/swift/pulls/16469/comments"},"review_comment":{"href":"https://api.github.com/repos/apple/swift/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apple/swift/pulls/16469/commits"},"statuses":{"href":"https://api.github.com/repos/apple/swift/statuses/f0c106c0e3779575a51b57ff867ad46031ee402f"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"huonw"}}