SuccessChanges

Summary

  1. [InstrProfiling] Fix instrprof-gc-sections.c test (details)
  2. [NFC][llvm-dwarfdump] Don't calculate unnecessary stats (details)
  3. [mlir] Mark std.subview as NoSideEffect (details)
  4. [clang][cli] Stop creating '-Wno-stdlibcxx-not-found' in cc1 (details)
  5. [clang][cli] Pass '-Wspir-compat' to cc1 from driver (details)
  6. [clang][CodeComplete] Ensure there are no crashes when completing with ParenListExprs as LHS (details)
  7. [WebAssembly] call_indirect issues table number relocs (details)
  8. [ARM] Move double vector insert patterns using vins to DAG combine (details)
  9. [VPlan] Manage pairs of incoming (VPValue, VPBB) in VPWidenPHIRecipe. (details)
  10. [analyzer] Introduce MacroExpansionContext to libAnalysis (details)
  11. [analyzer] Create MacroExpansionContext member in AnalysisConsumer (details)
  12. [analyzer] Use the MacroExpansionContext for macro expansions in plists (details)
  13. [analyzer][CTU] API for CTU macro expansions (details)
  14. [ARM] Remove dead lowering code. NFC (details)
  15. [flang][driver] Add -Xflang and make -test-io a frontend-only flang (details)
  16. [InstCombine] Add smulo NumSignBits test from D97170 (details)
  17. [VPlan] Skip VPWidenPHIRecipe in VPInterleavedACcessInfo. (details)
Commit 97184ab99c46e35ae94f828ee90f5d6af2c47e11 by phosek
[InstrProfiling] Fix instrprof-gc-sections.c test

After D97110 __llvm_prof_cnts has the nobits type so it's empty.
The file was modifiedcompiler-rt/test/profile/instrprof-gc-sections.c
Commit 52113451fbee6c34a6024cf82186709431ff6f3a by djtodoro
[NFC][llvm-dwarfdump] Don't calculate unnecessary stats

Small optimization of the code -- No need to calculate any stats
for NULL nodes, and also no need to call the collectStatsForDie()
if it is the CU itself.

Differential Revision: https://reviews.llvm.org/D96871
The file was modifiedllvm/tools/llvm-dwarfdump/Statistics.cpp
Commit 5b20d80a03ba8848bb0504dd70dc46aa47037fd2 by tpopp
[mlir] Mark std.subview as NoSideEffect

Differential Revision: https://reviews.llvm.org/D96951
The file was modifiedmlir/include/mlir/Dialect/StandardOps/IR/Ops.td
Commit bf15697e9b66b8f7e6f3f7c510a259651810bd29 by Jan Svoboda
[clang][cli] Stop creating '-Wno-stdlibcxx-not-found' in cc1

This patch stops creating the '-Wno-stdlibcxx-not-found' argument in `CompilerInvocation::CreateFromArgs`.

The code was added in 2e7ab55e657f (a follow-up to D48297). However, D61963 removes relevant tests and starts explicitly passing '-Wno-stdlibcxx-not-found' to the driver. I think it's fair to assume this is a dead code.

Reviewed By: dexonsmith

Differential Revision: https://reviews.llvm.org/D97042
The file was modifiedclang/lib/Frontend/CompilerInvocation.cpp
Commit 820e0c49fc48024d8b426f4b10b50b5b5659a705 by Jan Svoboda
[clang][cli] Pass '-Wspir-compat' to cc1 from driver

This patch moves the creation of the '-Wspir-compat' argument from cc1 to the driver.

Without this change, generating command line arguments from `CompilerInvocation` cannot be done reliably: there's no way to distinguish whether '-Wspir-compat' was passed to cc1 on the command line (should be generated), or if it was created within `CompilerInvocation::CreateFromArgs` (should not be generated).

This is also in line with how other '-W' flags are handled.

(This was introduced in D21567.)

Reviewed By: Anastasia

Differential Revision: https://reviews.llvm.org/D97041
The file was modifiedclang/lib/Frontend/CompilerInvocation.cpp
The file was modifiedclang/test/Driver/opencl.cl
The file was modifiedclang/test/SemaOpenCL/sampler_t.cl
The file was modifiedclang/lib/Driver/ToolChains/Clang.cpp
Commit f10137399a3c9239a6acd1d3df12a40766b64759 by kadircet
[clang][CodeComplete] Ensure there are no crashes when completing with ParenListExprs as LHS

Differential Revision: https://reviews.llvm.org/D96950
The file was modifiedclang/lib/Sema/SemaCodeComplete.cpp
Commit 861dbe1a021e6439af837b72b219fb9c449a57ae by wingo
[WebAssembly] call_indirect issues table number relocs

