[llvm] r329369 - [LLVM-C] Audit Inline Assembly APIs for Consistency
Andrea Di Biagio via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 10 06:33:54 PDT 2018
On Fri, Apr 6, 2018 at 3:31 AM, Robert Widmann via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: codafi
> Date: Thu Apr 5 19:31:29 2018
> New Revision: 329369
>
> URL: http://llvm.org/viewvc/llvm-project?rev=329369&view=rev
> Log:
> [LLVM-C] Audit Inline Assembly APIs for Consistency
>
> Summary:
> - Add a missing getter for module-level inline assembly
> - Add a missing append function for module-level inline assembly
> - Deprecate LLVMSetModuleInlineAsm and replace it with
> LLVMSetModuleInlineAsm2 which takes an explicit length parameter
> - Deprecate LLVMConstInlineAsm and replace it with LLVMGetInlineAsm, a
> function that allows passing a dialect and is not mis-classified as a
> constant operation
>
> Reviewers: whitequark, deadalnix
>
> Reviewed By: whitequark
>
> Subscribers: llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D45346
>
> Modified:
> llvm/trunk/include/llvm-c/Core.h
> llvm/trunk/lib/IR/Core.cpp
> llvm/trunk/test/Bindings/llvm-c/echo.ll
> llvm/trunk/tools/llvm-c-test/echo.cpp
>
> Modified: llvm/trunk/lib/IR/Core.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/
> Core.cpp?rev=329369&r1=329368&r2=329369&view=diff
> ============================================================
> ==================
> --- llvm/trunk/lib/IR/Core.cpp (original)
> +++ llvm/trunk/lib/IR/Core.cpp Thu Apr 5 19:31:29 2018
> @@ -304,10 +304,42 @@ char *LLVMPrintModuleToString(LLVMModule
> }
>
> /*--.. Operations on inline assembler ..............................
> ........--*/
> +void LLVMSetModuleInlineAsm2(LLVMModuleRef M, const char *Asm, size_t
> Len) {
> + unwrap(M)->setModuleInlineAsm(StringRef(Asm, Len));
> +}
> +
> void LLVMSetModuleInlineAsm(LLVMModuleRef M, const char *Asm) {
> unwrap(M)->setModuleInlineAsm(StringRef(Asm));
> }
>
> +void LLVMAppendModuleInlineAsm(LLVMModuleRef M, const char *Asm, size_t
> Len) {
> + unwrap(M)->appendModuleInlineAsm(StringRef(Asm, Len));
> +}
> +
> +const char *LLVMGetModuleInlineAsm(LLVMModuleRef M, size_t *Len) {
> + auto &Str = unwrap(M)->getModuleInlineAsm();
> + *Len = Str.length();
> + return Str.c_str();
> +}
> +
> +LLVMValueRef LLVMGetInlineAsm(LLVMTypeRef Ty,
> + char *AsmString, size_t AsmStringSize,
> + char *Constraints, size_t ConstraintsSize,
> + LLVMBool HasSideEffects, LLVMBool
> IsAlignStack,
> + LLVMInlineAsmDialect Dialect) {
> + InlineAsm::AsmDialect AD;
> + switch (Dialect) {
> + case LLVMInlineAsmDialectATT:
> + AD = InlineAsm::AD_ATT;
> + case LLVMInlineAsmDialectIntel:
> + AD = InlineAsm::AD_Intel;
> + }
>
This fall-through doesn't sound right.
Is it intentional?
See:
http://lab.llvm.org:8011/builders/ubuntu-gcc7.1-werror/builds/6977/steps/build-unified-tree/logs/stdio
> + return wrap(InlineAsm::get(unwrap<FunctionType>(Ty),
> + StringRef(AsmString, AsmStringSize),
> + StringRef(Constraints, ConstraintsSize),
> + HasSideEffects, IsAlignStack, AD));
> +}
> +
>
> /*--.. Operations on module contexts ..............................
> ........--*/
> LLVMContextRef LLVMGetModuleContext(LLVMModuleRef M) {
>
> Modified: llvm/trunk/test/Bindings/llvm-c/echo.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> Bindings/llvm-c/echo.ll?rev=329369&r1=329368&r2=329369&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/Bindings/llvm-c/echo.ll (original)
> +++ llvm/trunk/test/Bindings/llvm-c/echo.ll Thu Apr 5 19:31:29 2018
> @@ -6,6 +6,8 @@ source_filename = "/test/Bindings/echo.l
> target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
> target triple = "x86_64-apple-macosx10.11.0"
>
> +module asm "classical GAS"
> +
> %S = type { i64, %S* }
>
> @var = global i32 42
>
> Modified: llvm/trunk/tools/llvm-c-test/echo.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-
> c-test/echo.cpp?rev=329369&r1=329368&r2=329369&view=diff
> ============================================================
> ==================
> --- llvm/trunk/tools/llvm-c-test/echo.cpp (original)
> +++ llvm/trunk/tools/llvm-c-test/echo.cpp Thu Apr 5 19:31:29 2018
> @@ -1002,6 +1002,10 @@ int llvm_echo(void) {
> if (strcmp(LLVMGetDataLayoutStr(M), LLVMGetDataLayoutStr(Src)))
> report_fatal_error("Inconsistent DataLayout string representation");
>
> + size_t ModuleInlineAsmLen;
> + const char *ModuleAsm = LLVMGetModuleInlineAsm(Src,
> &ModuleInlineAsmLen);
> + LLVMSetModuleInlineAsm2(M, ModuleAsm, ModuleInlineAsmLen);
> +
> declare_symbols(Src, M);
> clone_symbols(Src, M);
> char *Str = LLVMPrintModuleToString(M);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180410/facab3d2/attachment.html>
More information about the llvm-commits
mailing list