Skip to content

Commit ed5589b

Browse files
authored
Revert "[clang][analyzer] Format macro expansions" (llvm#172468)
Reverts llvm#156046 See llvm#156046 (comment) ``` 11.210 [660/22/4115] Linking CXX shared library lib/libclangAnalysis.so.22.0git FAILED: lib/libclangAnalysis.so.22.0git : && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-array-bounds -Wno-stringop-overread -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -O3 -DNDEBUG -Wl,-z,defs -Wl,-z,nodelete -Wl,-rpath-link,/home/botworker/builds/openmp-offload-amdgpu-runtime-2/llvm.build/./lib -Wl,--gc-sections -shared -Wl,-soname,libclangAnalysis.so.22.0git -o lib/libclangAnalysis.so.22.0git tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/AnalysisDeclContext.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/BodyFarm.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CalledOnceCheck.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CFG.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CFGReachabilityAnalysis.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CFGStmtMap.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CallGraph.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CloneDetection.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CocoaConventions.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/ConstructionContext.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/Consumed.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CodeInjector.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/Dominators.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/ExprMutationAnalyzer.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/FixitUtil.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/IntervalPartition.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/IssueHash.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/LiveVariables.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/MacroExpansionContext.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/ObjCNoReturn.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/PathDiagnostic.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/PostOrderCFGView.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/ProgramPoint.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/ReachableCode.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/RetainSummaryManager.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/ThreadSafety.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/ThreadSafetyCommon.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/ThreadSafetyLogical.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/ThreadSafetyTIL.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/UninitializedValues.cpp.o tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/UnsafeBufferUsage.cpp.o -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/builds/openmp-offload-amdgpu-runtime-2/llvm.build/lib:" lib/libclangASTMatchers.so.22.0git lib/libclangFormat.so.22.0git lib/libclangAST.so.22.0git lib/libclangLex.so.22.0git lib/libclangBasic.so.22.0git lib/libLLVMFrontendOpenMP.so.22.0git lib/libLLVMSupport.so.22.0git -Wl,-rpath-link,/home/botworker/builds/openmp-offload-amdgpu-runtime-2/llvm.build/lib && : /usr/bin/ld: tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/MacroExpansionContext.cpp.o: in function `clang::MacroExpansionContext::getFormattedExpandedText(clang::SourceLocation) const': MacroExpansionContext.cpp:(.text._ZNK5clang21MacroExpansionContext24getFormattedExpandedTextENS_14SourceLocationE+0x274): undefined reference to `clang::tooling::applyAllReplacements[abi:cxx11](llvm::StringRef, clang::tooling::Replacements const&)' collect2: error: ld returned 1 exit status ```
1 parent 35a2271 commit ed5589b

File tree

8 files changed

+139
-154
lines changed

8 files changed

+139
-154
lines changed

clang/include/clang/Analysis/MacroExpansionContext.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,6 @@ class MacroExpansionContext {
9696
std::optional<StringRef>
9797
getOriginalText(SourceLocation MacroExpansionLoc) const;
9898

99-
/// \param MacroExpansionLoc Must be the expansion location of a macro.
100-
/// \return A formatted representation of the textual representation of the
101-
/// token sequence which was substituted in place of the macro.
102-
/// If no macro was expanded at that location, returns std::nullopt.
103-
std::optional<StringRef>
104-
getFormattedExpandedText(SourceLocation MacroExpansionLoc) const;
105-
10699
LLVM_DUMP_METHOD void dumpExpansionRangesToStream(raw_ostream &OS) const;
107100
LLVM_DUMP_METHOD void dumpExpandedTextsToStream(raw_ostream &OS) const;
108101
LLVM_DUMP_METHOD void dumpExpansionRanges() const;
@@ -113,7 +106,6 @@ class MacroExpansionContext {
113106
using MacroExpansionText = SmallString<40>;
114107
using ExpansionMap = llvm::DenseMap<SourceLocation, MacroExpansionText>;
115108
using ExpansionRangeMap = llvm::DenseMap<SourceLocation, SourceLocation>;
116-
using FormattedExpansionMap = llvm::DenseMap<SourceLocation, std::string>;
117109

118110
/// Associates the textual representation of the expanded tokens at the given
119111
/// macro expansion location.
@@ -123,9 +115,6 @@ class MacroExpansionContext {
123115
/// substitution starting from a given macro expansion location.
124116
ExpansionRangeMap ExpansionRanges;
125117

126-
/// Caches formatted macro expansions keyed by expansion location.
127-
mutable FormattedExpansionMap FormattedExpandedTokens;
128-
129118
Preprocessor *PP = nullptr;
130119
SourceManager *SM = nullptr;
131120
const LangOptions &LangOpts;

clang/lib/Analysis/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ add_clang_library(clangAnalysis
4040
clangAST
4141
clangASTMatchers
4242
clangBasic
43-
clangFormat
4443
clangLex
4544

4645
DEPENDS

clang/lib/Analysis/MacroExpansionContext.cpp

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "clang/Analysis/MacroExpansionContext.h"
10-
#include "clang/Format/Format.h"
1110
#include "llvm/Support/Debug.h"
1211
#include <optional>
1312

@@ -133,35 +132,6 @@ MacroExpansionContext::getOriginalText(SourceLocation MacroExpansionLoc) const {
133132
LangOpts);
134133
}
135134

136-
std::optional<StringRef> MacroExpansionContext::getFormattedExpandedText(
137-
SourceLocation MacroExpansionLoc) const {
138-
std::optional<StringRef> ExpandedText = getExpandedText(MacroExpansionLoc);
139-
if (!ExpandedText)
140-
return std::nullopt;
141-
142-
auto [It, Inserted] =
143-
FormattedExpandedTokens.try_emplace(MacroExpansionLoc, "");
144-
if (!Inserted)
145-
return StringRef(It->getSecond());
146-
147-
clang::format::FormatStyle Style = clang::format::getLLVMStyle();
148-
149-
std::string MacroCodeBlock = ExpandedText->str();
150-
151-
std::vector<clang::tooling::Range> Ranges;
152-
Ranges.emplace_back(0, MacroCodeBlock.length());
153-
154-
clang::tooling::Replacements Replacements = clang::format::reformat(
155-
Style, MacroCodeBlock, Ranges, "<macro-expansion>");
156-
157-
llvm::Expected<std::string> Result =
158-
clang::tooling::applyAllReplacements(MacroCodeBlock, Replacements);
159-
160-
It->getSecond() = Result ? std::move(*Result) : std::move(MacroCodeBlock);
161-
162-
return StringRef(It->getSecond());
163-
}
164-
165135
void MacroExpansionContext::dumpExpansionRanges() const {
166136
dumpExpansionRangesToStream(llvm::dbgs());
167137
}

clang/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -835,7 +835,7 @@ getExpandedMacro(SourceLocation MacroExpansionLoc,
835835
const SourceManager &SM) {
836836
if (auto CTUMacroExpCtx =
837837
CTU.getMacroExpansionContextForSourceLocation(MacroExpansionLoc)) {
838-
return CTUMacroExpCtx->getFormattedExpandedText(MacroExpansionLoc);
838+
return CTUMacroExpCtx->getExpandedText(MacroExpansionLoc);
839839
}
840-
return MacroExpansions.getFormattedExpandedText(MacroExpansionLoc);
840+
return MacroExpansions.getExpandedText(MacroExpansionLoc);
841841
}

clang/test/Analysis/plist-macros-with-expansion-ctu.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ void test3(void) {
6666
// CHECK-NEXT: <key>file</key><integer>0</integer>
6767
// CHECK-NEXT: </dict>
6868
// CHECK-NEXT: <key>name</key><string>M</string>
69-
// CHECK-NEXT: <key>expansion</key><string>F1
69+
// CHECK-NEXT: <key>expansion</key><string>F1 (&amp;X )</string>
7070
// CHECK-NEXT: </dict>
7171
// CHECK-NEXT: </array>
7272

@@ -89,7 +89,7 @@ void test4(void) {
8989
// CHECK-NEXT: <key>file</key><integer>0</integer>
9090
// CHECK-NEXT: </dict>
9191
// CHECK-NEXT: <key>name</key><string>M</string>
92-
// CHECK-NEXT: <key>expansion</key><string>F2
92+
// CHECK-NEXT: <key>expansion</key><string>F2 (&amp;X )</string>
9393
// CHECK-NEXT: </dict>
9494
// CHECK-NEXT: </array>
9595

clang/test/Analysis/plist-macros-with-expansion.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ void test_strange_macro_expansion(void) {
2222
// CHECK-NEXT: <key>file</key><integer>0</integer>
2323
// CHECK-NEXT: </dict>
2424
// CHECK-NEXT: <key>name</key><string>STRANGE_FN(path)</string>
25-
// CHECK-NEXT: <key>expansion</key><string>STRANGE_FN
25+
// CHECK-NEXT: <key>expansion</key><string>STRANGE_FN (path ,0)</string>
2626
// CHECK-NEXT: </dict>
2727
// CHECK-NEXT: </array>
2828

0 commit comments

Comments
 (0)