If the reference-types feature is enabled, call_indirect will explicitly
reference its corresponding function table via `TABLE_NUMBER`
relocations against a table symbol.

Also, as before, address-taken functions can also cause the function
table to be created, only with reference-types they additionally cause a
symbol table entry to be emitted.

We abuse the used-in-reloc flag on symbols to indicate which tables
should end up in the symbol table.  We do this because unfortunately
older wasm-ld will carp if it see a table symbol.

Differential Revision: https://reviews.llvm.org/D90948
The file was modifiedlld/test/wasm/compress-relocs.ll
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
The file was modifiedllvm/include/llvm/MC/MCSymbolWasm.h
The file was modifiedllvm/test/MC/WebAssembly/weak-alias.s
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp
The file was modifiedllvm/lib/MC/WasmObjectWriter.cpp
The file was modifiedllvm/test/CodeGen/WebAssembly/function-pointer64.ll
The file was addedllvm/test/MC/WebAssembly/call-indirect-relocs.s
The file was modifiedllvm/test/MC/WebAssembly/type-index.s
The file was modifiedllvm/test/CodeGen/WebAssembly/multivalue.ll
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyUtilities.cpp
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp
The file was modifiedllvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyInstPrinter.cpp
The file was modifiedllvm/test/MC/WebAssembly/basic-assembly.s
The file was modifiedllvm/test/MC/WebAssembly/function-alias.ll
The file was modifiedllvm/test/MC/WebAssembly/reloc-pic.s
The file was modifiedllvm/test/MC/WebAssembly/reloc-code.ll
The file was modifiedllvm/test/MC/WebAssembly/tail-call-encodings.s
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyUtilities.h
The file was modifiedllvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyInstrCall.td
Commit 21a4faab60c34b8a8c4d09a5ffac50ded8163208 by david.green
[ARM] Move double vector insert patterns using vins to DAG combine

This removes the existing patterns for inserting two lanes into an
f16/i16 vector register using VINS, instead using a DAG combine to
pattern match the same code sequences. The tablegen patterns were
already on the large side (foreach LANE = [0, 2, 4, 6]) and were not
handling all the cases they could. Moving that to a DAG combine, whilst
not less code, allows us to better control and expand the selection of
VINSs. Additionally this allows us to remove the AddedComplexity on
VCVTT.

The extra trick that this has learned in the process is to move two
adjacent lanes using a single f32 vmov, allowing some extra
inefficiencies to be removed.

Differenial Revision: https://reviews.llvm.org/D96876
The file was modifiedllvm/test/CodeGen/Thumb2/mve-masked-ldst.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vst2.ll
The file was modifiedllvm/lib/Target/ARM/ARMInstrVFP.td
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-ind16-scaled.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vld3.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vld4.ll
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/fast-fp-loops.ll
The file was modifiedllvm/lib/Target/ARM/ARMInstrMVE.td
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vcvt.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-minmax.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-simple-arith.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vst3.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-shufflemov.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-shuffle.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-ptrs.ll
The file was modifiedllvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vldst4.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-div-expand.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-float16regloops.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vld2.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vst4.ll
Commit 15a74b64dfa9bc1213cd582415f849b4dba51bad by flo
[VPlan] Manage pairs of incoming (VPValue, VPBB) in VPWidenPHIRecipe.

This patch extends VPWidenPHIRecipe to manage pairs of incoming
(VPValue, VPBasicBlock) in the VPlan native path. This is made possible
because we now directly manage defined VPValues for recipes.

By keeping both the incoming value and block in the recipe directly,
code-generation in the VPlan native path becomes independent of the
predecessor ordering when fixing up non-induction phis, which currently
can cause crashes in the VPlan native path.

This fixes PR45958.

Reviewed By: sguggill

Differential Revision: https://reviews.llvm.org/D96773
The file was modifiedllvm/test/Transforms/LoopVectorize/vplan-vectorize-inner-loop-reduction.ll
The file was modifiedllvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
The file was modifiedllvm/test/Transforms/LoopVectorize/outer_loop_test1.ll
The file was modifiedllvm/test/Transforms/LoopVectorize/outer_loop_test2.ll
The file was modifiedllvm/lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp
The file was addedllvm/test/Transforms/LoopVectorize/outer-loop-vec-phi-predecessor-order.ll
The file was modifiedllvm/test/Transforms/LoopVectorize/AArch64/outer_loop_test1_no_explicit_vect_width.ll
The file was modifiedllvm/lib/Transforms/Vectorize/LoopVectorize.cpp
The file was modifiedllvm/test/Transforms/LoopVectorize/X86/outer_loop_test1_no_explicit_vect_width.ll
The file was modifiedllvm/lib/Transforms/Vectorize/VPlan.h
Commit 6e3071007b4c9438d2ae49476de87db30d6d24e9 by balazsbenics
[analyzer] Introduce MacroExpansionContext to libAnalysis

