Commit
ee3109b044a2bb727b91df53f99483cfe7593a72
by Alexander.Richardson[update_llc_test_checks] Baseline test for D100027
Show that we fail to generate CHECK lines for MIPS64 functions with EH.
Differential Revision: https://reviews.llvm.org/D110408
|
 | llvm/test/tools/UpdateTestChecks/update_llc_test_checks/mips64_eh.test |
 | llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/mips64_eh.ll.expected |
 | llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/mips64_eh.ll |
Commit
547e5e4ae613cf5ae3727abef84d5ac0334d9987
by Alexander.Richardson[update_llc_test_checks.py] Fix MIPS ASM regex for functions with EH
On MIPS, functions with exception handling code emits an additional temporary label at the start of the function (due to UseAssignmentForEHBegin):
_Z8do_catchv: # @_Z8do_catchv .Ltmp3: .set .Lfunc_begin0, .Ltmp3 .cfi_startproc .cfi_personality 128, DW.ref.__gxx_personality_v0 .cfi_lsda 0, .Lexception0 .frame $c11,48,$c17 .mask 0x00000000,0 .fmask 0x00000000,0 .set noreorder .set nomacro .set noat # %bb.0: # %entry
The `[^:]*` regex was terminating the search after .Ltmp<N>: and therefore not detecting functions with exception handling.
Reviewed By: atanasyan, MaskRay
Differential Revision: https://reviews.llvm.org/D100027
|
 | llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/mips64_eh.ll |
 | llvm/utils/UpdateTestChecks/asm.py |
 | llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/mips64_eh.ll.expected |
Commit
3c51b9e270bac26fdec1b06ae8dd72960a2353a3
by Alexander.RichardsonFix incorrect GEP bitwidth in areNonOverlapSameBaseLoadAndStore()
When using a datalayout that has pointer index width != pointer size this code triggers an assertion in Value::stripAndAccumulateConstantOffsets(). I encountered this this while compiling FreeBSD for CHERI-RISC-V. Also update LoadsTest.cpp to use a DataLayout with index width != pointer width to ensure this case is tested.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D110406
|
 | llvm/unittests/Analysis/LoadsTest.cpp |
 | llvm/lib/Analysis/Loads.cpp |
Commit
a28177035b16e8884107be686a805f82e8f35840
by Alexander.Richardson[UpdateTestChecks][NFC] Drop a python2 workaround
|
 | llvm/utils/UpdateTestChecks/common.py |
Commit
d5631d49d070116ba2e23baad1ecf5f4cc08e6d1
by Alexander.RichardsonDrop REQUIRES: arm-registered-target from an IR-only test
This works just fine even if the Arm backend is not built.
|
 | clang/test/CodeGen/struct-init.c |
Commit
90179f2323ac4ca0ed28ee94b9a61b565c1b61b6
by Alexander.Richardson[NFC] Add a comment to member-function-pointer-calls.cpp
Looking at this test I did not see why MinGW was using a different command line until I looked at the git history. Add a comment explaining what this RUN line is actually testing. Also add two more RUN lines to show that indirectly passed member pointers don't inhibit the optimization.
|
 | clang/test/CodeGenCXX/member-function-pointer-calls.cpp |
Commit
a18181931f991b04caea297e723db415756f09a0
by Alexander.Richardson[NFC][clang] Add a CHECK lines to tests checking offsetof-like expressions
I am looking at constant-folding changes that could affect these tests, so check that it emits the expected global value instead of just checking that it doesn't crash.
|
 | clang/test/CodeGen/2005-01-02-ConstantInits.c |
 | clang/test/CodeGenCXX/2008-05-07-CrazyOffsetOf.cpp |
 | clang/test/CodeGenCXX/2005-01-03-StaticInitializers.cpp |
Commit
fc0051011eece1448e8d7f5a478acde5b57e1887
by Alexander.Richardson[InstCombine][ConstantFold] Baseline tests for ptrtoint(gep null, x)
Differential Revision: https://reviews.llvm.org/D110244
|
 | llvm/test/Transforms/InstCombine/ptrtoint-nullgep.ll |
