# Copyright (c) 2021-2022 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # The following comment until the empty line must be a valid YAML document # containing exact copies of ISA specification assertions relevant to this test. #--- #- title: Get field from object # description: 'Get field value from an object by field id and put it into accumulator. # #' # instructions: # - sig: ldobj.64 v:in:ref, field_id # acc: out:b64 # format: # - op_v_8_id_32 # verification: # - v1_object ## runner-option: verifier-failure ## runner-option: bugid: 1324, 1826 ## runner-option: tags: verifier, release, clang_release_sanitizer # Test description: # Check that verifier reports an error when the 1st operand is not a ref to an object (other than array) .language PandaAssembly .record panda.Object .record Q {} .function void Q.ctor(Q a0) { return.void } .record R { u1 fu1 u8 fu8 i8 fi8 u16 fu16 i16 fi16 u32 fu32 i32 fi32 u64 fu64 i64 fi64 f32 ff32 f64 ff64 i32[] fi32Array Q fQ Q[] fQArray panda.Object fObj panda.Object[] fObjArray } .function void R.ctor(R a0) { return.void } .function i32 main() { movi v0, 0 try_begin: ldobj.64 v0, R.fi64 try_end: jmp ret catch_begin: jmp ret ret: ldai 0 return #.catchall try_begin, try_end, catch_begin }