platform/upstream/llvm.git
19 months ago[clang] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 19:54:46 +0000 (11:54 -0800)]
[clang] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[Driver] llvm::None => std::nullopt. NFC
Fangrui Song [Sat, 3 Dec 2022 19:43:25 +0000 (19:43 +0000)]
[Driver] llvm::None => std::nullopt. NFC

19 months ago[Basic] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 19:34:27 +0000 (11:34 -0800)]
[Basic] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[Analysis] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 19:34:25 +0000 (11:34 -0800)]
[Analysis] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[StaticAnalyzer] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 19:34:24 +0000 (11:34 -0800)]
[StaticAnalyzer] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[flang] Disable flang/test/Semantics/resolve110.f90 on Windows
Peter Klausler [Sat, 3 Dec 2022 19:21:54 +0000 (11:21 -0800)]
[flang] Disable flang/test/Semantics/resolve110.f90 on Windows

This test crashes Semantics (infinite recursion?) only when built with MSVC;
need to investigate further, disabling test for now.

19 months ago[CodeGen] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 19:13:43 +0000 (11:13 -0800)]
[CodeGen] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[AST] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 19:13:41 +0000 (11:13 -0800)]
[AST] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[Sema] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 19:13:39 +0000 (11:13 -0800)]
[Sema] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[flang] Document and warn about an extension
Peter Klausler [Thu, 1 Dec 2022 18:13:57 +0000 (10:13 -0800)]
[flang] Document and warn about an extension

Standard Fortran allows type-bound procedure bindings to only
be called, and disallows them from being used in other contexts
where a procedure name can be: as the target of a procedure pointer
assignment statement, and as an actual argument that corresponds
to a dummy procedure.  So long as the interfaces match, there's
no good reason for these uses to be errors, and there some obvious
use cases in polymorphic programming.  So emit portability warnings
rather than errors, and document this usage as an extension.

Differential Revision: https://reviews.llvm.org/D139127

19 months ago[lldb] Convert Optional<llvm::Reloc::Model> to std::optional
Fangrui Song [Sat, 3 Dec 2022 18:49:51 +0000 (18:49 +0000)]
[lldb] Convert Optional<llvm::Reloc::Model> to std::optional

19 months agoCodeGen/CommandFlags: Convert Optional to std::optional
Fangrui Song [Sat, 3 Dec 2022 18:38:12 +0000 (18:38 +0000)]
CodeGen/CommandFlags: Convert Optional to std::optional

19 months ago[flang] Enforce accessibility requirement on type-bound generic operators, &c.
Peter Klausler [Thu, 1 Dec 2022 01:40:48 +0000 (17:40 -0800)]
[flang] Enforce accessibility requirement on type-bound generic operators, &c.

Type-bound generics like operator(+) and assignment(=) need to not be
PRIVATE if they are used outside the module in which they are declared.

Differential Revision: https://reviews.llvm.org/D139123

19 months ago[ELF] Add final to some SyntheticSection derived classes
Fangrui Song [Sat, 3 Dec 2022 18:11:34 +0000 (18:11 +0000)]
[ELF] Add final to some SyntheticSection derived classes

19 months agoConvert Optional<CodeModel> to std::optional<CodeModel>
Krzysztof Parzyszek [Sat, 3 Dec 2022 17:06:12 +0000 (11:06 -0600)]
Convert Optional<CodeModel> to std::optional<CodeModel>

19 months ago[ELF] Fix TimeTraceScope for "Finalize .eh_frame"
Fangrui Song [Sat, 3 Dec 2022 18:00:51 +0000 (18:00 +0000)]
[ELF] Fix TimeTraceScope for "Finalize .eh_frame"

19 months ago[flang] Warn on missing colons (C768)
Peter Klausler [Mon, 7 Nov 2022 23:51:03 +0000 (15:51 -0800)]
[flang] Warn on missing colons (C768)

In a derived type definition, a type bound procedure declaration
statement with neither interface nor attributes is required by constraint
C768 to have the optional "::" between the PROCEDURE keyword and the
bindings if any binding has a renaming with "=>".  The colons are
not actually necessary for a correct and unambiguous parse, so
emit a warning when they are missing.

Differential Revision: https://reviews.llvm.org/D139065

19 months ago[AArch64] Enable the select optimize pass for AArch64
David Green [Sat, 3 Dec 2022 16:08:58 +0000 (16:08 +0000)]
[AArch64] Enable the select optimize pass for AArch64

This enabled the select optimize patch for ARM Out of order AArch64
cores. It is trying to solve a problem that is difficult for the
compiler to fix. The criteria for when a csel is better or worse than a
branch depends heavily on whether the branch is well predicted and the
amount of ILP in the loop (as well as other criteria like the core in
question and the relative performance of the branch predictor).  The
pass seems to do a decent job though, with the inner loop heuristics
being well implemented and doing a better job than I had expected in
general, even without PGO information.

