Hello, Antoine Beaupre (on Cc:) noticed that sparse doesn't work on some not so common architectures like ppc32le, s390x, ppc64 and sparc64[1]. This is nicely catched by the testsuite, e.g.: ukleinek@plummer:~/sparse$ git rev-parse HEAD 958c11c35d98417eb6b948bffe2dffed14eb3320 ukleinek@plummer:~/sparse$ uname -a Linux plummer 4.9.0-3-powerpc64le #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) ppc64le GNU/Linux ukleinek@plummer:~/sparse$ make check V=1 cd validation && ./test-suite TEST Woverride-init-def (Woverride-init-def.c) Using command : ../sparse Woverride-init-def.c Expecting exit value: 0 TEST Woverride-init-no (Woverride-init-no.c) Using command : ../sparse -Wno-override-init Woverride-init-no.c Expecting exit value: 0 TEST Woverride-init-yes (Woverride-init-yes.c) Using command : ../sparse -Woverride-init Woverride-init-yes.c Expecting exit value: 0 TEST warn-unknown-attribute (Wunknown-attribute-def.c) Using command : ../sparse Wunknown-attribute-def.c Expecting exit value: 0 TEST warn-unknown-attribute-no (Wunknown-attribute-no.c) Using command : ../sparse -Wno-unknown-attribute Wunknown-attribute-no.c Expecting exit value: 0 TEST warn-unknown-attribute-yes (Wunknown-attribute-yes.c) Using command : ../sparse -Wunknown-attribute Wunknown-attribute-yes.c Expecting exit value: 0 TEST __func__ (__func__.c) Using command : ../sparse -Wall __func__.c Expecting exit value: 0 TEST abstract array declarator static (abstract-array-declarator-static.c) Using command : ../sparse abstract-array-declarator-static.c Expecting exit value: 0 TEST address_space attribute (address_space.c) Using command : ../sparse address_space.c Expecting exit value: 0 TEST alias distinct symbols (alias-distinct.c) Using command : ../test-linearize alias-distinct.c Expecting exit value: 0 TEST alias symbol/pointer (alias-mixed.c) Using command : ../test-linearize alias-mixed.c Expecting exit value: 0 TEST alias same symbols (alias-same.c) Using command : ../test-linearize alias-same.c Expecting exit value: 0 TEST attribute __alloc_align__ (alloc-align.c) Using command : ../sparse alloc-align.c Expecting exit value: 0 TEST alternate keywords (alternate-keywords.c) Using command : ../sparse alternate-keywords.c Expecting exit value: 0 TEST test anonymous union initializer (anon-union.c) Using command : ../sparse anon-union.c Expecting exit value: 0 TEST Asm with goto labels. (asm-empty-clobber.c) Using command : ../sparse asm-empty-clobber.c Expecting exit value: 0 TEST Asm with goto labels. (asm-goto-lables.c) Using command : ../sparse asm-goto-lables.c Expecting exit value: 0 TEST asm-toplevel.c (asm-toplevel.c) Using command : ../test-linearize asm-toplevel.c Expecting exit value: 0 TEST inline attributes (attr-inline.c) Using command : ../sparse attr-inline.c Expecting exit value: 0 TEST attribute no_sanitize_address (attr-no_sanitize_address.c) Using command : ../sparse attr-no_sanitize_address.c Expecting exit value: 0 TEST attribute noclone (attr-noclone.c) Using command : ../sparse attr-noclone.c Expecting exit value: 0 TEST optimize attributes (attr-optimize.c) Using command : ../sparse attr-optimize.c Expecting exit value: 0 TEST attribute warning (attr-warning.c) Using command : ../sparse attr-warning.c Expecting exit value: 0 TEST attribute assume_aligned (attr_aligned.c) Using command : ../sparse attr_aligned.c Expecting exit value: 0 TEST attribute after ( in direct-declarator (attr_in_parameter.c) Using command : ../sparse attr_in_parameter.c Expecting exit value: 0 TEST attribute vector_size (attr_vector_size.c) Using command : ../sparse attr_vector_size.c Expecting exit value: 0 TEST Arithmetic operator code generation (backend/arithmetic-ops.c) Using command : ../sparsec -c backend/arithmetic-ops.c -o tmp.o Expecting exit value: 0 error: actual error text does not match expected error text. error: see backend/arithmetic-ops.c.error.* for further investigation. --- backend/arithmetic-ops.c.error.expected 2017-08-30 16:02:05.100096386 +0000 +++ backend/arithmetic-ops.c.error.got 2017-08-30 16:02:05.096096330 +0000 @@ -0,0 +1,10 @@ +{standard input}: Assembler messages: +{standard input}:38: Error: unrecognized opcode: `xsaddsp' +{standard input}:52: Error: unrecognized opcode: `xsadddp' +{standard input}:94: Error: unrecognized opcode: `xssubsp' +{standard input}:108: Error: unrecognized opcode: `xssubdp' +{standard input}:150: Error: unrecognized opcode: `xsmulsp' +{standard input}:164: Error: unrecognized opcode: `xsmuldp' +{standard input}:206: Error: unrecognized opcode: `xsdivsp' +{standard input}:220: Error: unrecognized opcode: `xsdivdp' +mv: cannot stat '/tmp/tmp.RyRzUr.o': No such file or directory TEST Array code generation (backend/array.c) Using command : ../sparsec -c backend/array.c -o tmp.o Expecting exit value: 0 TEST Bitwise operator code generation (backend/bitwise-ops.c) Using command : ../sparsec -c backend/bitwise-ops.c -o tmp.o Expecting exit value: 0 TEST Boolean type code generation (backend/bool-test.c) Using command : ../sparsec -c backend/bool-test.c -o tmp.o Expecting exit value: 0 TEST Cast code generation (backend/cast.c) Using command : ../sparsec -c backend/cast.c -o tmp.o Expecting exit value: 0 TEST Comparison operator code generation (backend/cmp-ops.c) Using command : ../sparsec -c backend/cmp-ops.c -o tmp.o Expecting exit value: 0 error: actual error text does not match expected error text. error: see backend/cmp-ops.c.error.* for further investigation. --- backend/cmp-ops.c.error.expected 2017-08-30 16:02:05.392100473 +0000 +++ backend/cmp-ops.c.error.got 2017-08-30 16:02:05.384100361 +0000 @@ -0,0 +1,18 @@ +{standard input}: Assembler messages: +{standard input}:13: Error: unrecognized opcode: `isel' +{standard input}:29: Error: unrecognized opcode: `isel' +{standard input}:46: Error: unrecognized opcode: `isel' +{standard input}:63: Error: unrecognized opcode: `isel' +{standard input}:79: Error: unrecognized opcode: `isel' +{standard input}:95: Error: unrecognized opcode: `isel' +{standard input}:112: Error: unrecognized opcode: `isel' +{standard input}:129: Error: unrecognized opcode: `isel' +{standard input}:145: Error: unrecognized opcode: `isel' +{standard input}:161: Error: unrecognized opcode: `isel' +{standard input}:178: Error: unrecognized opcode: `isel' +{standard input}:194: Error: unrecognized opcode: `isel' +{standard input}:211: Error: unrecognized opcode: `isel' +{standard input}:228: Error: unrecognized opcode: `isel' +{standard input}:245: Error: unrecognized opcode: `isel' +{standard input}:262: Error: unrecognized opcode: `isel' +mv: cannot stat '/tmp/tmp.ui73QJ.o': No such file or directory TEST Extern symbol code generation (backend/extern.c) Using command : ../sparsec -c backend/extern.c -o tmp.o Expecting exit value: 0 TEST Function pointer code generation (backend/function-ptr.c) Using command : ../sparsec -c backend/function-ptr.c -o tmp.o Expecting exit value: 0 TEST 'hello, world' code generation (backend/hello.c) Using command : ../sparsec -c backend/hello.c -o tmp.o Expecting exit value: 0 error: actual error text does not match expected error text. error: see backend/hello.c.error.* for further investigation. --- backend/hello.c.error.expected 2017-08-30 16:02:05.528102376 +0000 +++ backend/hello.c.error.got 2017-08-30 16:02:05.496101928 +0000 @@ -0,0 +1 @@ +/usr/include/powerpc64le-linux-gnu/gnu/stubs.h:8:12: error: unable to open 'gnu/stubs-32.h' TEST Non-bool condition values in branch/select (backend/int-cond.c) Using command : ../sparsec -c backend/int-cond.c -o tmp.o Expecting exit value: 0 error: actual error text does not match expected error text. error: see backend/int-cond.c.error.* for further investigation. --- backend/int-cond.c.error.expected 2017-08-30 16:02:05.576103048 +0000 +++ backend/int-cond.c.error.got 2017-08-30 16:02:05.572102992 +0000 @@ -0,0 +1,4 @@ +{standard input}: Assembler messages: +{standard input}:11: Error: unrecognized opcode: `isel' +{standard input}:26: Error: unrecognized opcode: `isel' +mv: cannot stat '/tmp/tmp.M5YFeP.o': No such file or directory TEST Type of loaded objects (backend/load-type.c) Using command : ../sparsec -c backend/load-type.c -o tmp.o Expecting exit value: 0 TEST Logical operator code generation (backend/logical-ops.c) Using command : ../sparsec -c backend/logical-ops.c -o tmp.o Expecting exit value: 0 error: actual error text does not match expected error text. error: see backend/logical-ops.c.error.* for further investigation. --- backend/logical-ops.c.error.expected 2017-08-30 16:02:05.668104336 +0000 +++ backend/logical-ops.c.error.got 2017-08-30 16:02:05.664104280 +0000 @@ -0,0 +1,4 @@ +{standard input}: Assembler messages: +{standard input}:14: Error: unrecognized opcode: `isel' +{standard input}:32: Error: unrecognized opcode: `isel' +mv: cannot stat '/tmp/tmp.gKQ3me.o': No such file or directory TEST Loops (backend/loop.c) Using command : ../sparsec -c backend/loop.c -o tmp.o Expecting exit value: 0 TEST Loops with unused counter (backend/loop2.c) Using command : ../sparsec -c backend/loop2.c -o tmp.o Expecting exit value: 0 TEST Pointer cast code generation (backend/ptrcast.c) Using command : ../sparsec -c backend/ptrcast.c -o tmp.o Expecting exit value: 0 TEST Type of stored objects (backend/store-type.c) Using command : ../sparsec -c backend/store-type.c -o tmp.o Expecting exit value: 0 TEST struct access code generation (backend/struct-access.c) Using command : ../sparsec -c backend/struct-access.c -o tmp.o Expecting exit value: 0 TEST Struct code generation (backend/struct.c) Using command : ../sparsec -c backend/struct.c -o tmp.o Expecting exit value: 0 TEST sum from 1 to n (backend/sum.c) Using command : ../sparsei backend/sum.c Expecting exit value: 0 TEST Union code generation (backend/union.c) Using command : ../sparsec -c backend/union.c -o tmp.o Expecting exit value: 0 TEST void return type code generation (backend/void-return-type.c) Using command : ../sparsec -c backend/void-return-type.c -o tmp.o Expecting exit value: 0 TEST Bad array designated initializer (bad-array-designated-initializer.c) Using command : ../sparse bad-array-designated-initializer.c Expecting exit value: 0 TEST bad assignment (bad-assignment.c) Using command : ../sparse bad-assignment.c Expecting exit value: 0 TEST Bad cast syntax (bad-cast.c) Using command : ../sparse bad-cast.c Expecting exit value: 0 TEST Bad ternary syntax (bad-ternary-cond.c) Using command : ../sparse bad-ternary-cond.c Expecting exit value: 0 TEST Bad typeof syntax segfault (bad-typeof.c) Using command : ../sparse bad-typeof.c Expecting exit value: 0 TEST enum not in scope (badtype1.c) Using command : ../sparse badtype1.c Expecting exit value: 0 error: actual error text does not match expected error text. error: see badtype1.c.error.* for further investigation. --- badtype1.c.error.expected 2017-08-30 16:02:06.144110998 +0000 +++ badtype1.c.error.got 2017-08-30 16:02:06.140110942 +0000 @@ -1 +0,0 @@ -badtype1.c:1:22: warning: bad scope for 'enum bar' info: test 'badtype1.c' is known to fail TEST missing type (badtype2.c) Using command : ../sparse badtype2.c Expecting exit value: 0 TEST missing type in argument list (badtype3.c) Using command : ../sparse badtype3.c Expecting exit value: 0 TEST switch(bad_type) {...} segfault (badtype4.c) Using command : ../sparse badtype4.c Expecting exit value: 0 TEST badtype5.c (badtype5.c) Using command : ../sparse badtype5.c Expecting exit value: 0 TEST binary constant (binary-constant.c) Using command : ../sparse binary-constant.c Expecting exit value: 0 TEST bitfield size (bitfield-size.c) Using command : ../test-linearize -Wno-decl bitfield-size.c Expecting exit value: 0 TEST bitfield to integer promotion (bitfields.c) Using command : ../sparse bitfields.c Expecting exit value: 0 TEST conversions to bitwise types (bitwise-cast.c) Using command : ../sparse -Wbitwise bitwise-cast.c Expecting exit value: 0 TEST sizeof(bool array) (bool-array.c) Using command : ../sparse -Wno-sizeof-bool bool-array.c Expecting exit value: 0 TEST bool-cast-bad.c (bool-cast-bad.c) Using command : ../sparse bool-cast-bad.c Expecting exit value: 0 TEST bool-cast-explicit (bool-cast-explicit.c) Using command : ../test-linearize -m64 bool-cast-explicit.c Expecting exit value: 0 TEST bool-cast-implicit (bool-cast-implicit.c) Using command : ../test-linearize -m64 bool-cast-implicit.c Expecting exit value: 0 TEST bool-cast-restricted.c (bool-cast-restricted.c) Using command : ../sparse -Wno-decl bool-cast-restricted.c Expecting exit value: 0 TEST constant folding in bswap builtins (bswap-constant-folding.c) Using command : ../sparse bswap-constant-folding.c Expecting exit value: 0 TEST inlining switch statement (bug_inline_switch.c) Using command : ../sparse bug_inline_switch.c Expecting exit value: 0 TEST builtin-args-checking (builtin-args-checking.c) Using command : ../sparse builtin-args-checking.c Expecting exit value: 0 TEST builtin-bswap-constant (builtin-bswap-constant.c) Using command : ../test-linearize builtin-bswap-constant.c Expecting exit value: 0 TEST builtin-bswap (builtin-bswap-variable.c) Using command : ../test-linearize builtin-bswap-variable.c Expecting exit value: 0 TEST __builtin_atomic (builtin_atomic.c) Using command : ../sparse builtin_atomic.c Expecting exit value: 0 TEST __builtin_bswap (builtin_bswap.c) Using command : ../sparse builtin_bswap.c Expecting exit value: 0 TEST __builtin INFINITY / nan() (builtin_inf.c) Using command : ../sparse builtin_inf.c Expecting exit value: 0 TEST __builtin_safe (builtin_safe1.c) Using command : ../sparse builtin_safe1.c Expecting exit value: 0 TEST __builtin_unreachable() (builtin_unreachable.c) Using command : ../sparse builtin_unreachable.c Expecting exit value: 0 TEST __builtin_va_arg_pack() (builtin_va_arg_pack.c) Using command : ../sparse builtin_va_arg_pack.c Expecting exit value: 0 TEST c11-alignas (c11-alignas.c) Using command : ../test-linearize -std=c11 c11-alignas.c Expecting exit value: 0 TEST c11-alignof (c11-alignof.c) Using command : ../test-linearize -std=c11 c11-alignof.c Expecting exit value: 0 TEST c11-noreturn (c11-noreturn.c) Using command : ../test-parsing -std=c11 c11-noreturn.c Expecting exit value: 0 TEST c11-stdc-version (c11-stdc-version.c) Using command : ../sparse -E -std=c11 c11-stdc-version.c Expecting exit value: 0 TEST c11-thread-local (c11-thread-local.c) Using command : ../test-parsing -std=c11 c11-thread-local.c Expecting exit value: 0 TEST C99 for-loop declarations (c99-for-loop-decl.c) Using command : ../sparse c99-for-loop-decl.c Expecting exit value: 0 TEST C99 for loop variable declaration (c99-for-loop.c) Using command : ../test-linearize c99-for-loop.c Expecting exit value: 0 TEST Calling convention attributes (calling-convention-attributes.c) Using command : ../sparse calling-convention-attributes.c Expecting exit value: 0 TEST cast-constant-to-float (cast-constant-to-float.c) Using command : ../test-linearize -Wno-decl cast-constant-to-float.c Expecting exit value: 0 TEST cast-constants.c (cast-constants.c) Using command : ../test-linearize -m64 cast-constants.c Expecting exit value: 0 TEST cast-kinds (cast-kinds.c) Using command : ../test-linearize -m64 cast-kinds.c Expecting exit value: 0 TEST Segfault in check_byte_count after syntax error (check_byte_count-ice.c) Using command : ../sparse check_byte_count-ice.c Expecting exit value: 0 TEST choose expr builtin (choose_expr.c) Using command : ../sparse choose_expr.c Expecting exit value: 0 TEST Comma and array decay (comma.c) Using command : ../sparse comma.c Expecting exit value: 0 TEST Compare null pointer constant to int (compare-null-to-int.c) Using command : ../sparse compare-null-to-int.c Expecting exit value: 0 TEST compound-assign-type (compound-assign-type.c) Using command : ../test-linearize -m64 compound-assign-type.c Expecting exit value: 0 TEST cond-address-array.c (cond-address-array.c) Using command : ../test-linearize -Wno-decl -Waddress cond-address-array.c Expecting exit value: 0 TEST cond-address-function (cond-address-function.c) Using command : ../test-linearize -Wno-decl -Waddress cond-address-function.c Expecting exit value: 0 TEST cond-address.c (cond-address.c) Using command : ../test-linearize -Wno-decl cond-address.c Expecting exit value: 0 TEST cond-err-expand.c (cond-err-expand.c) Using command : ../test-linearize -Wno-decl cond-err-expand.c Expecting exit value: 0 TEST Two-argument conditional expression types (cond_expr.c) Using command : ../sparse cond_expr.c Expecting exit value: 0 TEST type of conditional expression (cond_expr2.c) Using command : ../sparse cond_expr2.c Expecting exit value: 0 TEST result type of relational and logical operators (cond_expr3.c) Using command : ../sparse cond_expr3.c Expecting exit value: 0 TEST conditional-type (conditional-type.c) Using command : ../sparse conditional-type.c Expecting exit value: 0 TEST address of static object's member constness verification. (constexpr-addr-of-static-member.c) Using command : ../sparse -Wconstexpr-not-const constexpr-addr-of-static-member.c Expecting exit value: 0 TEST address of static object constness verification. (constexpr-addr-of-static.c) Using command : ../sparse -Wconstexpr-not-const constexpr-addr-of-static.c Expecting exit value: 0 TEST Expression constness propagation in binops and alike (constexpr-binop.c) Using command : ../sparse constexpr-binop.c Expecting exit value: 0 TEST Expression constness propagation in casts (constexpr-cast.c) Using command : ../sparse constexpr-cast.c Expecting exit value: 0 TEST compound literal address constness verification (constexpr-compound-literal.c) Using command : ../sparse -Wconstexpr-not-const constexpr-compound-literal.c Expecting exit value: 0 TEST Expression constness propagation in conditional expressions (constexpr-conditional.c) Using command : ../sparse constexpr-conditional.c Expecting exit value: 0 TEST static storage object initializer constness verification. (constexpr-init.c) Using command : ../sparse -Wconstexpr-not-const constexpr-init.c Expecting exit value: 0 TEST label reference constness verification. (constexpr-labelref.c) Using command : ../sparse -Wconstexpr-not-const constexpr-labelref.c Expecting exit value: 0 TEST __builtin_offsetof() constness verification. (constexpr-offsetof.c) Using command : ../sparse constexpr-offsetof.c Expecting exit value: 0 TEST pointer arithmetic constness verification. (constexpr-pointer-arith.c) Using command : ../sparse -Wconstexpr-not-const constexpr-pointer-arith.c Expecting exit value: 0 TEST integer literal cast to pointer type constness verification. (constexpr-pointer-cast.c) Using command : ../sparse -Wconstexpr-not-const constexpr-pointer-cast.c Expecting exit value: 0 TEST Expression constness propagation in preops (constexpr-preop.c) Using command : ../sparse constexpr-preop.c Expecting exit value: 0 TEST constness of pure/const builtins (constexpr-pure-builtin.c) Using command : ../sparse constexpr-pure-builtin.c Expecting exit value: 0 TEST string literal constness verification. (constexpr-string.c) Using command : ../sparse -Wconstexpr-not-const constexpr-string.c Expecting exit value: 0 TEST __builtin_types_compatible_p() constness verification. (constexpr-types-compatible-p.c) Using command : ../sparse constexpr-types-compatible-p.c Expecting exit value: 0 TEST Check -Wcontext (context.c) Using command : ../sparse context.c Expecting exit value: 0 TEST crash add-doms (crash-add-doms.c) Using command : ../test-linearize crash-add-doms.c Expecting exit value: 0 TEST crash bb_target (crash-bb_target.c) Using command : ../test-linearize crash-bb_target.c Expecting exit value: 0 TEST crash ep->active (crash-ep-active.c) Using command : ../test-linearize crash-ep-active.c Expecting exit value: 0 TEST crash ptrlist (crash-ptrlist.c) Using command : ../test-linearize crash-ptrlist.c Expecting exit value: 0 TEST crash rewrite_branch (crash-rewrite-branch.c) Using command : ../test-linearize crash-rewrite-branch.c Expecting exit value: 0 TEST crazy02-not-so.c (crazy02-not-so.c) Using command : ../sparse -Wno-decl crazy02-not-so.c Expecting exit value: 0 TEST crazy03.c (crazy03.c) Using command : ../sparse crazy03.c Expecting exit value: 0 TEST declaration after statement (ANSI) (declaration-after-statement-ansi.c) Using command : ../sparse -ansi declaration-after-statement-ansi.c Expecting exit value: 0 TEST declaration after statement (C89) (declaration-after-statement-c89.c) Using command : ../sparse -std=c89 declaration-after-statement-c89.c Expecting exit value: 0 TEST declaration after statement (C99) (declaration-after-statement-c99.c) Using command : ../sparse -std=c99 declaration-after-statement-c99.c Expecting exit value: 0 TEST declaration after statement (default) (declaration-after-statement-default.c) Using command : ../sparse declaration-after-statement-default.c Expecting exit value: 0 TEST finding definitions (definitions.c) Using command : ../sparse definitions.c Expecting exit value: 0 TEST designated_init attribute (designated-init.c) Using command : ../sparse designated-init.c Expecting exit value: 0 TEST discarded-label-statement (discarded-label-statement.c) Using command : ../test-linearize discarded-label-statement.c Expecting exit value: 0 TEST division constants (div.c) Using command : ../sparse div.c Expecting exit value: 0 TEST Double semicolon in struct (double-semicolon.c) Using command : ../sparse double-semicolon.c Expecting exit value: 0 TEST Dubious bitwise operation on !x (dubious-bitwise-with-not.c) Using command : ../sparse dubious-bitwise-with-not.c Expecting exit value: 0 TEST endian-big.c (endian-big.c) Using command : ../sparse -mbig-endian endian-big.c Expecting exit value: 0 TEST endian-little.c (endian-little.c) Using command : ../sparse -mlittle-endian endian-little.c Expecting exit value: 0 TEST enum-mismatch (enum-mismatch.c) Using command : ../sparse -Wenum-mismatch enum-mismatch.c Expecting exit value: 0 TEST enumeration constants' scope [6.2.1p7] (enum_scope.c) Using command : ../sparse enum_scope.c Expecting exit value: 0 TEST Character escape sequences (escapes.c) Using command : ../sparse escapes.c Expecting exit value: 0 TEST duplicate extern array (extern-array.c) Using command : ../sparse extern-array.c Expecting exit value: 0 TEST extern inline function (extern-inline.c) Using command : ../sparse extern-inline.c extern-inline.c Expecting exit value: 0 TEST field overlap (field-overlap.c) Using command : ../sparse field-overlap.c Expecting exit value: 0 TEST field-override (field-override.c) Using command : ../sparse -Woverride-init -Woverride-init-all field-override.c Expecting exit value: 0 TEST Forced function argument type. (fored_arg.c) Using command : ../sparse fored_arg.c Expecting exit value: 0 TEST foul bitwise (foul-bitwise.c) Using command : ../sparse foul-bitwise.c Expecting exit value: 0 TEST fp-vs-ptrcast (fp-vs-ptrcast.c) Using command : ../test-linearize -Wno-decl fp-vs-ptrcast.c Expecting exit value: 0 TEST Function pointer inheritance (function-pointer-inheritance.c) Using command : ../sparse function-pointer-inheritance.c Expecting exit value: 0 TEST function-redecl (function-redecl.c) Using command : ../sparse function-redecl.c Expecting exit value: 0 TEST goto labels (goto-label.c) Using command : ../sparse goto-label.c Expecting exit value: 0 TEST identifier-list parsing (identifier_list.c) Using command : ../sparse identifier_list.c Expecting exit value: 0 TEST implicit-ret-type.c (implicit-ret-type.c) Using command : ../sparse -Wno-decl implicit-ret-type.c Expecting exit value: 0 TEST implicit-type.c (implicit-type.c) Using command : ../sparse -Wno-decl implicit-type.c Expecting exit value: 0 TEST internal infinite loop (0) (infinite-loop0.c) Using command : ../sparse -Wno-decl infinite-loop0.c Expecting exit value: 0 TEST infinite loop 02 (infinite-loop02.c) Using command : ../sparse -Wno-decl infinite-loop02.c Expecting exit value: 0 TEST infinite loop 03 (infinite-loop03.c) Using command : ../sparse -Wno-decl infinite-loop03.c Expecting exit value: 0 TEST char array initializers (init-char-array.c) Using command : ../sparse init-char-array.c Expecting exit value: 0 TEST parenthesized string initializer (init-char-array1.c) Using command : ../sparse -Wparen-string init-char-array1.c Expecting exit value: 0 TEST -Winit-cstring option (init_cstring.c) Using command : ../sparse -Winit-cstring init_cstring.c Expecting exit value: 0 TEST Initializer entry defined twice (initializer-entry-defined-twice.c) Using command : ../sparse initializer-entry-defined-twice.c Expecting exit value: 0 TEST inline compound literals (inline_compound_literals.c) Using command : ../sparse inline_compound_literals.c Expecting exit value: 0 TEST int128 (int128.c) Using command : ../test-linearize int128.c Expecting exit value: 0 TEST Integer promotions (integer-promotions.c) Using command : ../sparse integer-promotions.c Expecting exit value: 0 TEST integer constant & conditional expression (ioc-typecheck.c) Using command : ../sparse ioc-typecheck.c Expecting exit value: 0 error: actual error text does not match expected error text. error: see ioc-typecheck.c.error.* for further investigation. --- ioc-typecheck.c.error.expected 2017-08-30 16:02:07.552130702 +0000 +++ ioc-typecheck.c.error.got 2017-08-30 16:02:07.548130646 +0000 @@ -0,0 +1 @@ +ioc-typecheck.c:3:16: error: bad integer constant expression info: test 'ioc-typecheck.c' is known to fail TEST kill-casts (kill-casts.c) Using command : ../test-linearize kill-casts.c Expecting exit value: 0 TEST kill-computedgoto (kill-computedgoto.c) Using command : ../test-linearize kill-computedgoto.c Expecting exit value: 0 TEST kill-cse (kill-cse.c) Using command : ../test-linearize -Wno-decl kill-cse.c Expecting exit value: 0 TEST kill insert-branch (kill-insert-branch.c) Using command : ../test-linearize -Wno-decl kill-insert-branch.c Expecting exit value: 0 TEST kill-load (kill-load.c) Using command : ../test-linearize -Wno-decl kill-load.c Expecting exit value: 0 TEST kill-phi-node (kill-phi-node.c) Using command : ../test-linearize kill-phi-node.c Expecting exit value: 0 TEST kill-phi-ttsbb (kill-phi-ttsbb.c) Using command : ../test-linearize kill-phi-ttsbb.c Expecting exit value: 0 TEST kill-phi-ttsbb2 (kill-phi-ttsbb2.c) Using command : ../test-linearize kill-phi-ttsbb2.c Expecting exit value: 0 TEST kill-phisrc (kill-phisrc.c) Using command : ../test-linearize -Wno-decl kill-phisrc.c Expecting exit value: 0 TEST kill-pure-call (kill-pure-call.c) Using command : ../test-linearize -Wno-decl kill-pure-call.c Expecting exit value: 0 TEST kill-replaced-insn (kill-replaced-insn.c) Using command : ../test-linearize kill-replaced-insn.c Expecting exit value: 0 TEST kill-rewritten-load (kill-rewritten-load.c) Using command : ../test-linearize -Wno-decl kill-rewritten-load.c Expecting exit value: 0 TEST kill-select (kill-select.c) Using command : ../test-linearize kill-select.c Expecting exit value: 0 TEST kill-slice (kill-slice.c) Using command : ../test-linearize -Wno-decl kill-slice.c Expecting exit value: 0 TEST kill-store (kill-store.c) Using command : ../test-linearize -Wno-decl kill-store.c Expecting exit value: 0 TEST kill-unreachable-phi (kill-unreachable-phi.c) Using command : ../sparse kill-unreachable-phi.c Expecting exit value: 0 TEST Label followed by __asm__ (label-asm.c) Using command : ../sparse label-asm.c Expecting exit value: 0 TEST Label attribute (label-attr.c) Using command : ../sparse label-attr.c Expecting exit value: 0 TEST label-expr (label-expr.c) Using command : ../test-linearize label-expr.c Expecting exit value: 0 TEST __label__ scope (label-scope.c) Using command : ../sparse label-scope.c Expecting exit value: 0 TEST bitfield initializer mask (linear/bitfield-init-mask.c) Using command : ../test-linearize -fdump-linearize=only -Wno-decl linear/bitfield-init-mask.c Expecting exit value: 0 TEST bitfield implicit init zero (linear/bitfield-init-zero.c) Using command : ../test-linearize -Wno-decl linear/bitfield-init-zero.c Expecting exit value: 0 TEST missing instruction's size (linear/missing-insn-size.c) Using command : ../test-linearize linear/missing-insn-size.c Expecting exit value: 0 TEST struct implicit init zero not needed (linear/struct-init-full.c) Using command : ../test-linearize -Wno-decl linear/struct-init-full.c Expecting exit value: 0 error: actual output text does not match expected output text. error: see linear/struct-init-full.c.output.* for further investigation. --- linear/struct-init-full.c.output.expected 2017-08-30 16:02:07.888135404 +0000 +++ linear/struct-init-full.c.output.got 2017-08-30 16:02:07.884135348 +0000 @@ -1,10 +1,11 @@ s_init_all: -.L4: +.L0: + store.96 $0 -> 0[s] store.32 %arg1 -> 0[s] store.32 $42 -> 4[s] store.32 $123 -> 8[s] - load.96 %r8 <- 0[s] - ret.96 %r8 + load.96 %r2 <- 0[s] + ret.96 %r2 info: test 'linear/struct-init-full.c' is known to fail TEST struct implicit init zero needed (linear/struct-init-partial.c) Using command : ../test-linearize -Wno-decl linear/struct-init-partial.c Expecting exit value: 0 TEST Local label (local-label.c) Using command : ../sparse local-label.c Expecting exit value: 0 TEST Logical and/or (logical.c) Using command : ../sparse logical.c Expecting exit value: 0 TEST loop-linearization (loop-linearization.c) Using command : ../test-linearize loop-linearization.c Expecting exit value: 0 TEST Expansion of typeof when dealing with member of struct (member_of_typeof.c) Using command : ../sparse member_of_typeof.c Expecting exit value: 0 TEST memops-volatile (memops-volatile.c) Using command : ../test-linearize memops-volatile.c Expecting exit value: 0 TEST handling of identifier-less declarations (missing-ident.c) Using command : ../sparse missing-ident.c Expecting exit value: 0 TEST typedefs with many declarators (multi_typedef.c) Using command : ../sparse multi_typedef.c Expecting exit value: 0 TEST nested declarator vs. parameters (nested-declarator.c) Using command : ../sparse nested-declarator.c Expecting exit value: 0 TEST more on handling of ( in direct-declarator (nested-declarator2.c) Using command : ../sparse nested-declarator2.c Expecting exit value: 0 TEST nocast.c (nocast.c) Using command : ../sparse nocast.c Expecting exit value: 0 TEST noderef attribute (noderef.c) Using command : ../sparse noderef.c Expecting exit value: 0 TEST Using plain integer as NULL pointer (non-pointer-null.c) Using command : ../sparse non-pointer-null.c Expecting exit value: 0 TEST Old initializer with -Wno-old-initializer (old-initializer-nowarn.c) Using command : ../sparse -Wno-old-initializer Expecting exit value: 0 TEST Old initializer (old-initializer.c) Using command : ../sparse old-initializer.c Expecting exit value: 0 TEST double-unop (optim/binops-same-args.c) Using command : ../test-linearize -Wno-decl optim/binops-same-args.c Expecting exit value: 0 TEST bool-context (optim/bool-context.c) Using command : ../test-linearize -Wno-decl optim/bool-context.c Expecting exit value: 0 TEST bool-same-args (optim/bool-same-args.c) Using command : ../test-linearize optim/bool-same-args.c Expecting exit value: 0 TEST bool-simplify (optim/bool-simplify.c) Using command : ../test-linearize -Wno-decl optim/bool-simplify.c Expecting exit value: 0 TEST cse-commutativity (optim/cse-commutativity.c) Using command : ../test-linearize optim/cse-commutativity.c Expecting exit value: 0 TEST cse-dual-compare (optim/cse-dual-compare.c) Using command : ../test-linearize optim/cse-dual-compare.c Expecting exit value: 0 error: Actual output contains some patterns which are not expected. info: test 'optim/cse-dual-compare.c' is known to fail TEST double-unop (optim/double-unop.c) Using command : ../test-linearize -Wno-decl optim/double-unop.c Expecting exit value: 0 TEST fpcast-nop (optim/fpcast-nop.c) Using command : ../test-linearize optim/fpcast-nop.c Expecting exit value: 0 TEST muldiv-by-one (optim/muldiv-by-one.c) Using command : ../test-linearize -Wno-decl optim/muldiv-by-one.c Expecting exit value: 0 TEST muldiv-by-zero (optim/muldiv-by-zero.c) Using command : ../test-linearize -Wno-decl optim/muldiv-by-zero.c Expecting exit value: 0 TEST muldiv-minus-one (optim/muldiv-minus-one.c) Using command : ../test-linearize -Wno-decl optim/muldiv-minus-one.c Expecting exit value: 0 TEST optim/setcc-setcc (optim/setcc-setcc.c) Using command : ../test-linearize optim/setcc-setcc.c Expecting exit value: 0 TEST optim/setcc-seteq (optim/setcc-seteq.c) Using command : ../test-linearize optim/setcc-seteq.c Expecting exit value: 0 TEST optim/setcc-setne (optim/setcc-setne.c) Using command : ../test-linearize optim/setcc-setne.c Expecting exit value: 0 TEST Ignore VOID in if-convert (optim/void-if-convert.c) Using command : ../test-linearize -Wno-decl optim/void-if-convert.c Expecting exit value: 0 TEST There is no scope boundary between global and file scope (outer-scope.c) Using command : ../sparse -include outer-scope.c outer-scope.c Expecting exit value: 0 TEST #pragma once (pragma-once.c) Using command : ../sparse pragma-once.c Expecting exit value: 0 TEST __COUNTER__ #1 (preprocessor/counter1.c) Using command : ../sparse -E preprocessor/counter1.c Expecting exit value: 0 TEST __COUNTER__ #2 (preprocessor/counter2.c) Using command : ../sparse -Ipreprocessor -E preprocessor/counter2.c Expecting exit value: 0 TEST __COUNTER__ #3 (preprocessor/counter3.c) Using command : ../sparse -Ipreprocessor -E preprocessor/counter1.c preprocessor/counter3.c Expecting exit value: 0 TEST dump-macros with empty file (preprocessor/dump-macros-empty.c) Using command : ../sparse -E -dD empty-file Expecting exit value: 0 TEST dump-macros with multiple files (preprocessor/dump-macros-multi.c) Using command : ../sparse -E -dD empty-file preprocessor/dump-macros-multi.c Expecting exit value: 0 TEST dump-macros (preprocessor/dump-macros.c) Using command : ../sparse -E -dD -DIJK=ijk -UNDEF -UNYDEF preprocessor/dump-macros.c Expecting exit value: 0 TEST early-escape (preprocessor/early-escape.c) Using command : ../sparse -E preprocessor/early-escape.c Expecting exit value: 0 TEST predefined ___BIT__ (preprocessor/predef-char-bit.c) Using command : ../test-linearize -Wno-decl preprocessor/predef-char-bit.c Expecting exit value: 0 TEST predefined ___MAX__ (preprocessor/predef-max.c) Using command : ../test-linearize -Wno-decl preprocessor/predef-max.c Expecting exit value: 0 TEST predefined __SIZEOF___ (preprocessor/predef-sizeof.c) Using command : ../test-linearize -Wno-decl preprocessor/predef-sizeof.c Expecting exit value: 0 TEST Preprocessor #1 (preprocessor/preprocessor1.c) Using command : ../sparse -E preprocessor/preprocessor1.c Expecting exit value: 0 TEST Preprocessor #10 (preprocessor/preprocessor10.c) Using command : ../sparse -E preprocessor/preprocessor10.c Expecting exit value: 0 TEST Preprocessor #11 (preprocessor/preprocessor11.c) Using command : ../sparse -E preprocessor/preprocessor11.c Expecting exit value: 0 TEST Preprocessor #12 (preprocessor/preprocessor12.c) Using command : ../sparse -E preprocessor/preprocessor12.c Expecting exit value: 0 TEST Preprocessor #13 (preprocessor/preprocessor13.c) Using command : ../sparse -E preprocessor/preprocessor13.c Expecting exit value: 0 TEST Preprocessor #14 (preprocessor/preprocessor14.c) Using command : ../sparse -E preprocessor/preprocessor14.c Expecting exit value: 0 TEST Preprocessor #15 (preprocessor/preprocessor15.c) Using command : ../sparse -E preprocessor/preprocessor15.c Expecting exit value: 0 TEST Preprocessor #16 (preprocessor/preprocessor16.c) Using command : ../sparse -E preprocessor/preprocessor16.c Expecting exit value: 0 TEST Preprocessor #17 (preprocessor/preprocessor17.c) Using command : ../sparse -E preprocessor/preprocessor17.c Expecting exit value: 0 TEST Preprocessor #18 (preprocessor/preprocessor18.c) Using command : ../sparse -E preprocessor/preprocessor18.c Expecting exit value: 0 TEST Preprocessor #19 (preprocessor/preprocessor19.c) Using command : ../sparse -E preprocessor/preprocessor19.c Expecting exit value: 0 TEST Preprocessor #2 (preprocessor/preprocessor2.c) Using command : ../sparse -E preprocessor/preprocessor2.c Expecting exit value: 0 TEST Preprocessor #20 (preprocessor/preprocessor20.c) Using command : ../sparse -E preprocessor/preprocessor20.c Expecting exit value: 0 TEST Preprocessor #21 (preprocessor/preprocessor21.c) Using command : ../sparse -E preprocessor/preprocessor21.c Expecting exit value: 0 TEST Preprocessor #22 (preprocessor/preprocessor22.c) Using command : ../sparse -E preprocessor/preprocessor22.c Expecting exit value: 0 TEST Preprocessor #23 (preprocessor/preprocessor23.c) Using command : ../sparse -E preprocessor/preprocessor23.c Expecting exit value: 0 TEST Preprocessor #3 (preprocessor/preprocessor3.c) Using command : ../sparse -E preprocessor/preprocessor3.c Expecting exit value: 0 TEST Preprocessor #4 (preprocessor/preprocessor4.c) Using command : ../sparse -E preprocessor/preprocessor4.c Expecting exit value: 0 TEST Preprocessor #5 (preprocessor/preprocessor5.c) Using command : ../sparse -E preprocessor/preprocessor5.c Expecting exit value: 0 TEST Preprocessor #6 (preprocessor/preprocessor6.c) Using command : ../sparse -E preprocessor/preprocessor6.c Expecting exit value: 0 TEST Preprocessor #7 (preprocessor/preprocessor7.c) Using command : ../sparse -E preprocessor/preprocessor7.c Expecting exit value: 0 TEST Preprocessor #8 (preprocessor/preprocessor8.c) Using command : ../sparse -E preprocessor/preprocessor8.c Expecting exit value: 0 TEST Preprocessor #9 (preprocessor/preprocessor9.c) Using command : ../sparse -E preprocessor/preprocessor9.c Expecting exit value: 0 TEST Preprocessor #14 (preprocessor/stringify.c) Using command : ../sparse -E preprocessor/stringify.c Expecting exit value: 0 TEST wide char token-pasting (preprocessor/wide.c) Using command : ../sparse -E preprocessor/wide.c Expecting exit value: 0 TEST Compile skip function prototype (prototype.c) Using command : ../sparsec -c prototype.c -o tmp.o Expecting exit value: 0 TEST ptr-inherit.c (ptr-inherit.c) Using command : ../sparse ptr-inherit.c Expecting exit value: 0 TEST Pure function attribute (pure-function.c) Using command : ../sparse pure-function.c Expecting exit value: 0 TEST const et.al. are reserved identifiers (reserved.c) Using command : ../sparse reserved.c Expecting exit value: 0 TEST restrict array attribute (restrict-array.c) Using command : ../sparse restrict-array.c Expecting exit value: 0 TEST typeof with bitwise types (restricted-typeof.c) Using command : ../sparse -Wbitwise restricted-typeof.c Expecting exit value: 0 TEST sizeof(_Bool) is valid (sizeof-bool.c) Using command : ../sparse -Wsizeof-bool sizeof-bool.c Expecting exit value: 0 TEST Handling of sizeof compound-literal . member (sizeof-compound-postfix.c) Using command : ../sparse sizeof-compound-postfix.c Expecting exit value: 0 TEST valid specifier combinations (specifiers1.c) Using command : ../sparse specifiers1.c Expecting exit value: 0 TEST invalid specifier combinations (specifiers2.c) Using command : ../sparse specifiers2.c Expecting exit value: 0 TEST static forward declaration (static-forward-decl.c) Using command : ../sparse static-forward-decl.c Expecting exit value: 0 TEST static assertion (static_assert.c) Using command : ../sparse static_assert.c Expecting exit value: 0 TEST Address space of a struct member (struct-as.c) Using command : ../sparse struct-as.c Expecting exit value: 0 TEST struct attribute placement (struct-attribute-placement.c) Using command : ../sparse struct-attribute-placement.c Expecting exit value: 0 TEST struct namespaces #1 (struct-ns1.c) Using command : ../sparse struct-ns1.c Expecting exit value: 0 TEST struct not in scope (struct-ns2.c) Using command : ../sparse struct-ns2.c Expecting exit value: 0 error: actual error text does not match expected error text. error: see struct-ns2.c.error.* for further investigation. --- struct-ns2.c.error.expected 2017-08-30 16:02:09.076152032 +0000 +++ struct-ns2.c.error.got 2017-08-30 16:02:09.068151920 +0000 @@ -1,3 +0,0 @@ -struct-ns2.c:2:11: warning: bad scope for 'struct Bar' -struct-ns2.c:12:14: error: incomplete type/unknown size for 'y' -struct-ns2.c:13:5: error: using member 'i' in incomplete 'struct Bar' info: test 'struct-ns2.c' is known to fail TEST struct size (struct-size1.c) Using command : ../sparse struct-size1.c Expecting exit value: 0 TEST tautological-compare (tautological-compare.c) Using command : ../sparse -Wno-decl -Wtautological-compare tautological-compare.c Expecting exit value: 0 TEST binary operations (test-be.c) Using command : ../sparse test-be.c Expecting exit value: 0 TEST selfcheck1 (testsuite-selfcheck1.c) Using command : ../sparse -E testsuite-selfcheck1.c Expecting exit value: 0 TEST selfcheck2 (testsuite-selfcheck2.c) Using command : ../sparse -E testsuite-selfcheck2.c Expecting exit value: 0 error: Actual output doesn't contain some of the expected patterns. info: test 'testsuite-selfcheck2.c' is known to fail TEST selfcheck3 (testsuite-selfcheck3.c) Using command : ../sparse -E testsuite-selfcheck3.c Expecting exit value: 0 error: Actual output contains some patterns which are not expected. info: test 'testsuite-selfcheck3.c' is known to fail TEST Transparent union attribute. (transparent-union.c) Using command : ../sparse transparent-union.c Expecting exit value: 0 TEST "char []" to "char *" demotion (type1.c) Using command : ../sparse type1.c Expecting exit value: 0 TEST typedef shadowing (typedef_shadow.c) Using command : ../sparse typedef_shadow.c Expecting exit value: 0 TEST typeof-addresspace.c (typeof-addresspace.c) Using command : ../sparse typeof-addresspace.c Expecting exit value: 0 error: actual error text does not match expected error text. error: see typeof-addresspace.c.error.* for further investigation. --- typeof-addresspace.c.error.expected 2017-08-30 16:02:09.204153823 +0000 +++ typeof-addresspace.c.error.got 2017-08-30 16:02:09.200153767 +0000 @@ -0,0 +1,6 @@ +typeof-addresspace.c:9:30: warning: incorrect type in initializer (different address spaces) +typeof-addresspace.c:9:30: expected int *ptr3 +typeof-addresspace.c:9:30: got int *ptr +typeof-addresspace.c:10:29: warning: incorrect type in initializer (different address spaces) +typeof-addresspace.c:10:29: expected int *ptr4 +typeof-addresspace.c:10:29: got int *ptr info: test 'typeof-addresspace.c' is known to fail TEST Rusty Russell's typeof attribute casting. (typeof-attribute.c) Using command : ../sparse typeof-attribute.c Expecting exit value: 0 TEST typeof-mods (typeof-mods.c) Using command : ../sparse typeof-mods.c Expecting exit value: 0 TEST typeof-noderef (typeof-noderef.c) Using command : ../sparse typeof-noderef.c Expecting exit value: 0 error: actual error text does not match expected error text. error: see typeof-noderef.c.error.* for further investigation. --- typeof-noderef.c.error.expected 2017-08-30 16:02:09.240154327 +0000 +++ typeof-noderef.c.error.got 2017-08-30 16:02:09.236154271 +0000 @@ -0,0 +1,6 @@ +typeof-noderef.c:7:30: warning: incorrect type in initializer (different modifiers) +typeof-noderef.c:7:30: expected int *ptr3 +typeof-noderef.c:7:30: got int [noderef] *ptr +typeof-noderef.c:8:29: warning: incorrect type in initializer (different modifiers) +typeof-noderef.c:8:29: expected int *ptr4 +typeof-noderef.c:8:29: got int [noderef] *ptr info: test 'typeof-noderef.c' is known to fail TEST typeof-safe (typeof-safe.c) Using command : ../sparse typeof-safe.c Expecting exit value: 0 error: actual error text does not match expected error text. error: see typeof-safe.c.error.* for further investigation. --- typeof-safe.c.error.expected 2017-08-30 16:02:09.252154495 +0000 +++ typeof-safe.c.error.got 2017-08-30 16:02:09.248154439 +0000 @@ -0,0 +1,9 @@ +typeof-safe.c:9:30: warning: incorrect type in initializer (different modifiers) +typeof-safe.c:9:30: expected int *ptr3 +typeof-safe.c:9:30: got int [safe] *ptr +typeof-safe.c:10:29: warning: incorrect type in initializer (different modifiers) +typeof-safe.c:10:29: expected int *ptr4 +typeof-safe.c:10:29: got int [safe] *ptr +typeof-safe.c:13:13: warning: incorrect type in assignment (different modifiers) +typeof-safe.c:13:13: expected int [safe] *[assigned] ptr +typeof-safe.c:13:13: got int * info: test 'typeof-safe.c' is known to fail TEST -Wtypesign (typesign.c) Using command : ../sparse -Wtypesign typesign.c Expecting exit value: 0 TEST Varargs bogus warning regression test #1 (varargs1.c) Using command : ../sparse varargs1.c Expecting exit value: 0 TEST wide character constants (wide.c) Using command : ../sparse wide.c Expecting exit value: 0 Out of 287 tests, 272 passed, 15 failed (10 of them are known to fail) Makefile:232: recipe for target 'check' failed make: *** [check] Error 1 ukleinek@plummer:~/sparse$ The problem is that some cpp symbols are not defined in sparse that are expected to exist. So I can "fix" backend/sum.c with the following patch: diff --git a/validation/backend/sum.c b/validation/backend/sum.c index 0604299..d0be8dd 100644 --- a/validation/backend/sum.c +++ b/validation/backend/sum.c @@ -1,3 +1,5 @@ +#define __powerpc64__ +#define _CALL_ELF 2 #include #include I'm a bit clueless how sparse works here. I see __powerpc64__ and _CALL_ELF already defined in cgcc, but sparse-llvm doesn't pick it up from there. I didn't check deeply, but I guess for say amd64 the situation should be similar because there __x86_64__ is required to be defined. Can you give me a hint how to fix this? Is this a problem in sparse itself or maybe llvm? Best regards Uwe [1] https://bugs.debian.org/873508