Commit
9049a1c61e9a0cfa5ba41940f2d14597b9e0c431
by Alexander.Richardson[ConstantFolding] Fold ptrtoint(gep i8 null, x) -> x
I was looking at some missed optimizations in CHERI-enabled targets and noticed that we weren't removing vtable indirection for calls via known pointers-to-members. The underlying reason for this is that we represent pointers-to-function-members as {i8 addrspace(200)*, i64} and generate the constant offsets using (gep i8 null, <index>). We use a constant GEP here since inttoptr should be avoided for CHERI capabilities. The pointer-to-member call uses ptrtoint to extract the index, and due to this missing fold we can't infer the actual value loaded from the vtable. This is the initial constant folding change for this pattern, I will add an InstCombine fold as a follow-up.
We could fold all inbounds GEP to null (and therefore the ptrtoint to zero) since zero is the only valid offset for an inbounds GEP. If the offset is not zero, that GEP is poison and therefore returning 0 is valid (https://alive2.llvm.org/ce/z/Gzb5iH). However, Clang currently generates inbounds GEPs on NULL for hand-written offsetof() expressions, so this could lead to miscompilations.
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D110245
|
 | llvm/lib/Analysis/ConstantFolding.cpp |
 | llvm/test/Transforms/InstCombine/ptrtoint-nullgep.ll |
Commit
ebb3dc08339cd9d5c4204f0a60742514909d5acd
by Alexander.Richardson[InstCombine] Fold ptrtoint(gep i8 null, x) -> x
This commit is the InstCombine follow-up to the previous constant-folding change that enables noticeable optimizations for CHERI-enabled targets.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D110247
|
 | llvm/test/Transforms/InstCombine/ptrtoint-nullgep.ll |
 | llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp |
Commit
74a47e54be7992b6ccad36b53b6808a7032607c7
by i[llvm-objdump] Fix -R display and support ET_EXEC
* Add a newline before `DYNAMIC RELOCATION RECORDS` (see D101796) * Add the missing `OFFSET TYPE VALUE` line * Align columns
Note: llvm-readobj/ELFDumper.cpp `loadDynamicTable` has sophisticated PT_DYNAMIC code which is unavailable in llvm-objdump.
Reviewed By: jhenderson, Higuoxing
Differential Revision: https://reviews.llvm.org/D110595
|
 | lld/test/ELF/got32-i386-pie-rw.s |
 | llvm/test/tools/llvm-objdump/ELF/dynamic-relocs.test |
 | llvm/tools/llvm-objdump/llvm-objdump.cpp |
 | llvm/test/tools/llvm-objdump/X86/elf-dynamic-relocs-rel.test |
 | llvm/test/tools/llvm-objdump/X86/elf-dynamic-relocs.test |
Commit
27a972a699cd875c7fa9114dc0888015cd724f31
by Yuanfang ChenDiagnose -Wunused-value based on CFG reachability
(This relands 59337263ab45d7657e and makes sure comma operator diagnostics are suppressed in a SFINAE context.)
While at it, add the diagnosis message "left operand of comma operator has no effect" (used by GCC) for comma operator.
This also makes Clang diagnose in the constant evaluation context which aligns with GCC/MSVC behavior. (https://godbolt.org/z/7zxb8Tx96)
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D103938
|
 | clang/test/SemaCXX/warn-unused-value.cpp |
 | clang/test/Sema/const-eval.c |
 | clang/test/Sema/i-c-e.c |
 | clang/test/SemaTemplate/derived.cpp |
 | clang/test/Parser/objc-try-catch-1.m |
 | clang/test/Parser/objcxx11-attributes.mm |
 | clang/lib/Sema/SemaExprCXX.cpp |
 | clang/test/CXX/temp/temp.constr/temp.constr.constr/partial-specializations.cpp |
 | clang/test/SemaCXX/constant-expression.cpp |
 | clang/test/SemaCXX/matrix-type-operators.cpp |
 | clang/include/clang/Basic/DiagnosticSemaKinds.td |
 | clang/test/CXX/drs/dr14xx.cpp |
 | clang/test/Sema/switch-1.c |
 | clang/test/SemaCXX/sizeless-1.cpp |
 | clang/test/Parser/cxx0x-ambig.cpp |
 | clang/test/CXX/drs/dr20xx.cpp |
 | clang/test/PCH/cxx-explicit-specifier.cpp |
 | clang/include/clang/Sema/Sema.h |
 | clang/lib/Sema/SemaExpr.cpp |
 | clang/test/CXX/basic/basic.link/p8.cpp |
 | clang/test/CodeCompletion/pragma-macro-token-caching.c |
 | clang/test/SemaCXX/overloaded-operator.cpp |
 | clang/lib/Sema/SemaStmt.cpp |
 | clang/test/CXX/drs/dr7xx.cpp |
 | clang/test/Frontend/fixed_point_crash.c |
 | clang/test/Sema/exprs.c |
 | clang/test/Sema/sizeless-1.c |
 | clang/test/Sema/warn-unused-value.c |
 | clang/test/SemaCXX/expression-traits.cpp |
 | clang/test/SemaCXX/warn-comma-operator.cpp |
 | clang/test/SemaCXX/constant-expression-cxx2a.cpp |
 | clang/test/SemaCXX/vector.cpp |
 | clang/test/Analysis/dead-stores.c |
 | clang/test/Sema/warn-type-safety.c |
 | clang/test/Parser/objc-messaging-1.m |
 | clang/test/Sema/vla-2.c |
 | clang/test/Parser/cxx-ambig-decl-expr.cpp |
 | clang/test/SemaTemplate/lambda-capture-pack.cpp |
 | clang/test/SemaCXX/attr-annotate.cpp |
 | clang/test/Parser/cxx1z-init-statement.cpp |
 | clang/test/SemaCXX/builtin-constant-p.cpp |
Commit
bddc04bc4cd5fed35b5fc10955612b6718696a95
by llvm-dev[CostModel][X86] Add SSE2/AVX1/AVX512BW test coverage for i16 interleaved load/store
|
 | llvm/test/Analysis/CostModel/X86/interleaved-load-i16-stride-3.ll |
 | llvm/test/Analysis/CostModel/X86/interleaved-store-i16-stride-2.ll |
 | llvm/test/Analysis/CostModel/X86/interleaved-load-i16-stride-2.ll |
 | llvm/test/Analysis/CostModel/X86/interleaved-load-i16-stride-5.ll |
 | llvm/test/Analysis/CostModel/X86/interleaved-store-i16-stride-4.ll |
 | llvm/test/Analysis/CostModel/X86/interleaved-load-i16-stride-6.ll |
 | llvm/test/Analysis/CostModel/X86/interleaved-load-i16-stride-4.ll |
 | llvm/test/Analysis/CostModel/X86/interleaved-store-i16-stride-5.ll |
 | llvm/test/Analysis/CostModel/X86/interleaved-store-i16-stride-3.ll |
 | llvm/test/Analysis/CostModel/X86/interleaved-store-i16-stride-6.ll |
Commit
56e681afcce53d2a6eb1df2724c715bd95a43a25
by paul.robinson[TargetLibraryInfo] Pick new/delete calls by target
There are two sets of new/delete functions, one with Windows/MSVC mangling and one with Itanium mangling. Mark one set or the other as unavailable depending on the target.
Split the test malloc-free-delete.ll into three parts: malloc-free.dll for the C API tests, new-delete-itanium.ll and new-delete-msvc.ll for the target-specific new/delete tests.
Differential Revision: https://reviews.llvm.org/D110419
|
 | llvm/test/Transforms/InstCombine/malloc-free-delete.ll |
 | llvm/test/Transforms/InstCombine/new-delete-itanium.ll |
 | llvm/test/Transforms/InstCombine/malloc-free.ll |
 | llvm/lib/Analysis/TargetLibraryInfo.cpp |
 | llvm/test/Transforms/InstCombine/new-delete-msvc.ll |
Commit
1b998a5f0cd9a4f278dd2d114845379a0fafa0a5
by Adrian PrantlAdd salvageDebugInfo support for truncating/extending ptr/int conversions.
This patch enables debug info salvaging for truncating/extending ptr int conversions. The testcase uncovered a bug in adce, which is addressed separately.
rdar://80227769
Differential Revision: https://reviews.llvm.org/D110461
|
 | llvm/test/Transforms/Util/salvage-debuginfo.ll |
 | llvm/lib/Transforms/Utils/Local.cpp |
Commit
9637b045e6eee71cd34f0f2f80a2ae1ad2a71129
by Adrian PrantlImprove the effectiveness of ADCE's debug info salvaging
This patch improves the effectiveness of ADCE's debug info salvaging by processing the instructions in reverse order and delaying dropAllReferences until after debug info salvaging. This allows salvaging of entire chains of deleted instructions!
Previously we would remove all references from an instruction, which would make it impossible to use that instruction to salvage a later instruction in the instruction stream, because its operands were already removed.
Differential Revision: https://reviews.llvm.org/D110462
|
 | llvm/test/Transforms/Util/salvage-debuginfo.ll |
 | llvm/lib/Transforms/Scalar/ADCE.cpp |
Commit
f6954bf80472cbfc06e39dac75a4a72120c9bd15
by Adrian PrantlImprove the effectiveness of BDCE's debug info salvaging
This patch improves the effectiveness of BDCE's debug info salvaging by processing the instructions in reverse order and delaying dropAllReferences until after debug info salvaging. This allows salvaging of entire chains of deleted instructions!
Previously we would remove all references from an instruction, which would make it impossible to use that instruction to salvage a later instruction in the instruction stream, because its operands were already removed.
Differential Revision: https://reviews.llvm.org/D110568
|
 | llvm/lib/Transforms/Scalar/BDCE.cpp |
 | llvm/test/Transforms/Util/salvage-debuginfo.ll |
Commit
43c543aab7e3e6d5727097600ef13a352d1fb4e9
by michaelrj[libc][NFC] Make strchr and strrchr more consistent
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D110581
|
 | libc/src/string/strchr.cpp |
 | libc/src/string/strrchr.cpp |
Commit
9e7fdcbafed90e8946ecd4d8b118786b12905595
by Lang Hames[MCJIT] Mark test-global-ctors as UNSUPPORTED on Darwin, rather than XFAIL.
MachO doesn't have a '.text.startup' -- this is just plain unsupported.
|
 | llvm/test/ExecutionEngine/MCJIT/test-global-ctors.ll |
Commit
ab5e6e7434ebc67e89332d4401926978c8fb143b
by Lang Hames[llvm-jitlink] Add a -slab-page-size option to override process page size.
The slab allocator is frequently used in -noexec tests where we want a consistent memory layout. In this context we also want to set the effective page size, rather than using the page size of the host process, since not all systems use the same page size. The -slab-page-size option allows us to set the page size for such tests.
The -slab-page-size option will also be honored in exec mode when using the slab allocator, but will trigger an error if the requested size is not a multiple of the actual process page size.
This option was motivated by test failures on a ppc64 bot that was returning zero from sys::Process::getPageSize(), so it also contains a check for errors and zero results from that function if the -slab-page-size option is absent.
Existing slab allocator tests will be updated to use this option in a follow-up commit so that we can point the failing bot at this commit and observe errors associated with sys::Process::getPageSize().
|
 | llvm/tools/llvm-jitlink/llvm-jitlink.cpp |
Commit
85f612efeb352e759f120ee183bf31b1fd7e801a
by dblaikieDebugInfo: Use sugared function type when emitting function declarations for call sites
Otherwise we're losing type information for these functions.
|
 | clang/lib/CodeGen/CGExpr.cpp |
 | clang/lib/CodeGen/CGDebugInfo.h |
 | clang/lib/CodeGen/CGDebugInfo.cpp |
 | clang/test/CodeGen/debug-info-extern-call.c |
 | clang/lib/CodeGen/CodeGenFunction.cpp |
Commit
be610932fa068ed2228b0f694ae80c9294f0293f
by anton[MSP430][Clang] Remove support for -mmcu=msp430
The -mmcu= option accepts a generic MCU named "msp430", which sets the CPU to msp430 and disables hardware multiply support.
The current purpose of accepting this value is to allow -mmcu= to be used as an alias for -mcpu=, however there are some downsides to doing this. -mmcu= provides additional features that will interfere with the expected behavior if the user tries to to use it as an alias for -mcpu=.
-mmcu=msp430 will conflict with -mhwmult=, since the "msp430" MCU is defined to have no hardware multiply support, so the user will not be able to set an explicit hardware multiply version.
-mmcu=msp430 will put "-Tmsp430.ld" on the linker command line, however TI's support files do not provide a linker script with this name and so the user would have to explicitly create it.
Differential Revision: https://reviews.llvm.org/D108299
|
 | clang/test/Driver/msp430-mmcu.c |
 | clang/include/clang/Basic/MSP430Target.def |
Commit
113fa82c3ca4d4fc8310a1de3c4ec31343f81542
by gareevroman[Polly] Check the properties of accesses to operands of a matrix-matrix multiplication
The following code modifies elements of the array D.
for (i = 0; i < _PB_NI; i++) for (j = 0; j < _PB_NJ; j++) { for (k = 0; k < _PB_NK; k++) { double Mul = A[i][k] * B[k][j]; D[i][j][k] += Mul; C[i][j] += Mul; } }
Nevertheless, the code is recognised as a matrix-matrix multiplication, since the second and third dimensions of D are accessed with non-zero strides.
This fixes the typo, which was made during the translation to C++ bindings (https://reviews.llvm.org/D35845).
Reviewed By: Michael Kruse <llvm@meinersbur.de>
Differential Revision: https://reviews.llvm.org/D110491
|
 | polly/test/ScheduleOptimizer/pattern-matching-based-opts_15.ll |
 | polly/lib/Transform/MatmulOptimizer.cpp |
Commit
5c3c716bb1f5b209b42973790fc85ad241e7f86a
by sivachandra[libc] Add FE_DFL_ENV and handle it in fesetenv.
Reviewed By: michaelrj
Differential Revision: https://reviews.llvm.org/D110611
|
 | libc/src/__support/FPUtil/aarch64/FEnvImpl.h |
 | libc/src/__support/FPUtil/x86_64/FEnvImpl.h |
 | libc/test/src/fenv/CMakeLists.txt |
 | libc/config/linux/api.td |
 | libc/test/src/fenv/getenv_and_setenv_test.cpp |
 | libc/spec/stdc.td |
Commit
bfa50250b6429e9e55f849c07c11ece33e9340cd
by Vitaly Buka[NFC][sanitizer] Clang-format some code
|
 | compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.cpp |
 | compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp |
 | compiler-rt/lib/tsan/rtl/tsan_platform_mac.cpp |
Commit
fd582eeffe582665eacac522617a15e17e9872cd
by tra[CUDA] Move CUDA SDK include path further down the include search path.
This allows clang to work on Linux distributions like Debian where <CUDA-PATH>/include may be a symlink to /usr/include. We only need `cuda_wrappers` to be present before the standard C++ library headers. The CUDA SDK headers themselves do not need to be found that early.
This addresses https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=995122 mentioned in post-commit comments on D108247
Differential Revision: https://reviews.llvm.org/D110596
|
 | clang/test/Driver/cuda-detect.cu |
 | clang/lib/Driver/ToolChains/Cuda.cpp |
Commit
0d76d4833dd2815e0b1c786250f474d222f6a0a1
by kdaRevert "Simplify handling of builtin with inline redefinition"
This reverts commit 3d6f49a56995b845c40be5827ded5d1e3f692cec.
Broke bot: https://lab.llvm.org/buildbot/#/builders/5/builds/12360
|
 | clang/lib/CodeGen/CodeGenFunction.cpp |
 | clang/test/CodeGen/memcpy-no-nobuiltin-if-not-emitted.c |
 | clang/lib/CodeGen/CodeGenModule.cpp |
 | clang/test/CodeGen/memcpy-inline-builtin.c |
 | clang/test/CodeGen/pr9614.c |
 | clang/test/CodeGen/memcpy-nobuiltin.c |
Commit
c6edf26f9a283564a5697068c845a8ff03386086
by Akira[docs ]Fix indentation
|
 | clang/docs/Block-ABI-Apple.rst |
Commit
09c575e728e2f24f76ea7f562e61fccaa225d72d
by spatel[InstCombine] add/move tests for shl with binop; NFC
|
 | llvm/test/Transforms/InstCombine/pr19420.ll |
 | llvm/test/Transforms/InstCombine/shl-bo.ll |
 | llvm/test/Transforms/InstCombine/shift.ll |
Commit
9b944c184396ce55a3ad608779cc326ba12c9ee3
by aaronRevert "Add support for `NOLINTBEGIN` ... `NOLINTEND` comments"
This reverts commit c0687e1984a82925918c874b7bb68ad34c32aed0.
There are testing failures being caught by bots. See http://45.33.8.238/linux/56886/step_8.txt as an example.
|
 | clang-tools-extra/test/clang-tidy/infrastructure/Inputs/nolintbeginend/nolint_in_include.inc |
 | clang-tools-extra/test/clang-tidy/infrastructure/nolintbeginend-mismatched-delims.cpp |
 | clang-tools-extra/docs/clang-tidy/index.rst |
 | clang-tools-extra/docs/ReleaseNotes.rst |
 | clang-tools-extra/test/clang-tidy/infrastructure/nolintbeginend-end-at-sof.cpp |
 | clang-tools-extra/test/clang-tidy/infrastructure/nolintbeginend-begin-specific-end-global.cpp |
 | clang-tools-extra/test/clang-tidy/infrastructure/nolintbeginend-begin-global-end-specific.cpp |
 | clang-tools-extra/test/clang-tidy/infrastructure/Inputs/nolintbeginend/error_in_include.inc |
 | clang-tools-extra/test/clang-tidy/infrastructure/nolint.cpp |
 | clang-tools-extra/test/clang-tidy/infrastructure/nolintbeginend-begin-at-eof.cpp |
 | clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp |
 | clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h |
 | clang-tools-extra/test/clang-tidy/infrastructure/nolintbeginend-begin-without-end.cpp |
 | clang-tools-extra/test/clang-tidy/infrastructure/nolintbeginend.cpp |
 | clang-tools-extra/test/clang-tidy/infrastructure/nolintbeginend-end-without-begin.cpp |
 | clang-tools-extra/test/clang-tidy/infrastructure/nolintnextline.cpp |
 | clang-tools-extra/test/clang-tidy/infrastructure/nolintbeginend-mismatched-check-names.cpp |
 | clang-tools-extra/test/clang-tidy/infrastructure/nolintbeginend-typo-in-check-name.cpp |
Commit
b9f547e8e51182d32f1912f97a3e53f4899ea6be
by leonardchan[llvm][profile] Add padding after binary IDs
Some tests with binary IDs would fail with error: no profile can be merged. This is because raw profiles could have unaligned headers when emitting binary IDs. This means padding should be emitted after binary IDs are emitted to ensure everything else is aligned. This patch adds padding after each binary ID to ensure the next binary ID size is 8-byte aligned. This also adds extra checks to ensure we aren't reading corrupted data when printing binary IDs.
Differential Revision: https://reviews.llvm.org/D110365
|
 | compiler-rt/test/profile/Linux/binary-id-padding.c |
 | llvm/test/tools/llvm-profdata/large-binary-id-size.test |
 | compiler-rt/lib/profile/InstrProfilingPlatformLinux.c |
 | llvm/test/tools/llvm-profdata/insufficient-binary-ids-size.test |
 | llvm/test/tools/llvm-profdata/misaligned-binary-ids-size.test |
 | llvm/test/tools/llvm-profdata/binary-ids-padding.test |
 | llvm/lib/ProfileData/InstrProfReader.cpp |
Commit
c3717b6858d32d64514a187ede1a77be8ba4e542
by sgueltonSimplify handling of builtin with inline redefinition
(This is a recommit of 3d6f49a56995b845 that should no longer break validation since bd379915de38a9af3d65e1).
It is a common practice in glibc header to provide an inline redefinition of an existing function. It is especially the case for fortified function.
Clang currently has an imperfect approach to the problem, using a combination of trivially recursive function detection and noinline attribute.
Simplify the logic by suffixing these functions by `.inline` during codegen, so that they are not recognized as builtin by llvm.
After that patch, clang passes all tests from https://github.com/serge-sans-paille/fortify-test-suite
Differential Revision: https://reviews.llvm.org/D109967
|
 | clang/lib/CodeGen/CodeGenFunction.cpp |
 | clang/test/CodeGen/memcpy-inline-builtin.c |
 | clang/test/CodeGen/pr9614.c |
 | clang/test/CodeGen/memcpy-nobuiltin.c |
 | clang/lib/CodeGen/CodeGenModule.cpp |
 | clang/test/CodeGen/memcpy-no-nobuiltin-if-not-emitted.c |
Commit
a03cf331e1e9dfb43d7cba750296cd3b78e83cf3
by wlei[llvm-profgen] Strip context to support non-CS profile generation for hybrid sample
Differential Revision: https://reviews.llvm.org/D109769
|
 | llvm/test/tools/llvm-profgen/noinline-cs-noprobe.test |
 | llvm/tools/llvm-profgen/ProfileGenerator.h |
 | llvm/test/tools/llvm-profgen/inline-cs-noprobe.test |
 | llvm/tools/llvm-profgen/ProfileGenerator.cpp |
 | llvm/tools/llvm-profgen/llvm-profgen.cpp |
 | llvm/tools/llvm-profgen/PerfReader.cpp |
 | llvm/tools/llvm-profgen/PerfReader.h |
Commit
03ce0841daf8386ed6950c73b9a66ddc3fe93e34
by annaAdd profile count. Regenerate check lines. NFC
Function profile counts added to test cases. Regenerated test lines for loop predication test.
|
 | llvm/test/Transforms/LoopPredication/profitability.ll |
Commit
abbbc480a152c1afbac215064f22ae07c87ed964
by nikita.ppvRevert "Improve the effectiveness of BDCE's debug info salvaging"
This reverts commit f6954bf80472cbfc06e39dac75a4a72120c9bd15.
This breaks the test-suite O3 build:
/home/nikic/llvm-test-suite/build-O3/tools/timeit --summary Bitcode/Benchmarks/Halide/local_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o.time /home/nikic/llvm-project/build/bin/clang++ -DNDEBUG -O3 -w -Werror=date-time -save-stats=obj -save-stats=obj -std=c++11 -MD -MT Bitcode/Benchmarks/Halide/local_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o -MF Bitcode/Benchmarks/Halide/local_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o.d -o Bitcode/Benchmarks/Halide/local_laplacian/CMakeFiles/halide_local_laplacian.dir/local_laplacian.bc.o -c ../Bitcode/Benchmarks/Halide/local_laplacian/local_laplacian.bc While deleting: i64 % Use still stuck around after Def is destroyed: %12620 = mul i64 %12619, <badref> clang++: /home/nikic/llvm-project/llvm/lib/IR/Value.cpp:103: llvm::Value::~Value(): Assertion `materialized_use_empty() && "Uses remain when a value is destroyed!"' failed.
|
 | llvm/test/Transforms/Util/salvage-debuginfo.ll |
 | llvm/lib/Transforms/Scalar/BDCE.cpp |