I've been doing quite a bit of benchmarking. The headline numbers are
these for SPEC2017 on a Neoverse N1:
  500.perlbench_r   -0.12%
  502.gcc_r         0.02%
  505.mcf_r         6.02%
  520.omnetpp_r     0.32%
  523.xalancbmk_r   0.20%
  525.x264_r        0.02%
  531.deepsjeng_r   0.00%
  541.leela_r       -0.09%
  548.exchange2_r   0.00%
  557.xz_r          -0.20%

Running benchmarks with a combination of the llvm-test-suite plus
several versions of SPEC gave between a 0.2% and 0.4% geomean
improvement depending on the core/run. The instruction count went down
by 0.1% too, which is a good sign, but the results can be a little
noisy.  Some issues from other benchmarks I had ran were improved in
rGca78b5601466f8515f5f958ef8e63d787d9d812e. In summary well predicted
branches will see in improvement, badly predicted branches may get
worse, and on average performance seems to be a little better overall.

This patch enables the pass for AArch64 under -O3 for cores that will
benefit for it. i.e. not in-order cores that do not fit into the "Assume
infinite resources that allow to fully exploit the available
instruction-level parallelism" cost model. It uses a subtarget feature
for specifying when the pass will be enabled, which I have enabled under
cpu=generic as the performance increases for out of order cores seems
larger than any decreases for inorder, which were minor.

Differential Revision: https://reviews.llvm.org/D138990

19 months ago[flang] Respect function vs subroutine distinction in generic matching
Peter Klausler [Sun, 6 Nov 2022 19:37:12 +0000 (11:37 -0800)]
[flang] Respect function vs subroutine distinction in generic matching

When checking the specific procedures of a generic interface for a
match against a given set of actual arguments, be sure to not match
a function against a subroutine call or vice versa.  (We generally
catch and warn about attempts to declare mixed interfaces, but they
are usually conforming and can be inadvertently created when generics
are merged due to USE and host association.)

Differential Revision: https://reviews.llvm.org/D139059

19 months ago[clang][Windows]Ignore Options '/d1'
qfrost [Sat, 3 Dec 2022 14:30:13 +0000 (22:30 +0800)]
[clang][Windows]Ignore Options '/d1'

19 months ago[clang-format] Add .inc extension to git-clang-format
Alexandre Ganea [Sat, 3 Dec 2022 14:24:03 +0000 (09:24 -0500)]
[clang-format] Add .inc extension to git-clang-format

Differential Revision: https://reviews.llvm.org/D138746

19 months agoRevert "[LoongArch] Use tablegen size for getInstSizeInBytes"
Nico Weber [Sat, 3 Dec 2022 13:02:41 +0000 (08:02 -0500)]
Revert "[LoongArch] Use tablegen size for getInstSizeInBytes"

This reverts commit d62480c1995b32eea8b9ed5a92829ee5615c4750.
Added test fails, see https://reviews.llvm.org/D138469#3968539

19 months ago[loongarch] fix syntax error in script
Nico Weber [Sat, 3 Dec 2022 12:49:41 +0000 (07:49 -0500)]
[loongarch] fix syntax error in script

At least on macOS with zsh, the test failed with

    line 1: syntax error near unexpected token `&'

previously.

19 months agoImprove type conversion error propagation/failure during LLVM lowering
Uday Bondhugula [Sat, 3 Dec 2022 10:59:07 +0000 (16:29 +0530)]
Improve type conversion error propagation/failure during LLVM lowering

Improve type conversion error propagation/failure during LLVM lowering.

BEFORE

```
llvm-mlir/mlir/lib/Conversion/LLVMCommon/TypeConverter.cpp:304: SmallVector<mlir::Type, 5> mlir::LLVMTypeConverter::getMemRefDescriptorFields(mlir::MemRefType, bool): Assertion `isStrided(type) && "Non-strided layout maps must have been normalized away"' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
...
```

AFTER
```
<unknown>:0: error: integer overflow during size computation
<unknown>:0: error: Conversion to strided form failed either due to non-strided layout maps (which should have been normalized away) or other reasons
<unknown>:0: error: failed to legalize operation 'gpu.func' that was explicitly marked illegal
<unknown>:0: note: see current operation:
"gpu.func"() ( {
...
```

Reviewed By: ftynse

Differential Revision: https://reviews.llvm.org/D139072

19 months ago[AArch64] Make ArchInfo copyable again
Benjamin Kramer [Sat, 3 Dec 2022 10:47:50 +0000 (11:47 +0100)]
[AArch64] Make ArchInfo copyable again

I don't see the point of disallowing copying an aggregate, and C++20
makes aggregate initializing a class with a deleted copy ctor
ill-formed.

19 months agomlir/TosaToTensor: fix typos in test
Ramkumar Ramachandra [Thu, 1 Dec 2022 09:45:34 +0000 (10:45 +0100)]
mlir/TosaToTensor: fix typos in test

This patch fixes a misspelt CHECK-LABEL in tosa-to-tensor.mlir.

Signed-off-by: Ramkumar Ramachandra <r@artagnon.com>
Differential Revision: https://reviews.llvm.org/D139085

19 months agomlir/linalg: improve debugging in LinalgTransformOps
Ramkumar Ramachandra [Fri, 2 Dec 2022 11:29:58 +0000 (12:29 +0100)]
mlir/linalg: improve debugging in LinalgTransformOps

