Граф коммитов

23 Коммитов

Автор SHA1 Сообщение Дата
Adam Yang b197bec653
Add a new WeakVH value handle; NFC (#6703)
Originally @lizhengxing's PR. Retargeting main.

This PR pulls 2 upstream changes, Add a new WeakVH value handle; NFC
(f1c0eafd5b)
and Use a 2 bit pointer in ValueHandleBase::PrevPair; NFC
(b297bff1cc),
into DXC.

Here's the summary of the changes:

Add a new WeakVH value handle; NFC 
> WeakVH nulls itself out if the value it was tracking gets deleted, but
it does not track RAUW.
> 
>       Reviewers: dblaikie, davide
> 
>       Subscribers: mcrosier, llvm-commits
> 
>       Differential Revision: https://reviews.llvm.org/D32267

Use a 2 bit pointer in ValueHandleBase::PrevPair; NFC

> This was an omission in r301813. I had made the supporting changes to
make this happen, but I forgot to actually update the
> 
> PrevPair declaration.

This is part 4 and 5 of the fix for #6659.
2024-06-21 11:55:24 -07:00
Zhengxing li 45018c752d
Rename WeakVH to WeakTrackingVH; NFC (#6663)
This PR pulls the upstream change, Rename WeakVH to WeakTrackingVH; NFC
(e6bca0eecb),
into DXC.

Here's the summary of the change:

> I plan to use WeakVH to mean "nulls itself out on deletion, but does
not track RAUW" in a subsequent commit.
> 
>   Reviewers: dblaikie, davide
> 
>   Reviewed By: davide
> 
> Subscribers: arsenm, mehdi_amini, mcrosier, mzolotukhin, jfb,
llvm-commits, nhaehnle
> 
>   Differential Revision: https://reviews.llvm.org/D32266

This is part 3 of the fix for #6659.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-18 12:34:55 -07:00
Zhengxing li a44c88e2b8
Emulate TrackingVH using WeakVH (#6662)
This PR pulls the upstream change, Emulate TrackingVH using WeakVH
(8a6238201f),
into DXC.

Here's the summary of the change:

> This frees up one slot in the HandleBaseKind enum, which I will use
later to add a new kind of value handle. The size of the HandleBaseKind
enum is important because we store a HandleBaseKind in
>   the low two bits of a (in the worst case) 4 byte aligned pointer.
> 
>   Reviewers: davide, chandlerc
> 
>   Subscribers: mcrosier, llvm-commits
> 
>   Differential Revision: https://reviews.llvm.org/D32634

This is part 2 of the fix for #6659.
2024-06-11 17:49:44 -07:00
Antonio Maiorano 811ef49333
Fix false positive assert in SuccIterator::operator+= (#6623)
The implementation of index_is_valid was incorrect returning false when
the input index was equal to Term->getNumSuccessors(). The end iterator
will have such an index, and it is valid to construct such an iterator.

For example, assume we have a block with two successors:

```
BasicBlock* bb = ...;
SuccIterator b(bb); // Index 0
SuccIterator e(bb, true); // Index 2, for example

SuccIterator v = b;
b += 2; // Without this fix, this asserts
assert(b == e);
```

Note that this was also fixed upstream in
https://reviews.llvm.org/D47467

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Natalie Chouinard <chouinard.nm@gmail.com>
2024-05-16 21:10:34 -04:00
Xiang Li 039094228e
[ClangCL] Fix warning for rest part except clang. (#5705)
1. add noexcept for methods with __declspec(nothrow)
2. add override for override methods.
3. add const when cast const ptr for a const argument.
4. change 0 to 0u for immediate to avoid signed unsigned mismatch.
2023-10-09 16:59:01 -04:00
Chris B 37ed613864
[NFC] Clang-format DXC sources (#5602)
This change applies clang-format to all of the sources added in DXC that
were not part of the original LLVM/Clang 3.7 release when DXC forked.
This provides consistent code formatting across the codebase.

Fixes #5591.
2023-09-19 07:49:22 -05:00
Antonio Maiorano 08215dab0b
Fix ASAN stack-use-after-scope in unit test (#5730)
When StackOption is destructed, it reads the its ArgStr member, which in
this test is set to local variable ArgString. Since ArgString was
declared after TestOption, it would be destructed first, and thus result
in a stack-use-after-scope. Fix this by swapping the declaration order.
2023-09-18 10:31:48 -04:00
Antonio Maiorano 29460c54ad
Fix ASAN alloc-dealloc-mismatch (operator new vs free) (#5728)
The MallocAllocator originally used malloc and free, but this was
changed for DXC to use operator new/delete. The test called free() on
the object that is now allocated with new. Fixed the test by passing in
the allocator explicitly, and destroying the object using it.
2023-09-18 10:31:39 -04:00
Helena Kotas f206b3d19d
WArgV is needed only on non-Windows platforms (#5576)
Fixes internal build break.
2023-08-23 13:13:12 -07:00
Brian Favela 32379dd559
Add zip range adapter and other utility functions (#5425)
Last set of cherry picks for reverse iteration, this time enabling
utilities that the ReverseIterator test uses in upstream

---------

Co-authored-by: Tim Shen <timshen91@gmail.com>
Co-authored-by: Duncan P. N. Exon Smith <dexonsmith@apple.com>
Co-authored-by: Justin Lebar <jlebar@google.com>
Co-authored-by: Mehdi Amini <mehdi.amini@apple.com>
2023-07-17 17:58:45 -04:00
Brian Favela a86e3f3399
More cherry picks for testing changes (iterator related) (#5403)
These are to prepare for a 'zip' change that makes writing iterator
tests a lot easier (and is used heavily in ReverseIterator changes still
to come).

---------

Co-authored-by: Tim Shen <timshen91@gmail.com>
Co-authored-by: Duncan P. N. Exon Smith <dexonsmith@apple.com>
2023-07-11 12:28:41 -04:00
Brian Favela 4c9b6a5b19
Few more cherry-picks to prep for reverse iterator changes (#5386)
Cherry-picks to get some good changes, specifically in STLExtras

---------

Co-authored-by: Pete Cooper <peter_cooper@apple.com>
Co-authored-by: Duncan P. N. Exon Smith <dexonsmith@apple.com>
2023-07-03 17:25:57 -04:00
Brian Favela c462faa844
[NFC] More cherry picks in preparation of ReverseIterator changes (#5340)
Continuing work from
https://github.com/microsoft/DirectXShaderCompiler/pull/5329

Another 2 cherry picks. Bit bigger this time, but no changes required
apart from the free->delete change as before

---------

Co-authored-by: Matthias Braun <matze@braunis.de>
Co-authored-by: Benjamin Kramer <benny.kra@googlemail.com>
2023-06-28 21:50:32 +00:00
Xiang Li 2eb641d56b
Enable build for dxa/dxl/dxopt/dxr/dxv on linux (#4895)
* Enable build for dxa/dxl/dxopt/dxr/dxv on linux

* Add CComBSTR and enable PdbUtils, Rewriter and recompile.
2023-01-09 15:10:56 -08:00
Chris B 2168dcb4fb
Clean up and rework DXIL library depencencies (#4877)
* Clean up and rework DXIL library depencencies

This change reworks the dependency specifications for the DXIL*
libraries. Many of these libraries had over and under specified
dependencies.

This also collapses the DxilRDATBuidlder into the DxilContainer library
to remove the cyclic dependency between the two libraries.

* Break assert dependency between DXIL and Analysis

In assert builds the DXILModule constructor was creating forced bindings
to debugging methods that are often used from the debugger. This forced
binding is useful, but doesn't need to live in the DXIL library.

To break the dependency I've moved the code into Analysis. I've also
made that code only included when building with MSVC. When using other
compilers `__attribute__((used))` can be applied to the function via the
`LLVM_DUMP_METHOD` annotation to have the same effect.
2023-01-03 10:04:22 -06:00
Chris B ae87945a3c
Move HLSL shift behavior to frontend (#4643)
* [NFC] Move HLSL shfit behavior to frontend

The HLSL bit shift behavior was implemented in constant folding which
alters the semantics of the IR. Alternatively we can implement it in
the front end, leveraging the existing OpenCL code paths.

This results in the same final IR optimization and allows reverting the
ConstantFolder and IR tests back to match LLVM 3.7.

The HLSL shift behavior's optimized behavior is verified in existing
tests like the shift-fold.hlsl test, which is unimpacted by this change.

The big motiviation for this change is heading off subtle bugs. All our
tests cover cases where the shift's size is known at compile time. In
those cases the compiler can resolve the masking behavior
automatically. We have _no_ tests, nor compiler changes that impact
shifts that aren't compile-time known.

This means that prior to this change the behavior of shifting by a
compile-time resolvable value and shifting by a non-resolvable value
likely differs. Since backends often load DXIL and treat it as LLVM IR,
this could cause concerning issues.
2022-12-10 11:42:48 -06:00
Chris B ce495eb611
Fix last LLVM tests on Windows (#4829)
This handles a few last Windows fixes for LLVM tests.

* The YAML praser convertes \r to \n, resulting in repeated newlines in
  YAML tests on Windows.
* The MS filesystem changes on Windows cause one of the MemoryBuffer
  tests to fail. I've disabled that test on Windows.
* Because we convert many crash cases to exceptions on Windows the
  GoogleTest DEATH tests fail to die on Windows.

This change addresses the same issue #4794 solves, but restricts the
change to Windows only. I'm only merging this since @python3kgae is out
and I don't really want to wait until he returns.

utils/unittest/googletest/include/gtest/internal/gtest-port.h
2022-12-02 15:42:58 -06:00
Chris B b0d5211b5a
Fix failing LLVM ArrayRef unit test (#4800)
The initializer list goes out of scope after the expression it is used
in, so the ArrayRef points to invalid memory. This change keeps the
initialization list around so that the array ref remains valid through
the test.
2022-11-21 10:24:14 -06:00
Xiang Li 736c2aa4cd
Code cleanup to help build with newer version of llvm. (#4080)
* Code cleanup to help build with newer version of llvm.

* Use c++14 to enable std::make_unique for linux build.

* Merge e9110d71dd (diff-302b958882f0490f56723d598234f0cc7d3e4d3f3693e6850defdba6b75596af) to fix MacOS build error for random_shuffle is marked deprecated.
2021-11-16 12:48:11 -08:00
Chris B 075a53d74f
Get LLVM Unit Tests Passing (#4021)
* Get LLVM Unit Tests Passing

This change in conjunction with the work in #4020, will get all of the
LLVM unit tests passing. In addition to minor fixes in several of the
tests, and to the build configuration, this patch adds a new implicit
disk filesystem if the filesystem APIs are used without initializing a
PerThreadFileSystem.

The implicit filesystem is only enabled if `LLVM_INCLUDE_TEST=On`, and
it should allow the LLVM filesystem APIs to behave as LLVM tools and
tests expect them to.

* Fix windows build
2021-10-29 17:07:27 -05:00
Chris B 0a0ed9f50b
Make it possible to enable building LLVM & Clang unit tests (#4020)
* Changes to get LLVM unit tests building

This change gets the LLVM unit tests building again and running through
LIT via the `check-llvm-unit` target.

This change does not have the tests passing! Subsequent changes will
get the unit tests passing. This change also disables some tests where
the LLVM code is no longer used and making those tests work will
require substantial effort.

* Changes to get Clang unit tests building

This change gets the Clang unit tests building again and running
through LIT via the `check-clang-unit` target.

This change does not have the tests passing! Subsequent changes will
get the unit tests passing. This change also disables some tests where
the Clang code is no longer used and making those tests work will
require substantial effort.

* A few extra Windows fixes

This adds some missing APIs to the Windows Filesystem code and adds an
option to hctbuild to enable building the LLVM & Clang unit tests.

* Disable libClangFormat tests

These tests are a bit gnarly to repair... unless we really start using
the format library we probably just want to disable these tests.
2021-10-20 12:32:45 -05:00
David Peixotto f805233b49 Revert license text in banner comments to original llvm verbage (#33)
Fix #30: Revert license text in banner comments to original llvm verbage

This commit removes the Microsoft-specific copyright in llvm files
and reverts the copyright wording to the original llvm wording.

We used the following method to find the files to change:
1. Find all files in DirectXShaderCompiler that are also in llvm 3.7
2. For those files that have the Microsoft-specific copyright, revert
   it to the original llvm copyright as present in llvm 3.7
3. Revert the copyright in a few files that are not in llvm, but are
   mostly copies of files in llvm:
	lib\Transforms\Scalar\ScalarReplAggregatesHLSL.cpp
	lib\Transforms\Scalar\Reg2MemHLSL.cpp

Leave the Microsoft-specific copyright header in files not present
in stock llvm:

    include\dxc\*
    lib\HLSL\*
    lib\DxcSupport\*
    tools\clang\test\HLSL\*
    tools\clang\test\CodeGenHLSL\*
    tools\clang\unittests\HLSL\*
    tools\clang\unittests\HLSLHost\*
    tools\clang\tools\dxcompiler\*
    tools\clang\tools\dxa\*
    tools\clang\tools\dxc\*
    tools\clang\tools\dxopt\*
    tools\clang\tools\dxr\*
    tools\clang\tools\dxv\*
    tools\clang\tools\dotnetc\*
    utils\hct\*
    CONTRIBUTING.md
    COPYRIGHT
    LICENSE-MIT
    README.md
    cmake\modules\FindD3D12.cmake
    cmake\modules\FindDiaSDK.cmake
    cmake\modules\FindTAEF.cmake
    docs\DXIL.rst
    docs\HLSLChanges.rst
    docs\_themes\dxc-theme\layout.html
    docs\_themes\dxc-theme\theme.conf
    docs\_themes\dxc-theme\static\dxc-theme.css
    include\llvm\llvm_assert\assert.h
    include\llvm\llvm_assert\cassert
    include\llvm\Support\MSFileSystem.h
    include\llvm\Support\OacrIgnoreCond.h
    lib\MSSupport\CMakeLists.txt
    lib\MSSupport\MSFileSystemImpl.cpp
    lib\Support\assert.cpp
    lib\Support\MSFileSystemBasic.cpp
    lib\Support\Windows\MSFileSystem.inc.cpp
    lib\Transforms\Scalar\Reg2MemHLSL.cpp
    lib\Transforms\Scalar\ScalarReplAggregatesHLSL.cpp
    tools\clang\docs\UsingDxc.rst
    tools\clang\include\clang\AST\HlslTypes.h
    tools\clang\include\clang\Basic\BuiltinsDXIL.def
    tools\clang\include\clang\Basic\LangOptions.fixed.def
    tools\clang\include\clang\Parse\ParseHLSL.h
    tools\clang\include\clang\Sema\SemaHLSL.h
    tools\clang\lib\AST\ASTContextHLSL.cpp
    tools\clang\lib\AST\HlslTypes.cpp
    tools\clang\lib\CodeGen\CGHLSLMS.cpp
    tools\clang\lib\CodeGen\CGHLSLRuntime.cpp
    tools\clang\lib\CodeGen\CGHLSLRuntime.h
    tools\clang\lib\Frontend\Rewrite\FrontendActions_rewrite.cpp
    tools\clang\lib\Parse\HLSLRootSignature.cpp
    tools\clang\lib\Parse\HLSLRootSignature.h
    tools\clang\lib\Parse\ParseHLSL.cpp
    tools\clang\lib\Sema\gen_intrin_main_tables_15.h
    tools\clang\lib\Sema\SemaHLSL.cpp
    tools\clang\tools\d3dcomp\CMakeLists.txt
    tools\clang\tools\d3dcomp\d3dcomp.cpp
    tools\clang\tools\d3dcomp\d3dcomp.def
    tools\clang\tools\libclang\dxcisenseimpl.cpp
    tools\clang\tools\libclang\dxcisenseimpl.h
    tools\clang\tools\libclang\dxcrewriteunused.cpp
    tools\clang\tools\libclang\libclang.rc
    tools\dxexp\CMakeLists.txt
    tools\dxexp\dxexp.cpp
    tools\dxexp\LLVMBuild.txt
2017-01-24 17:54:00 -08:00
Marcelo Lopez Ruiz 6ee4074a4b first commit 2016-12-28 11:52:27 -08:00