Details
- Reviewers
sammccall - Commits
- rG55d96ac3dc56: [AST] Add RParen loc for decltype AutoTypeloc.
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
The relanded version in rG41fbdfa4d5601cccbcdc0ded8ef35190d502f7f3 seems to be breaking some builds with PCH for me, failing asserts like this:
clang: ../tools/clang/include/clang/Basic/SourceLocation.h:135: clang::SourceLocation clang::SourceLocation::getLocWithOffset(clang::SourceLocation::IntTy) const: Assertion `((getOffset()+Offset) & MacroIDBit) == 0 && "offset overflow"' failed.
This also breaks stage2 builds with debug info, e.g. https://green.lab.llvm.org/green/job/clang-stage2-Rthinlto/5088/console
Given that the bot has been red a while now, I reverted the commit eadb4cfeeff5 for now.
The crash should be reproducible when doing a stage2 build with debug info. It crashes, e.g. when building llvm-project/llvm/lib/Support/Timer.cpp
/Users/buildslave/jenkins/workspace/clang-stage2-Rthinlto/host-compiler/bin/clang++ -DGTEST_HAS_RTTI=0 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/Support -I/Users/buildslave/jenkins/workspace/clang-stage2-Rthinlto/llvm-project/llvm/lib/Support -Iinclude -I/Users/buildslave/jenkins/workspace/clang-stage2-Rthinlto/llvm-project/llvm/include -fno-stack-protector -fno-common -Wno-profile-instr-unprofiled -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -fmodules -fmodules-cache-path=/Users/buildslave/jenkins/workspace/clang-stage2-Rthinlto/clang-build/Build/module.cache -fcxx-modules -Xclang -fmodules-local-submodule-visibility -gmodules -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -fdiagnostics-color -flto=thin -O2 -g -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -std=c++14 -fno-exceptions -fno-rtti -MD -MT lib/Support/CMakeFiles/LLVMSupport.dir/Timer.cpp.o -MF lib/Support/CMakeFiles/LLVMSupport.dir/Timer.cpp.o.d -o lib/Support/CMakeFiles/LLVMSupport.dir/Timer.cpp.o -c /Users/buildslave/jenkins/workspace/clang-stage2-Rthinlto/llvm-project/llvm/lib/Support/Timer.cpp Assertion failed: (((getOffset()+Offset) & MacroIDBit) == 0 && "offset overflow"), function getLocWithOffset, file /Users/buildslave/jenkins/workspace/clang-stage1-RA/llvm-project/clang/include/clang/Basic/SourceLocation.h, line 135.
Thanks for raising this. It would be great if you can provide a reproduce case and a more detailed log. A failed PCH build usually indicates something wrong around the ASTReader/ASTWriter code, but I didn't spot out any issue there. At the mean time, I will try to investigate it.
Ok, now I managed to make a standalone reproducer: https://martin.st/temp/pch-preproc.hxx and https://martin.st/temp/main-preproc.cpp
$ bin/clang -target x86_64-w64-mingw32 -w -x c++-header -c pch-preproc.hxx -o pch-preproc.hxx.pch -std=c++17 -O3 $ bin/clang -target x86_64-w64-mingw32 -w -Xclang -include-pch -Xclang pch-preproc.hxx.pch -c main-preproc.cpp -std=c++17 -O3
Since this is changing serialization format you might have to do something like https://reviews.llvm.org/rGb8b7a9dcdcbc as well (see https://reviews.llvm.org/D73202 for background). I doubt that's the cause of mstorsjo's repro given that LLVM_APPEND_VC_REV is on by default, but it seems like a good thing to do in the reland regardless.
(We also saw this crash on chromium's bots, https://crbug.com/1286675. Thanks for the revert, and for the reduced repro!)
Thanks, everyone!
I manage to figure out the cause, the crash was caused by an arbitrary RPareLoc -- we missed to set the RPareLoc in TreeTransform::TransformAutoType. I reland the patch in ab3f100bec03d72ecee947a323c51698d4b95207.
I rebuilt my full, non-reduced testcase now, and it seems like it built fine this time. Thanks!