Make use of notifyMatchFailure in one place.

Signed-off-by: Ramkumar Ramachandra <r@artagnon.com>
Differential Revision: https://reviews.llvm.org/D139191

19 months ago.mailmap: add entry for myself
Ramkumar Ramachandra [Sat, 3 Dec 2022 08:52:57 +0000 (09:52 +0100)]
.mailmap: add entry for myself

19 months ago[clang-repl] Fix ambiguous initializer list.
Vassil Vassilev [Sat, 3 Dec 2022 08:05:39 +0000 (08:05 +0000)]
[clang-repl] Fix ambiguous initializer list.

Some platforms report that GlobalTopLevelStmtBlockInFlight cannot be initalized
with '{}' due to operator '=' being ambiguous.

This patch is a follow up to https://reviews.llvm.org/D127284 trying to appease
the bots.

19 months ago[clang][modules] Serialize the new RecordID
Jan Svoboda [Sat, 3 Dec 2022 07:22:18 +0000 (23:22 -0800)]
[clang][modules] Serialize the new RecordID

This is a follow-up to commit 40472ef14cd3bbed665789825b47d055e0a83402 that introduced new record but didn't serialize its ID.

19 months ago[clang-repl] Support statements on global scope in incremental mode.
Vassil Vassilev [Wed, 8 Jun 2022 09:59:40 +0000 (09:59 +0000)]
[clang-repl] Support statements on global scope in incremental mode.

This patch teaches clang to parse statements on the global scope to allow:
```
./bin/clang-repl
clang-repl> int i = 12;
clang-repl> ++i;
clang-repl> extern "C" int printf(const char*,...);
clang-repl> printf("%d\n", i);
13
clang-repl> %quit
```

Generally, disambiguating between statements and declarations is a non-trivial
task for a C++ parser. The challenge is to allow both standard C++ to be
translated as if this patch does not exist and in the cases where the user typed
a statement to be executed as if it were in a function body.

Clang's Parser does pretty well in disambiguating between declarations and
expressions. We have added DisambiguatingWithExpression flag which allows us to
preserve the existing and optimized behavior where needed and implement the
extra rules for disambiguating. Only few cases require additional attention:
  * Constructors/destructors -- Parser::isConstructorDeclarator was used in to
    disambiguate between ctor-looking declarations and statements on the global
    scope(eg. `Ns::f()`).
  * The template keyword -- the template keyword can appear in both declarations
    and statements. This patch considers the template keyword to be a declaration
    starter which breaks a few cases in incremental mode which will be tackled
    later.
  * The inline (and similar) keyword -- looking at the first token in many cases
    allows us to classify what is a declaration.
  * Other language keywords and specifiers -- ObjC/ObjC++/OpenCL/OpenMP rely on
    pragmas or special tokens which will be handled in subsequent patches.

The patch conceptually models a "top-level" statement into a TopLevelStmtDecl.
The TopLevelStmtDecl is lowered into a void function with no arguments.
We attach this function to the global initializer list to execute the statement
blocks in the correct order.

Differential revision: https://reviews.llvm.org/D127284

19 months ago[BOLT] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 07:12:38 +0000 (23:12 -0800)]
[BOLT] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[lld] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 07:12:36 +0000 (23:12 -0800)]
[lld] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months agoRevert "[llvm-objcopy] Fix --section-add when section contain empty bytes"
Douglas Yung [Sat, 3 Dec 2022 06:40:32 +0000 (22:40 -0800)]
Revert "[llvm-objcopy] Fix --section-add when section contain empty bytes"

This reverts commit 0041382198f20fe51d8574363bc91c317c7f3c71.

The test added is failing on Windows:
  - https://lab.llvm.org/buildbot/#/builders/216/builds/13762
  - https://lab.llvm.org/buildbot/#/builders/123/builds/14447

19 months ago[llvm/unittests] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 06:10:37 +0000 (22:10 -0800)]
[llvm/unittests] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[mlir][spirv] Clean up test-availability pass. NFC.
Jakub Kuderski [Sat, 3 Dec 2022 05:23:40 +0000 (00:23 -0500)]
[mlir][spirv] Clean up test-availability pass. NFC.

Define rewrite patterns in-line so that we don't have to jump around so
much when editing this file.

Reviewed By: antiagainst

Differential Revision: https://reviews.llvm.org/D139239

19 months ago[llvm] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 05:11:44 +0000 (21:11 -0800)]
[llvm] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[utils] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 05:11:42 +0000 (21:11 -0800)]
[utils] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from
llvm::Optional to std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[tools] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 05:11:40 +0000 (21:11 -0800)]
[tools] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[DebugInfo] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 05:11:39 +0000 (21:11 -0800)]
[DebugInfo] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[Transforms] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 05:11:37 +0000 (21:11 -0800)]
[Transforms] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[CodeGen] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 04:36:08 +0000 (20:36 -0800)]
[CodeGen] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[Target] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 04:36:06 +0000 (20:36 -0800)]
[Target] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[Bitcode] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 04:36:04 +0000 (20:36 -0800)]
[Bitcode] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[IR] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 04:05:20 +0000 (20:05 -0800)]
[IR] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[Analysis] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 03:43:04 +0000 (19:43 -0800)]
[Analysis] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

