Branch data Line data Source code
1 : : //===-- abi_llvm.cpp - LLVM Target ABI description --------------*- C++ -*-===// 2 : : // 3 : : // LDC – the LLVM D compiler 4 : : // 5 : : // This file is distributed under the BSD-style LDC license: 6 : : // 7 : : // Copyright (c) 2007-2012 LDC Team. 8 : : // All rights reserved. 9 : : // 10 : : // Redistribution and use in source and binary forms, with or without 11 : : // modification, are permitted provided that the following conditions are met: 12 : : // 13 : : // * Redistributions of source code must retain the above copyright notice, 14 : : // this list of conditions and the following disclaimer. 15 : : // * Redistributions in binary form must reproduce the above copyright notice, 16 : : // this list of conditions and the following disclaimer in the documentation 17 : : // and/or other materials provided with the distribution. 18 : : // * Neither the name of the LDC Team nor the names of its contributors may be 19 : : // used to endorse or promote products derived from this software without 20 : : // specific prior written permission. 21 : : // 22 : : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 23 : : // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 24 : : // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 25 : : // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 26 : : // ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 27 : : // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 : : // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 29 : : // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 : : // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31 : : // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 : : // 33 : : //===----------------------------------------------------------------------===// 34 : : // 35 : : // This ABI implementation does whatever LLVM decides is fine. 36 : : // It can be useful when first porting Julia to a new platform 37 : : // (until a platform-specific implementation can be developed). 38 : : // 39 : : //===----------------------------------------------------------------------===// 40 : : 41 : : struct ABI_LLVMLayout : AbiLayout { 42 : : 43 : 4 : bool use_sret(jl_datatype_t *ty, LLVMContext &ctx) override 44 : : { 45 : 4 : return false; 46 : : } 47 : : 48 : 12 : bool needPassByRef(jl_datatype_t *ty, AttrBuilder &ab, LLVMContext &ctx, Type *Ty) override 49 : : { 50 : 12 : return false; 51 : : } 52 : : 53 : 16 : Type *preferred_llvm_type(jl_datatype_t *ty, bool isret, LLVMContext &ctx) const override 54 : : { 55 : 16 : return NULL; 56 : : } 57 : : 58 : : };