Introduce `MacroExpansionContext` to track what and how macros in a translation
unit expand. This is the first element of the patch-stack in this direction.

The main goal is to substitute the current macro expansion generator in the
`PlistsDiagnostics`, but all the other `DiagnosticsConsumer` could benefit from
this.

`getExpandedText` and `getOriginalText` are the primary functions of this class.
The former can provide you the text that was the result of the macro expansion
chain starting from a `SourceLocation`.
While the latter will tell you **what text** was in the original source code
replaced by the macro expansion chain from that location.

Here is an example:

  void bar();
  #define retArg(x) x
  #define retArgUnclosed retArg(bar()
  #define BB CC
  #define applyInt BB(int)
  #define CC(x) retArgUnclosed

  void unbalancedMacros() {
    applyInt  );
  //^~~~~~~~~~^ is the substituted range
  // Original text is "applyInt  )"
  // Expanded text is "bar()"
  }

  #define expandArgUnclosedCommaExpr(x) (x, bar(), 1
  #define f expandArgUnclosedCommaExpr

  void unbalancedMacros2() {
    int x =  f(f(1))  ));  // Look at the parenthesis!
  //         ^~~~~~^ is the substituted range
  // Original text is "f(f(1))"
  // Expanded text is "((1,bar(),1,bar(),1"
  }

Might worth investigating how to provide a reusable component, which could be
used for example by a standalone tool eg. expanding all macros to their
definitions.

I borrowed the main idea from the `PrintPreprocessedOutput.cpp` Frontend
component, providing a `PPCallbacks` instance hooking the preprocessor events.
I'm using that for calculating the source range where tokens will be expanded
to. I'm also using the `Preprocessor`'s `OnToken` callback, via the
`Preprocessor::setTokenWatcher` to reconstruct the expanded text.

Unfortunately, I concatenate the token's string representation without any
whitespaces except if the token is an identifier when I emit an extra space
to produce valid code for `int var` token sequences.
This could be improved later if needed.

Patch-stack:
  1) D93222 (this one) Introduces the MacroExpansionContext class and unittests

  2) D93223 Create MacroExpansionContext member in AnalysisConsumer and pass
     down to the diagnostics consumers

  3) D93224 Use the MacroExpansionContext for macro expansions in plists
     It replaces the 'old' macro expansion mechanism.

  4) D94673 API for CTU macro expansions
     You should be able to get a `MacroExpansionContext` for each imported TU.
     Right now it will just return `llvm::None` as this is not implemented yet.

  5) FIXME: Implement macro expansion tracking for imported TUs as well.

It would also relieve us from bugs like:
  - [fixed] D86135
  - [confirmed] The `__VA_ARGS__` and other macro nitty-gritty, such as how to
    stringify macro parameters, where to put or swallow commas, etc. are not
    handled correctly.
  - [confirmed] Unbalanced parenthesis are not well handled - resulting in
    incorrect expansions or even crashes.
  - [confirmed][crashing] https://bugs.llvm.org/show_bug.cgi?id=48358

Reviewed By: martong, Szelethus

Differential Revision: https://reviews.llvm.org/D93222
The file was modifiedclang/unittests/Analysis/CMakeLists.txt
The file was addedclang/include/clang/Analysis/MacroExpansionContext.h
The file was modifiedclang/lib/Analysis/CMakeLists.txt
The file was addedclang/lib/Analysis/MacroExpansionContext.cpp
The file was addedclang/unittests/Analysis/MacroExpansionContextTest.cpp
Commit 7c58fb6ba04e28e594587bb27f13849cc1f2d305 by balazsbenics
[analyzer] Create MacroExpansionContext member in AnalysisConsumer

Adds a `MacroExpansionContext` member to the `AnalysisConsumer` class.
Tracks macro expansions only if the `ShouldDisplayMacroExpansions` is set.
Passes a reference down the pipeline letting AnalysisConsumers query macro
expansions during bugreport construction.

Reviewed By: martong, Szelethus

Differential Revision: https://reviews.llvm.org/D93223
The file was modifiedclang/include/clang/StaticAnalyzer/Core/PathDiagnosticConsumers.h
The file was modifiedclang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
The file was modifiedclang/lib/StaticAnalyzer/Core/SarifDiagnostics.cpp
The file was modifiedclang/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp
The file was modifiedclang/lib/StaticAnalyzer/Core/TextDiagnostics.cpp
The file was modifiedclang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
Commit 170c67d5b8cc58dd8a4bd0ea7c5ca02290fac39c by balazsbenics
[analyzer] Use the MacroExpansionContext for macro expansions in plists