19 months ago[ADT, Support] Use std::nullopt instead of None (NFC)
Kazu Hirata [Sat, 3 Dec 2022 03:04:57 +0000 (19:04 -0800)]
[ADT, Support] Use std::nullopt instead of None (NFC)

This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

Differential Revision: https://reviews.llvm.org/D139241

19 months ago[LoongArch] Use tablegen size for getInstSizeInBytes
Xiaodong Liu [Sat, 3 Dec 2022 03:00:18 +0000 (11:00 +0800)]
[LoongArch] Use tablegen size for getInstSizeInBytes

Correct the pseudo atomic instruction size for branch
relaxation and branch folding passes.

Inspired by D118175, D118009 and D117970.

Depends on D138481

Reviewed By: SixWeining, gonglingqin, xen0n

Differential Revision: https://reviews.llvm.org/D138469

19 months ago[llvm] Add support for hashing std::optional
Kazu Hirata [Sat, 3 Dec 2022 02:53:00 +0000 (18:53 -0800)]
[llvm] Add support for hashing std::optional

The credit for the hashing code, taken from D138934, goes to Ramkumar
Ramachandra.  The test comes from OptionalTest.cpp and updated for
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

Differential Revision: https://reviews.llvm.org/D139240

19 months ago[flang] Warn about more continuation lines than the standard permits
Peter Klausler [Fri, 4 Nov 2022 23:39:52 +0000 (16:39 -0700)]
[flang] Warn about more continuation lines than the standard permits

f18 doesn't have any limit on continuation lines in fixed or free form
source (other than available memory), but the standard does.  Emit
a portability warning when it is exceeded.

Differential Revision: https://reviews.llvm.org/D139055

19 months ago[llvm-objcopy] Fix --section-add when section contain empty bytes
Guilhem [Sat, 3 Dec 2022 00:48:27 +0000 (16:48 -0800)]
[llvm-objcopy] Fix --section-add when section contain empty bytes

Implicit cast between char* and StringRef when writing sections.

Reproduce:
```
$> llvm-objcopy --dump-section=name=name.data out.wasm
$> llvm-objcopy --remove-section=name out.wasm out_no_name.wasm
$> llvm-objcopy --add-section=name=name.data out_no_name.wasm out_new_name.wasm

# With wasm-objdump -h we can see that the name section is not totally copied in the new wasm file (if it actually contain empty bytes)

```

Reviewed By: dschuff

Differential Revision: https://reviews.llvm.org/D139210

19 months ago[mlir] Fix an unused variable warning
Kazu Hirata [Sat, 3 Dec 2022 00:25:07 +0000 (16:25 -0800)]
[mlir] Fix an unused variable warning

This patch fixes:

  mlir/lib/ExecutionEngine/SparseTensorRuntime.cpp:646:18: error:
  unused variable 'dimRank' [-Werror,-Wunused-variable]

19 months ago[flang][examples] Fix build of flang/examples/FlangOmpReport/FlangOmpReportVisitor...
Peter Klausler [Sat, 3 Dec 2022 00:13:09 +0000 (16:13 -0800)]
[flang][examples] Fix build of flang/examples/FlangOmpReport/FlangOmpReportVisitor.cpp (take 2)

Need to add casts to std::string.

19 months ago[clang][modules][deps] Serialize inputs into PCMs using the "as requested" name
Jan Svoboda [Fri, 2 Dec 2022 23:52:21 +0000 (15:52 -0800)]
[clang][modules][deps] Serialize inputs into PCMs using the "as requested" name

This patch changes the PCM serialization logic to refer to input files by their "requested" name. This fixes a bug where the dependency scanner reports the "final" file paths, which can result in failed explicit compiles due to the `module.modulemap` file not being surrounded by the expected framework directory structure.

Depends on D135634.

Reviewed By: benlangmuir, Bigcheese

Differential Revision: https://reviews.llvm.org/D135636

19 months ago[clang][modules] Serialize VFS overlay paths into PCMs
Jan Svoboda [Fri, 2 Dec 2022 23:43:48 +0000 (15:43 -0800)]
[clang][modules] Serialize VFS overlay paths into PCMs

With implicitly built modules, the importing `CompilerInstance` assumes PCMs were built in a "compatible way" (i.e. with similarly set up instance). Either because their context hash matches, or because this instance has just built them.

There are some use-cases, however, where this assumption doesn't hold, libclang/c-index-test being one of them. There, the importing instance (or `ASTUnit`) is being set up while the PCM file is being deserialized. Until now, we've assumed the serialized paths to input files are the actual on-disk files, meaning the default physical VFS was always able to resolve them. This won't be the case after D135636. Therefore, this patch makes sure `ASTUnit` is initialized with the same VFS as the PCM it's deserializing - by storing paths to the VFS overlay files into the PCM itself.

