[PATCH] D68521: [PATCH 36/38] [noalias] Clang CodeGen for restrict-qualified pointers

Jeroen Dobbelaere via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 4 15:35:53 PDT 2019


jeroen.dobbelaere created this revision.
jeroen.dobbelaere added reviewers: hfinkel, jdoerfert.
Herald added subscribers: llvm-commits, hiraditya.
Herald added a project: LLVM.

This is part of the series started by D68484 <https://reviews.llvm.org/D68484>.

Introduce support for restrict-qualified pointers as local variables,
as member of a struct, arrays of restrict-qualified pointers,
pointers to restrict qualified pointers.

The full support is enabled with '-full-restrict'.
Combine it with '-no-noalias-arguments' to avoid putting the 'noalias'
attribute on restrict pointers used as argument. This combination is
needed to correctly support restrict arguments. It is kept as a separate option,
as in some cases, the stronger noalias attribute semantics result in better code.
(which also means that some analysis passes could still be made smarter).

Note: this is a stable point and tests should run fine with the patches applied up to this point.


https://reviews.llvm.org/D68521

Files:
  clang/include/clang/AST/Type.h
  clang/include/clang/Basic/CodeGenOptions.def
  clang/include/clang/Driver/CC1Options.td
  clang/lib/AST/Type.cpp
  clang/lib/CodeGen/Address.h
  clang/lib/CodeGen/CGCall.cpp
  clang/lib/CodeGen/CGDecl.cpp
  clang/lib/CodeGen/CGExpr.cpp
  clang/lib/CodeGen/CGExprAgg.cpp
  clang/lib/CodeGen/CGStmt.cpp
  clang/lib/CodeGen/CodeGenFunction.cpp
  clang/lib/CodeGen/CodeGenFunction.h
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/lib/Frontend/CompilerInvocation.cpp
  clang/test/CodeGen/noalias.c
  clang/test/CodeGen/restrict/arg_reuse.c
  clang/test/CodeGen/restrict/array.c
  clang/test/CodeGen/restrict/basic.c
  clang/test/CodeGen/restrict/basic_opt_01.c
  clang/test/CodeGen/restrict/basic_opt_02.c
  clang/test/CodeGen/restrict/basic_opt_03.c
  clang/test/CodeGen/restrict/basic_opt_04.c
  clang/test/CodeGen/restrict/escape_through_volatile.c
  clang/test/CodeGen/restrict/inlining_01.c
  clang/test/CodeGen/restrict/inlining_02.c
  clang/test/CodeGen/restrict/side_noalias_reduction_01.c
  clang/test/CodeGen/restrict/struct.c
  clang/test/CodeGen/restrict/struct_member_01.c
  clang/test/CodeGen/restrict/struct_member_02.c
  clang/test/CodeGen/restrict/struct_member_03.c
  clang/test/CodeGen/restrict/struct_member_04.c
  clang/test/CodeGen/restrict/struct_member_05.c
  clang/test/CodeGen/restrict/struct_member_06.c
  clang/test/CodeGen/restrict/struct_member_07.c
  clang/test/CodeGen/restrict/struct_member_08.cpp
  clang/test/OpenMP/taskloop_firstprivate_codegen.cpp
  clang/test/OpenMP/taskloop_lastprivate_codegen.cpp
  clang/test/OpenMP/taskloop_private_codegen.cpp
  clang/test/OpenMP/taskloop_simd_firstprivate_codegen.cpp
  clang/test/OpenMP/taskloop_simd_lastprivate_codegen.cpp
  clang/test/OpenMP/taskloop_simd_private_codegen.cpp
  llvm/lib/IR/IRBuilder.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D68521.223324.patch
Type: text/x-patch
Size: 105888 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191004/2940c035/attachment.bin>


More information about the llvm-commits mailing list