Removes the obsolete ad-hoc macro expansions during bugreport constructions.
It will skip the macro expansion if the expansion happened in an imported TU.

Also removes the expected plist file, while expanding matching context for
the tests.
Adds a previously crashing `plist-macros-with-expansion.c` testfile.
Temporarily marks `plist-macros-with-expansion-ctu.c ` to `XFAIL`.

Reviewed By: xazax.hun, Szelethus

Differential Revision: https://reviews.llvm.org/D93224
The file was removedclang/test/Analysis/Inputs/expected-plists/plist-macros-with-expansion.cpp.plist
The file was addedclang/test/Analysis/plist-macros-with-expansion.c
The file was modifiedclang/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp
The file was modifiedclang/test/Analysis/plist-macros-with-expansion-ctu.c
The file was modifiedclang/test/Analysis/plist-macros-with-expansion.cpp
Commit 38b185832e04ed0588c43161f5c3a8c0ce267497 by balazsbenics
[analyzer][CTU] API for CTU macro expansions

Removes `CrossTranslationUnitContext::getImportedFromSourceLocation`
Removes the corresponding unit-test segment.

Introduces the `CrossTranslationUnitContext::getMacroExpansionContextForSourceLocation`
which will return the macro expansion context for an imported TU. Also adds a
few implementation FIXME notes where applicable, since this feature is
not implemented yet. This fact is also noted as Doxygen comments.

Uplifts a few CTU LIT test to match the current **incomplete** behavior.

It is a regression to some extent since now we don't expand any
macros in imported TUs. At least we don't crash anymore.

Note that the introduced function is already covered by LIT tests.
Eg.: Analysis/plist-macros-with-expansion-ctu.c

Reviewed By: balazske, Szelethus

Differential Revision: https://reviews.llvm.org/D94673
The file was modifiedclang/unittests/CrossTU/CrossTranslationUnitTest.cpp
The file was modifiedclang/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp
The file was modifiedclang/test/Analysis/plist-macros-with-expansion-ctu.c
The file was modifiedclang/include/clang/AST/ASTImporter.h
The file was modifiedclang/lib/AST/ASTImporter.cpp
The file was modifiedclang/lib/CrossTU/CrossTranslationUnit.cpp
The file was modifiedclang/include/clang/CrossTU/CrossTranslationUnit.h
Commit 188f15d973101649f7172e353f85727b41f2ffa8 by david.green
[ARM] Remove dead lowering code. NFC

Remove the unnecessary code from 21a4faab60c34b8a8c4d09, left over from
a different way of lowering.
The file was modifiedllvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
Commit d81f633fe28fd23108b4dc8c25548f1653ba0cd2 by andrzej.warzynski
[flang][driver] Add -Xflang and make -test-io a frontend-only flang

This patch adds support for `-Xflang` in `flang-new`. The semantics are
identical to `-Xclang`.

With the addition of `-Xflang`, we can modify `-test-io` to be a
compiler-frontend only flag. This makes more sense, this flag is:
  * very frontend specific
  * to be used for development and testing only
  * not to be exposed to the end user
Originally we added it to the compiler driver, `flang-new`, in order to
facilitate testing. With `-Xflang` this is no longer needed. Tests are
updated accordingly.

Differential Revision: https://reviews.llvm.org/D96864
The file was modifiedflang/test/Flang-Driver/driver-help-hidden.f90
The file was modifiedflang/test/Frontend/multiple-input-files.f90
The file was modifiedflang/test/Frontend/input-output-file.f90
The file was modifiedflang/test/Flang-Driver/driver-help.f90
The file was modifiedclang/include/clang/Driver/Options.td
The file was modifiedclang/lib/Driver/ToolChains/Flang.cpp
The file was modifiedclang/lib/Driver/Types.cpp
Commit 106b63de3ad19c2765329958ce5632b8a905c73f by llvm-dev
[InstCombine] Add smulo NumSignBits test from D97170
The file was modifiedllvm/test/Transforms/InstCombine/with_overflow.ll
Commit c11fd0df64290ed12dbee0617588b1d17a9d5d10 by flo
[VPlan] Skip VPWidenPHIRecipe in VPInterleavedACcessInfo.

Update unit tests that did not expect VPWidenPHIRecipes after
15a74b64dfa9.
The file was modifiedllvm/lib/Transforms/Vectorize/VPlanSLP.cpp
The file was modifiedllvm/lib/Transforms/Vectorize/VPlan.cpp
The file was modifiedllvm/unittests/Transforms/Vectorize/VPlanHCFGTest.cpp