For the VFS overlay files to be adopted at the very start of PCM deserialization, they are stored in a new section in the unhashed control block, together with header search paths and system header prefixes. The move to the unhashed control block should be safe: if two modules were built with different header search paths and they produced different results, the hashed part of the PCM file will reflect that.

Reviewed By: akyrtzi, benlangmuir

Differential Revision: https://reviews.llvm.org/D135634

19 months ago[flang] Enforce more restrictions on I/O data list items
Peter Klausler [Wed, 30 Nov 2022 23:20:49 +0000 (15:20 -0800)]
[flang] Enforce more restrictions on I/O data list items

12.6.3p5 requires an I/O data list item to have a defined I/O procedure
if it is polymorphic.  (We could defer this checking to the runtime,
but no other Fortran compiler does so, and we would also have to be
able to catch the case of an allocatable or pointer direct component
in the absence of a defined I/O subroutine.)

Also includes a patch to name resolution that ensures that a
SELECT TYPE construct entity is polymorphic in the domain of a
CLASS IS guard.

Also ensures that non-defined I/O of types with PRIVATE components
is caught.

Differential Revision: https://reviews.llvm.org/D139050

19 months ago[NFC] Cleanup: Replace BB->InstList.splice() with BB->splice()
Vasileios Porpodas [Fri, 2 Dec 2022 23:03:38 +0000 (15:03 -0800)]
[NFC] Cleanup: Replace BB->InstList.splice() with BB->splice()

Differential Revision: https://reviews.llvm.org/D139236

19 months ago[InstCombine] fold icmp + select pattern by distributive laws
chenglin.bi [Fri, 2 Dec 2022 23:54:49 +0000 (07:54 +0800)]
[InstCombine] fold icmp + select pattern by distributive laws

`C ? (Y != X) : (Z != X) --> (C ? Y : Z) != X`
`C ? (Y == X) : (Z == X) --> (C ? Y : Z) == X`

https://alive2.llvm.org/ce/z/-frXfs

Reviewed By: spatel

Differential Revision: https://reviews.llvm.org/D139076

19 months agoAnalysis: Update some tests for opaque pointers
Matt Arsenault [Fri, 2 Dec 2022 22:25:57 +0000 (17:25 -0500)]
Analysis: Update some tests for opaque pointers

StackSafetyAnalysis/lifetime.ll had one bitcast removed that may have
mattered. The concluded lifetime is longer based on the underlying
alloca, instead of the bitcasted pointer so left that as a pointless
cast.

local.ll memintrin.ll needed some manual fixes

19 months agoStackSafetyAnalysis: Don't use anonymous values in test
Matt Arsenault [Fri, 2 Dec 2022 22:28:07 +0000 (17:28 -0500)]
StackSafetyAnalysis: Don't use anonymous values in test

19 months agoAPFloat: Simplify makeSmallestNormalized implementation
Matt Arsenault [Thu, 1 Dec 2022 14:42:20 +0000 (09:42 -0500)]
APFloat: Simplify makeSmallestNormalized implementation

19 months agoUse CTAD on llvm::SaveAndRestore
Jan Svoboda [Fri, 2 Dec 2022 21:36:04 +0000 (13:36 -0800)]
Use CTAD on llvm::SaveAndRestore

Reviewed By: dblaikie

Differential Revision: https://reviews.llvm.org/D139229

19 months ago[flang] Enforce restrictions on intrinsic assignment
Peter Klausler [Fri, 4 Nov 2022 21:29:49 +0000 (14:29 -0700)]
[flang] Enforce restrictions on intrinsic assignment

When the left-hand side of an intrinsic assignment statement is
polymorphic, the LHS must be a whole allocatable variable or
component and may not be a coarray (10.2.2.1p1(1)).

Differential Revision: https://reviews.llvm.org/D139049

19 months ago[libc][Obvious] Update error bounds for uint_test.QuickMulHiTests.
Tue Ly [Fri, 2 Dec 2022 23:12:17 +0000 (18:12 -0500)]
[libc][Obvious] Update error bounds for uint_test.QuickMulHiTests.

19 months ago[NFC] Remove unneeded #include files.
Bill Wendling [Fri, 2 Dec 2022 23:03:41 +0000 (15:03 -0800)]
[NFC] Remove unneeded #include files.

19 months ago[mlir][sparse][bufferization] cleanup bufferization attributes after SparsificationAn...
Peiming Liu [Fri, 2 Dec 2022 23:00:52 +0000 (23:00 +0000)]
[mlir][sparse][bufferization] cleanup bufferization attributes after SparsificationAndBufferizationPass

Reviewed By: aartbik, springerm

Differential Revision: https://reviews.llvm.org/D139218

19 months ago[libc][math] Implement full multiplication and quick_mul_hi for UInt class.
Tue Ly [Wed, 23 Nov 2022 04:39:17 +0000 (23:39 -0500)]
[libc][math] Implement full multiplication and quick_mul_hi for UInt class.

Implement full multiplication `UInt<A> * UInt<B> -> UInt<A + B>` and
`quick_mul_hi` that returns the higher half of the product `UInt<A> * UInt<A>`.
These 2 functions will be used for dyadic floating point class.

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D138541

