[PATCH] Specify the access behaviour of the memcpy, memmove and memset intrinsics

Arnaud Allard de Grandmaison arnaud.adegm at gmail.com
Sun Feb 10 15:02:02 PST 2013


aadg added you to the CC list for the revision "Specify the access behaviour of the memcpy, memmove and memset intrinsics".

Hi chandlerc,

memcpy, memmove : set volatile on the source or destination operand, not on the intrinsic itself.

This means that memcpy and memove will now have 2 parameters : isSrcVolatile and isDestVolatile in place of isVolatile. For now, the old 'isVolatile' parameter is duplicated to form the is(Src|Dest)Volatile parameters in order to 
preserve the actual behaviour.

The isVolatile and setVolatile method are still there for compatibility reasons, but should disappear as soon as all users have moved to the new interface.

Those changes requires some clang tests to be updated accordingly (see http://llvm-reviews.chandlerc.com/D376)

The update of all IR tests to use the new format is moved to a separate patch, as it is quite big and mechanical.

No functional change. The code in LLVM or Clang using the isVolatile part will be updated in subsequent patches. It is expected to bring some improvement as the old behaviour prevented some optimizations to kick-in.

http://llvm-reviews.chandlerc.com/D386

Files:
  docs/LangRef.rst
  include/llvm/IR/IntrinsicInst.h
  include/llvm/IR/Intrinsics.td
  lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  lib/IR/AutoUpgrade.cpp
  lib/IR/IRBuilder.cpp
  lib/IR/Verifier.cpp
  lib/Target/ARM/ARMFastISel.cpp
  lib/Transforms/Utils/InlineFunction.cpp
  test/Analysis/TypeBasedAliasAnalysis/memcpyopt.ll
  test/Assembler/auto_upgrade_intrinsics.ll
  test/Transforms/DeadStoreElimination/OverwriteStoreEnd.ll
  test/Transforms/InstCombine/objsize.ll
  test/Transforms/InstCombine/sprintf-1.ll
  test/Transforms/LoopIdiom/basic.ll
  test/Transforms/MemCpyOpt/align.ll
  test/Transforms/MemCpyOpt/smaller.ll
  test/Verifier/2006-12-12-IntrinsicDefine.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D386.1.patch
Type: text/x-patch
Size: 26088 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130210/fdb643b2/attachment.bin>


More information about the llvm-commits mailing list