19 months agoLeave DW_OP_addr addresses as load addresses in DWARFExpression
Jason Molenda [Fri, 2 Dec 2022 22:39:41 +0000 (14:39 -0800)]
Leave DW_OP_addr addresses as load addresses in DWARFExpression

DWARFExpression::Evaluate will convert DW_OP_addr addresses in
a DWARF expression into load addresses on the expression stack
when there is a StackFrame in the ExecutionContext, this from
a change in 2018 in https://reviews.llvm.org/D46362.  At the
time this was handling a case that came up in swift programs,
and is no longer necessary.  I generalized this conversion to
a load address when a Target is available in
https://reviews.llvm.org/D137682 to make a test case possible;
this change broke a use case that Ted reported.

This change removes my test case, and removes this conversion
of a DW_OP_addr into a load address in some instances.

Differential Revision: https://reviews.llvm.org/D139226

19 months ago[libc] Skip tests that depend on undefined targets
Joseph Huber [Fri, 2 Dec 2022 19:30:35 +0000 (13:30 -0600)]
[libc] Skip tests that depend on undefined targets

When we search through the dependencies for a test we somtimes query
`get_target_property` on a target that has not been defined. This is the
case for targets that have minimal entrypoints defined such as the WIP
GPU target. This patch changes all tests whose dependencies are
undefined to be skipped entirely.

Reviewed By: sivachandra, lntue, michaelrj

Differential Revision: https://reviews.llvm.org/D139216

19 months ago[flang] Disallow NULL() as an expression where it cannot appear
Peter Klausler [Thu, 3 Nov 2022 23:17:00 +0000 (16:17 -0700)]
[flang] Disallow NULL() as an expression where it cannot appear

A NULL() pointer is generally not a valid expression (as opposed to
a variable) apart from some initialization contexts and some actual
arguments.

Differential Revision: https://reviews.llvm.org/D139047

19 months agoReland "[clang][deps] During scanning don't emit warnings-as-errors that are ignored...
Volodymyr Sapsai [Fri, 2 Dec 2022 22:30:41 +0000 (14:30 -0800)]
Reland "[clang][deps] During scanning don't emit warnings-as-errors that are ignored with diagnostic pragmas."

This reverts commit 2f8ac1804827026b44f429dce02730da18a73c50.

After committing a fix for previous buildbot failures in D138970,
re-landing the original change.

19 months ago[ModuleInliner] Add MLPriority
Kazu Hirata [Fri, 2 Dec 2022 22:25:13 +0000 (14:25 -0800)]
[ModuleInliner] Add MLPriority

This patch adds MLPriority as the first step toward the ML-based
function inlining with the module inliner.

For now, MLPriority is completely identical to CostPriority.

Once this patch lands, I'm planning to:

- integrate NoInferenceModelRunner,

- memoize the priority computation so that the priority remains the
  same for given values of metrics even with the noise injected during
  training, and

- port/take more features into account.

Differential Revision: https://reviews.llvm.org/D139140

19 months agoFix some test files with executable permissions
Matt Arsenault [Fri, 2 Dec 2022 21:45:18 +0000 (16:45 -0500)]
Fix some test files with executable permissions

19 months ago[flang] Change error to portability warning
Peter Klausler [Wed, 2 Nov 2022 22:32:17 +0000 (15:32 -0700)]
[flang] Change error to portability warning

The standard does *not* require that a real or imaginary part of a complex
literal constant be a scalar if it is a named constant.  Downgrade a
recently installed check to a portability warning, and document it.

Differential Revision: https://reviews.llvm.org/D139046

19 months ago[mlir][docs] Group the docs for defining dialect components
River Riddle [Mon, 7 Nov 2022 23:35:43 +0000 (15:35 -0800)]
[mlir][docs] Group the docs for defining dialect components

This moves the documentation for defining dialects, attributes/types,
and operations into a new `DefiningDialects` folder. This helps to
keep the documentation grouped together, making it easier to find
related documentation.

Differential Revision: https://reviews.llvm.org/D137594

19 months ago[Inline] Add a basic test for the module inliner
Kazu Hirata [Fri, 2 Dec 2022 21:37:57 +0000 (13:37 -0800)]
[Inline] Add a basic test for the module inliner

The new test ensures that the module inliner works with all currently
supported priority modes.

Different priority modes result in no difference in terms of the
output for these simple cases, so this is more of a "better than
nothing" test.

Differential Revision: https://reviews.llvm.org/D139222

19 months ago[mlir] Remove support for non-prefixed accessors
River Riddle [Wed, 26 Oct 2022 01:29:53 +0000 (18:29 -0700)]
[mlir] Remove support for non-prefixed accessors

This finishes off a year long pursuit to LLVMify the generated
operation accessors, prefixing them with get/set. Support for
any other accessor naming is fully removed after this commit.

https://discourse.llvm.org/t/psa-raw-accessors-are-being-removed/65629

Differential Revision: https://reviews.llvm.org/D136727

19 months ago[Hexagon] Remove most Optionals in favor of std::optional
Krzysztof Parzyszek [Fri, 2 Dec 2022 21:30:14 +0000 (13:30 -0800)]
[Hexagon] Remove most Optionals in favor of std::optional

19 months ago[ModuleInliner] Initialize variables (NFC)
Kazu Hirata [Fri, 2 Dec 2022 21:31:13 +0000 (13:31 -0800)]
[ModuleInliner] Initialize variables (NFC)

This patch initializes all class variables in InlineOrder.cpp for
safety just in case we miss them in constructors.  Currently, all
these variables are properly initialized in their respective
constructors.

Differential Revision: https://reviews.llvm.org/D139225

19 months ago[mlir] Factor more common utils to IndexingUtils
Hanhan Wang [Fri, 2 Dec 2022 01:04:09 +0000 (17:04 -0800)]
[mlir] Factor more common utils to IndexingUtils

Reviewed By: mravishankar

Differential Revision: https://reviews.llvm.org/D139159

19 months agoAArch64/GlobalISel: Convert tests to opaque pointers
Matt Arsenault [Fri, 2 Dec 2022 20:45:38 +0000 (15:45 -0500)]
AArch64/GlobalISel: Convert tests to opaque pointers

inttoptr_add.ll had a mangled bitcast constantexpr.
translate-gep.ll: Restored a 0 GEP

19 months agoGlobalISel: Replace bitcast test pointer usage
Matt Arsenault [Fri, 2 Dec 2022 20:46:37 +0000 (15:46 -0500)]
GlobalISel: Replace bitcast test pointer usage

This won't be meaningful with opaque pointers (I guess we could leave
a ptr to ptr bitcast, or allow same sized address space bitcasts).

19 months agoAArch64/GlobalISel: Regenerate test checks
Matt Arsenault [Fri, 2 Dec 2022 20:39:59 +0000 (15:39 -0500)]
AArch64/GlobalISel: Regenerate test checks

Try to shrink the diff in the opaque pointer conversion. Had to work
around some update_mir_test_checks bugs. It seems to struggle when the
successor list is empty around the blank line checks it inserts.

19 months ago[flang] Don't emit spurious error for polymorphic actual argument in PURE
Peter Klausler [Wed, 2 Nov 2022 18:11:23 +0000 (11:11 -0700)]
[flang] Don't emit spurious error for polymorphic actual argument in PURE

Definability checking is unconditionally flagging the use of a polymorphic
variable as an actual argument for a procedure reference in a PURE subprogram
unless the corresponding dummy is INTENT(IN).  This isn't necessary, since
an INTENT(OUT) polymorphic dummy is already caught as an error in the definition
of the callee, which must also be PURE; and an INTENT(IN OUT) or intent-free
dummy is allowed to be passed a polymorphic actual in a PURE context, with
any attempt to deallocate it being caught in the callee.

So add a flag to the definability checker to disable the "polymorphic
definition in PURE context" check when using it to check actual arguments.

Differential Revision: https://reviews.llvm.org/D139044

19 months ago[flang][examples] Fix usage of EnumToString()
Peter Klausler [Fri, 2 Dec 2022 21:14:49 +0000 (13:14 -0800)]
[flang][examples] Fix usage of EnumToString()

EnumToString() now returns a string_view; usage in
  examples/FlangOmpReport/FlangOmpReportVisitor.cpp
needs to be updated.  Pushing without review to get
flang build bots back up.

19 months ago[clang][deps] Fix test failures on AIX
Jan Svoboda [Fri, 2 Dec 2022 21:09:50 +0000 (13:09 -0800)]
[clang][deps] Fix test failures on AIX

19 months agoRevert "[mlir][tensor] Fold rank-reducing extract_slice with inverse expand_shape"
Matthias Springer [Fri, 2 Dec 2022 20:22:20 +0000 (21:22 +0100)]
Revert "[mlir][tensor] Fold rank-reducing extract_slice with inverse expand_shape"

This reverts commit a076f57a1a6b6d775aa4f11ac678d1c43ab33fb1.

19 months agoRevert "[mlir][tensor] Fold rank-reducing insert_slice with inverse collapse_shape"
Matthias Springer [Fri, 2 Dec 2022 20:22:04 +0000 (21:22 +0100)]
Revert "[mlir][tensor] Fold rank-reducing insert_slice with inverse collapse_shape"

This reverts commit 1522a3b7b34b41cf0b17678e4a8687797f44a3f0.

19 months agoGlobalIFunc: Make allowed constant expressions stricter
Matt Arsenault [Thu, 24 Nov 2022 02:23:47 +0000 (21:23 -0500)]
GlobalIFunc: Make allowed constant expressions stricter

This was allowing getelementptr with offsets, which doesn't make
sense. My initial attempt to use stripPointerCasts broke a few tests
involving aliases; add a new targeted verifier test for aliases.

This also provides the fix from D138537 for free, and also adds
support for addrspacecast (D138538) for free. Merge the tests in from
those.

I'm not really sure why findBaseObject exists; it seems redundant with
stripPointerCasts* (I'm also not really sure why getelementptrs are
allowed off of functions).

19 months agoSROA: Simplify addrspacecasted allocas with volatile accesses
Matt Arsenault [Sat, 15 Jun 2019 19:25:28 +0000 (15:25 -0400)]
SROA: Simplify addrspacecasted allocas with volatile accesses

If the alloca is accessed through an addrspacecasted pointer, allow
the normal changes on the alloca. Cast back to the original use
address space instead of the new alloca's natural address space.

19 months agoSanitizers: Convert SanitizerBinaryMetadata tests to opaque pointers
Matt Arsenault [Sun, 27 Nov 2022 21:01:51 +0000 (16:01 -0500)]
Sanitizers: Convert SanitizerBinaryMetadata tests to opaque pointers

19 months agoSymbolRewriter: Convert test to opaque pointers
Matt Arsenault [Sun, 27 Nov 2022 18:49:08 +0000 (13:49 -0500)]
SymbolRewriter: Convert test to opaque pointers

19 months agoGlobalSplit: Convert tests to opaque pointers
Matt Arsenault [Sun, 27 Nov 2022 00:21:01 +0000 (19:21 -0500)]
GlobalSplit: Convert tests to opaque pointers

19 months ago[libc++][NFC] Fix typo in comment
Louis Dionne [Fri, 2 Dec 2022 20:20:15 +0000 (12:20 -0800)]
[libc++][NFC] Fix typo in comment

19 months ago[flang] Restore C702 check for ProcEntity symbols
Peter Klausler [Wed, 2 Nov 2022 16:59:10 +0000 (09:59 -0700)]
[flang] Restore C702 check for ProcEntity symbols

A recent change moved some checking code from name resolution into
declaration checking, and inadvertently disabled C702 checking for
procedure entities.  Fix.

Differential Revision: https://reviews.llvm.org/D139043

19 months ago[clang][Driver] Don't overwrite `DiagnosticsEngine::IgnoreAllWarnings`, rely on ...
Volodymyr Sapsai [Wed, 30 Nov 2022 01:49:40 +0000 (17:49 -0800)]
[clang][Driver] Don't overwrite `DiagnosticsEngine::IgnoreAllWarnings`, rely on `DiagnosticOptions::IgnoreWarnings` value.

Driver overwrites `DiagnosticsEngine::IgnoreAllWarnings` based on `-w` flag
without taking into account `DiagnosticOptions::IgnoreWarnings` that is
propagated to `DiagnosticsEngine` in `ProcessWarningOptions` (called from
`CompilerInstance::createDiagnostics`). It makes it hard to manipulate
`DiagnosticOptions` directly and pushes towards string-based API.

Most of in-tree tools use `DiagnosticOptions` already, so migrate
`clang_parseTranslationUnit_Impl` to use it too. Don't parse `-w`
directly but rely on
```
def w : Flag<["-"], "w">, HelpText<"Suppress all warnings">, Flags<[CC1Option]>,
  MarshallingInfoFlag<DiagnosticOpts<"IgnoreWarnings">>;
```

Allows to reland D138252.

Differential Revision: https://reviews.llvm.org/D138970

19 months ago[RISCV] Fold low 12 bits into instruction during frame index elimination
Philip Reames [Fri, 2 Dec 2022 19:45:53 +0000 (11:45 -0800)]
[RISCV] Fold low 12 bits into instruction during frame index elimination

Fold the low 12 bits of an immediate offset into the offset field of the using instruction. That using instruction will be a load, store, or addi which performs an add of a signed 12-bit immediate as part of it's operation. Splitting out the low bits allows the high bits to be generated via a single LUI instead of needing an LUI/ADDI pair.

The codegen effect of this is mostly converting cases where "split addi" kicks in to using LUI + a folded offset. There are a couple of straight dynamic instruction count wins, and using a canonical LUI is probably better than a chain of SP adds if the dynamic instruction count is equal.

Differential Revision: https://reviews.llvm.org/D139037

19 months agoTargetTransformInfo: convert Optional to std::optional
Krzysztof Parzyszek [Fri, 2 Dec 2022 17:35:05 +0000 (09:35 -0800)]
TargetTransformInfo: convert Optional to std::optional

Recommit: added missing "#include <cstdint>".

19 months agoDon't revisit the subexpressions of PseudoObjectExpr when building a
Akira Hatanaka [Fri, 2 Dec 2022 19:41:09 +0000 (11:41 -0800)]
Don't revisit the subexpressions of PseudoObjectExpr when building a
ParentMap

The assertion that is removed in this patch was failing when ObjC dot
notation expressions appear in both sides of an assignment (see the test
case in arc-repeated-weak.mm). Visit the PseudoObjectExpr once when the
syntactic expression is visited and return without visiting the
subexpressions when it's visited again when the semantic expressions are
visited.

Differential Revision: https://reviews.llvm.org/D139171

19 months agoRevert "TargetTransformInfo: convert Optional to std::optional"
Krzysztof Parzyszek [Fri, 2 Dec 2022 19:33:24 +0000 (11:33 -0800)]
Revert "TargetTransformInfo: convert Optional to std::optional"

This reverts commit b83711248cb12639e7ef7303cfbb4452b4067e85.

Some buildbots are failing.