Skip to content

Commit

Permalink
Squashed 'cbmc/' changes from 5a58539..08f269c
Browse files Browse the repository at this point in the history
08f269c Merge pull request diffblue#1388 from smowton/merge-develop-20170914
e3f3abd Merge remote-tracking branch 'upstream/develop' into merge-develop-20170914
4df244c Merge pull request diffblue#1383 from reuk/reuk/sync-projects
f25db0a Merge pull request diffblue#189 from diffblue/smowton/fix/remove_debug_code
1fae64c Remove stray use of overlay_map
1264b4d Re-enable old function signatures for test-gen compat
e54c0e9 Merge pull request diffblue#338 from thk123/bug/function-flag-on-goto-program
63c9a1e Merge pull request diffblue#1374 from reuk/reuk/maintain-pointer-invariants
00e4555 Fix up CMake build (unrelated)
81f1300 Use PRECONDITION in std_types.h
a9806c0 Ensure pointer invariants are maintained
a46ad62 Regenerate malformed binary blobs
f77822b Merge pull request diffblue#1380 from diffblue/remove-musketeer
22f06fd Correcting windows build
3ede81b Merge pull request diffblue#1293 from reuk/cmake-develop
92a52a5 Corrected doxygen errors
c6f1430 Ensure symex and goto-analyzer regenerate functions
e37d3d5 Disable failing test in the symex directory
15b89fc Weaked the tests for pointer-function-parameters
dee89b0 Fixing the method to work with java_bytecode
1ccd1a2 Add support for using the --function flag to goto-analyze and symex
0732580 Adding missing overrides
71dec3d Use ID_main as the default name for entry function
2aea88d Made generate_start_function abstract
f0d6d72 Refactored the regenerate function into goto-programs
71e6800 Added regression test for using --function on a GOTO program
94b7185 Implemented generate_start_function for Java
cd416bc Call generate_start_function only when regenerating the start function
ee5fb93 Protect against invalid function label
2a3d876 Adding explanatory comment
f347a22 Cause a regeneration of the entry method if a --function is provided
69d05a9 Merge pull request diffblue#1382 from pkesseli/bugfix/language-opaque-stubs
d45325c Merge pull request diffblue#1378 from thk123/bugfix/fix-symex-appveyor
444f256 Add initial value to languaget::generate_opaque_stubs
91e733d Manually disable some failing tests
41bafc0 Merge pull request diffblue#1375 from pkesseli/bugfix/uncaught-exceptions-invariant
a31f1d9 remove musketeer
af8d46f Reverting manually commited fixes
e73a884 Attempt to fix the symex appveyor build
0496142 Account for replaced functions in exceptions_map
2816b80 revert symex regression until Appvoyer works
6a2fd50 added symex to Appveyor build
a2834d0 Map wrappers: forward more of the std::map interface
0a668ae Merge commit '6f386e5eeffa223e7213b596403085f8b497023e' into pull-support-20170908-2
8cd4490 Merge pull request diffblue#1373 from diffblue/symex-trace-fix
5d2d07b enable symex regression testing
5195d24 avoid confusion between SSA lhs and full lhs during assignment
430218f option is now --trace
746bff5 remove_returns missing in symex
211355d comments on test
3896110 output statements
8fc714d use __CPROVER_assert
728ac5b Merge pull request diffblue#1367 from reuk/reuk/disable-alpine-in-travis
73b4357 Merge pull request diffblue#1339 from diffblue/initialize_goto_model
4febd10 Merge pull request diffblue#1364 from diffblue/phread-create-fix
0cfd7b0 Remove PRE_COMMAND scaffolding
04b4f63 Merge pull request diffblue#186 from diffblue/cleanup/misc
577fa6c Tightened up usage of maps
8782103 Merge pull request diffblue#1365 from smowton/smowton/feature/more_map_forwarding
4dde3c5 Disable glucose in Travis
91684da Clean up CMake files after diffblue#1321
7d4e9b5 Make CMake release flags similar to Makefile build
5ee349f Control SAT library from makefiles
ad486f8 Set up glucose externalproject
5afa929 Quote paths in flex/bison commands
9afbced Disable 32-bit builds in Travis
d953327 Enable caching for CMake builds (hopefully)
6251055 Fix and refactor library_check target
3c36aa5 Enable CMake in Travis
f6e4968 Enable running tests from CMake
e609bbb Add CMake howto to COMPILING file
22c2ab9 Add CMakeLists
6facf74 Map wrappers: forward more of the std::map interface
b846858 Merge pull request diffblue#1291 from LAJW/optional
3ddd377 clean-out ill-modeled optimization in string comparisons
95c5e63 Disable Alpine in Travis
fe60e60 pthread_create arguments null/nonnull fix
7d30cde missing copyright header
8c4ff7b remove spurious references to langapi/language_ui.h
e4498ca brief list of symbols, from language_uit
fc4d44a use goto_modelt
9469552 use initialize_goto_model in CBMC/goto-analyse/etc
40fe0f8 simplify API of goto_convert
40557df Used range iterators
d4e89fd Tidy up symbol_tablet::move
c125146 Merge pull request diffblue#1245 from tautschnig/run-diagnostic
435c0bf Merge pull request diffblue#1321 from reuk/reuk/remove-unused-files
08a4077 Make the child process that failed to execvp exit
4928f69 Diagnostic output if run/execve fails
5863a75 Merge pull request diffblue#1333 from tautschnig/remove-c_sizeof
498718f Code readability
2217501 Remove unused files
1c8d81a Merge pull request diffblue#1356 from smowton/smowton/feature/test_pl_add_dry_run
56b5e25 Merge pull request diffblue#1358 from thk123/feature/decrease-message-spam
359a3e3 Modified verbosity for loaded message
296349c Add dry-run mode to test.pl
f6d94cf clean out an unused method
3613ebc When possible, update array types before typechecking initializer
3273bf5 Fix type casts from initializer lists to arrays of unspecified size
1fa569f sizeof(*(void*)) is sizeof(char)
d79067e Remove long-deprecated c_sizeof in favour of size_of_expr et al.
254f133 Merge pull request diffblue#1323 from janmroczkowski/janmroczkowski/goto_modelt-output-const
388a25e Make uncaught_exceptions_analysis.output const
211fcc2 Make path_nodet.output const
9be84ea Make automatont.output const
567eaa7 Make basic_blockst.output const
ebbbf5f Make goto_modelt.output const
ae584df Move optional unit tests into util directory
4dbf939 Manually fix optional
43d0602 Add unit tests for nonstd::optional
8584bb0 Add nonstd/optional.hpp library
281e384 Workaround for travis performing shallow clones with wrong branch

git-subtree-dir: cbmc
git-subtree-split: 08f269c
  • Loading branch information
smowton committed Sep 14, 2017
1 parent 6f386e5 commit 1d3a58a
Show file tree
Hide file tree
Showing 362 changed files with 4,565 additions and 40,464 deletions.
65 changes: 36 additions & 29 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,6 @@ jobs:
# env: COMPILER=g++-5 SAN_FLAGS="-fsanitize=undefined -fno-sanitize-recover -fno-omit-frame-pointer"
env: COMPILER="ccache g++-5"

# Alpine Linux with musl-libc using g++
- stage: Test different OS/CXX/Flags
os: linux
sudo: required
compiler: gcc
cache: ccache
services:
- docker
before_install:
- docker pull diffblue/cbmc-builder:alpine-0.0.3
env:
- PRE_COMMAND="docker run -v ${TRAVIS_BUILD_DIR}:/cbmc -v ${HOME}/.ccache:/root/.ccache diffblue/cbmc-builder:alpine-0.0.3"
- COMPILER="ccache g++"

# OS X using g++
- stage: Test different OS/CXX/Flags
os: osx
Expand Down Expand Up @@ -151,29 +137,50 @@ jobs:
- EXTRA_CXXFLAGS="-DDEBUG"
script: echo "Not running any tests for a debug build."

- stage: Test different OS/CXX/Flags
os: linux
cache: ccache
env:
- BUILD_SYSTEM=cmake
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-5
install:
- cmake -H. -Bbuild '-DCMAKE_BUILD_TYPE=Release' '-DCMAKE_CXX_COMPILER=g++-5'
- cmake --build build -- -j4
script: (cd build; ctest -V -L CORE)

- stage: Test different OS/CXX/Flags
os: osx
cache: ccache
env:
- BUILD_SYSTEM=cmake
- CCACHE_CPP2=yes
install:
- cmake -H. -Bbuild '-DCMAKE_BUILD_TYPE=Release' '-DCMAKE_OSX_ARCHITECTURES=x86_64'
- cmake --build build -- -j4
script: (cd build; ctest -V -L CORE)


allow_failures:
- <<: *linter-stage

install:
- ccache --max-size=1G
- COMMAND="make -C src minisat2-download" &&
eval ${PRE_COMMAND} ${COMMAND}
- COMMAND="make -C src boost-download" &&
eval ${PRE_COMMAND} ${COMMAND}
- COMMAND="make -C src/ansi-c library_check" &&
eval ${PRE_COMMAND} ${COMMAND}
- COMMAND="make -C src CXX=\"$COMPILER\" CXXFLAGS=\"-Wall -Werror -pedantic -O2 -g -DUSE_BOOST $EXTRA_CXXFLAGS\" -j2" &&
eval ${PRE_COMMAND} ${COMMAND}
- COMMAND="make -C src CXX=\"$COMPILER\" CXXFLAGS=\"$FLAGS $EXTRA_CXXFLAGS\" -j2 clobber.dir memory-models.dir musketeer.dir" &&
eval ${PRE_COMMAND} ${COMMAND}
- make -C src minisat2-download
- make -C src boost-download
- make -C src/ansi-c library_check
- make -C src "CXX=${COMPILER}" "CXXFLAGS=-Wall -Werror -pedantic -O2 -g -DUSE_BOOST ${EXTRA_CXXFLAGS}" -j2
- make -C src "CXX=${COMPILER}" "CXXFLAGS=-Wall -Werror -pedantic -O2 -g ${EXTRA_CXXFLAGS}" -j2 clobber.dir memory-models.dir

script:
- if [ -e bin/gcc ] ; then export PATH=$PWD/bin:$PATH ; fi ;
COMMAND="env UBSAN_OPTIONS=print_stacktrace=1 make -C regression test CXX=\"$COMPILER\" CXXFLAGS=\"-Wall -Werror -pedantic -O2 -g $EXTRA_CXXFLAGS\"" &&
eval ${PRE_COMMAND} ${COMMAND}
- COMMAND="make -C unit CXX=\"$COMPILER\" CXXFLAGS=\"-Wall -Werror -pedantic -O2 -g $EXTRA_CXXFLAGS\" -j2" &&
eval ${PRE_COMMAND} ${COMMAND}
- COMMAND="make -C unit test" && eval ${PRE_COMMAND} ${COMMAND}
- env UBSAN_OPTIONS=print_stacktrace=1 make -C regression test "CXX=${COMPILER}" "CXXFLAGS=-Wall -Werror -pedantic -O2 -g ${EXTRA_CXXFLAGS}"
- make -C unit "CXX=${COMPILER}" "CXXFLAGS=-Wall -Werror -pedantic -O2 -g ${EXTRA_CXXFLAGS}" -j2
- make -C unit test

before_cache:
- ccache -s
41 changes: 41 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
cmake_minimum_required(VERSION 3.2)

find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
message(STATUS "Rule launch compile: ${CCACHE_PROGRAM}")
endif()

set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9)

include(GNUInstallDirs)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR
"${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU"
)
# Ensure NDEBUG is not set for release builds
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
# Enable lots of warnings
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Werror")
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# This would be the place to enable warnings for Windows builds, although
# config.inc doesn't seem to do that currently
endif()

set(enable_cbmc_tests on CACHE BOOL "Whether CBMC tests should be enabled")

set(sat_impl "minisat2" CACHE STRING
"This setting controls the SAT library which is used. Valid values are 'minisat2' and 'glucose'"
)

add_subdirectory(src)

if(${enable_cbmc_tests})
enable_testing()
endif()
add_subdirectory(unit)
add_subdirectory(regression)
49 changes: 48 additions & 1 deletion COMPILING
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ Follow these instructions:
BUILD_ENV = MSVC

Open the Visual Studio Command prompt, and then bash.exe -login from
Cygwin from in there.
Cygwin from in there.

3) Type cd src; make - that should do it.

Expand All @@ -183,6 +183,53 @@ can be used for building with MSBuild. Note that you still need to run
flex/bison using "make generated_files" before opening the project.


WORKING WITH CMAKE (EXPERIMENTAL)
---------------------------------

There is an experimental build based on CMake instead of hand-written
makefiles. It should work on a wider variety of systems than the standard
makefile build, and can integrate better with IDEs and static-analysis tools.

0) Run `cmake --version`. If you get a command-not-found error, or the installed
version is lower than 3.2, go and install a new version. Most Linux
distributions have a package for CMake, and Mac users can get it through
Homebrew. Windows users should download it manually from cmake.org.

1) Create a directory to store your build:
`mkdir build`
Run this from the *top level* folder of the project. This is different from
the other builds, which require you to `cd src` first.

2) Generate build files with CMake:
`cmake -H. -Bbuild`
This command tells CMake to use the configuration in the current directory,
and to generate build files into the `build` directory.
This is the point to specify custom build settings, such as compilers and
build back-ends. You can use clang (for example) by adding the argument
`-DCMAKE_CXX_COMPILER=clang++` to the command line. You can also tell
CMake to generate IDE projects by supplying the `-G` flag.
Run `cmake -G` for a comprehensive list of supported back-ends.

Generally it is not necessary to manually specify individual compiler or
linker flags, as CMake defines a number of "build modes" including Debug
and Release modes. To build in a particular mode, add the flag
`-DCMAKE_BUILD_TYPE=Debug` (or `Release`) to the initial invocation.

If you *do* need to manually add flags, use `-DCMAKE_CXX_FLAGS=...` and
`-DCMAKE_EXE_LINKER_FLAGS=...`. This is useful for enabling clang's
sanitizers.

Finally, to enable building universal binaries on macOS, you can pass the
flag `-DCMAKE_OSX_ARCHITECTURES=i386;x86_64`. If you don't supply this flag,
the build will just be for the architecture of your machine.

3) Run the build:
`cmake --build build`
This command tells CMake to invoke the correct tool to run the build in the
`build` directory. You can also use the build back-end directly by invoking
`make`, `ninja`, or opening the generated IDE project as appropriate.


WORKING WITH ECLIPSE
--------------------

Expand Down
31 changes: 19 additions & 12 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,19 +60,21 @@ build_script:
test_script:
- cmd: |
cd regression
sed -i "s/goto-cc\/goto-cc/goto-cc\/goto-cl/" ansi-c/Makefile
sed -i "s/goto-cc\/goto-cc/goto-cc\/goto-cl/" cpp/Makefile
sed -i "s/goto-cc\/goto-cc/goto-cc\/goto-cl/" goto-instrument/chain.sh
sed -i "15s/.*/$goto_cc $name.c/" goto-instrument/chain.sh
sed -i "16i mv $name.exe $name.gb" goto-instrument/chain.sh
sed -i "23s/.*/ $goto_cc ${name}-mod.c/" goto-instrument/chain.sh
sed -i "24i mv ${name}-mod.exe $name-mod.gb" goto-instrument/chain.sh
cat goto-instrument/chain.sh
sed -i "s/goto-cc\/goto-cc/goto-cc\/goto-cl/" goto-instrument-typedef/chain.sh || true
sed -i "12s/.*/$GC $NAME.c --function fun/" goto-instrument-typedef/chain.sh || true
sed -i "13i mv $NAME.exe $NAME.gb" goto-instrument-typedef/chain.sh || true
cat goto-instrument-typedef/chain.sh || true
sed -i "s/goto-cc\/goto-cc/goto-cc\/goto-cl/" goto-cc-cbmc/chain.sh || true
sed -i "11s/.*/$GC $NAME.c/" goto-cc-cbmc/chain.sh || true
sed -i "12i mv $NAME.exe $NAME.gb" goto-cc-cbmc/chain.sh || true
cat goto-cc-cbmc/chain.sh || true
sed -i "s/goto-cc\/goto-cc/goto-cc\/goto-cl/" goto-cc-goto-analyzer/chain.sh || true
sed -i "11s/.*/$gc $name.c/" goto-cc-goto-analyzer/chain.sh || true
sed -i "12i mv $name.exe $name.gb" goto-cc-goto-analyzer/chain.sh || true
cat goto-cc-goto-analyzer/chain.sh || true
sed -i "s/goto-cc\/goto-cc/goto-cc\/goto-cl/" goto-cc-symex/chain.sh || true
sed -i "11s/.*/$gc $name.c/" goto-cc-symex/chain.sh || true
sed -i "12i mv $name.exe $name.gb" goto-cc-symex/chain.sh || true
cat goto-cc-symex/chain.sh || true
rem HACK disable failing tests
rmdir /s /q ansi-c\arch_flags_mcpu_bad
Expand Down Expand Up @@ -111,6 +113,11 @@ test_script:
rmdir /s /q cbmc-java\tableswitch2
rmdir /s /q goto-gcc
rmdir /s /q goto-instrument\slice08
rmdir /s /q symex\va_args_10
rmdir /s /q symex\va_args_2
rmdir /s /q symex\va_args_3
rmdir /s /q symex\va_args_5
rmdir /s /q symex\va_args_6
make test
Expand Down
36 changes: 36 additions & 0 deletions regression/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED true)

set(test_pl_path "${CMAKE_CURRENT_SOURCE_DIR}/test.pl")

macro(add_test_pl_profile name cmdline flag profile)
add_test(
NAME "${name}-${profile}"
COMMAND ${test_pl_path} -c ${cmdline} ${flag}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
set_tests_properties("${name}-${profile}" PROPERTIES
LABELS "${profile}"
)
endmacro(add_test_pl_profile)

macro(add_test_pl_tests name cmdline)
add_test_pl_profile("${name}" "${cmdline}" -C CORE)
add_test_pl_profile("${name}" "${cmdline}" -T THOROUGH)
add_test_pl_profile("${name}" "${cmdline}" -F FUTURE)
add_test_pl_profile("${name}" "${cmdline}" -K KNOWNBUG)
endmacro(add_test_pl_tests)

add_subdirectory(ansi-c)
add_subdirectory(cbmc)
add_subdirectory(cbmc-java)
add_subdirectory(cbmc-java-inheritance)
add_subdirectory(cpp)
add_subdirectory(goto-analyzer)
add_subdirectory(goto-diff)
add_subdirectory(goto-instrument)
add_subdirectory(goto-instrument-typedef)
add_subdirectory(invariants)
add_subdirectory(strings)
add_subdirectory(strings-smoke-tests)
add_subdirectory(test-script)
4 changes: 4 additions & 0 deletions regression/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,17 @@ DIRS = ansi-c \
cbmc-java-inheritance \
cpp \
goto-analyzer \
goto-cc-cbmc \
goto-cc-goto-analyzer \
goto-cc-goto-symex \
goto-diff \
goto-gcc \
goto-instrument \
goto-instrument-typedef \
invariants \
strings \
strings-smoke-tests \
symex \
test-script \
# Empty last line

Expand Down
4 changes: 4 additions & 0 deletions regression/ansi-c/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
add_test_pl_tests(
"ansi-c"
"$<TARGET_FILE:goto-cc>"
)
6 changes: 6 additions & 0 deletions regression/ansi-c/Initializer_cast2/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
int main()
{
int A[(sizeof((int[]){1, 2, 3})==3*sizeof(int))?1:-1];

return 0;
}
7 changes: 7 additions & 0 deletions regression/ansi-c/Initializer_cast2/test.desc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CORE
main.c

^EXIT=0$
^SIGNAL=0$
--
^CONVERSION ERROR$
13 changes: 11 additions & 2 deletions regression/ansi-c/Makefile
Original file line number Diff line number Diff line change
@@ -1,13 +1,22 @@
default: tests.log

include ../../src/config.inc
include ../../src/common

ifeq ($(BUILD_ENV_),MSVC)
exe=../../../src/goto-cc/goto-cl
else
exe=../../../src/goto-cc/goto-cc
endif

test:
@if ! ../test.pl -c ../../../src/goto-cc/goto-cc ; then \
@if ! ../test.pl -c $(exe) ; then \
../failed-tests-printer.pl ; \
exit 1 ; \
fi

tests.log: ../test.pl
@if ! ../test.pl -c ../../../src/goto-cc/goto-cc ; then \
@if ! ../test.pl -c $(exe) ; then \
../failed-tests-printer.pl ; \
exit 1 ; \
fi
Expand Down
Binary file modified regression/ansi-c/arch_flags_mcpu_bad/object.intel
Binary file not shown.
Binary file modified regression/ansi-c/arch_flags_mcpu_good/object.arm
Binary file not shown.
4 changes: 4 additions & 0 deletions regression/ansi-c/arch_flags_mcpu_good/test.desc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ command line:

goto-cc --native-compiler=arm-none-eabi-gcc -mcpu=cortex-a15 -c source.c

On Ubuntu, you can get a suitable compiler using:

sudo apt install gcc-arm-none-eabi

preproc.i is already pre-processed so that it can be linked in without
needing to invoke a pre-processor from a cross-compile toolchain on your
local machine. Linking it together with the ARM object file, while
Expand Down
Binary file modified regression/ansi-c/arch_flags_mthumb_bad/object.intel
Binary file not shown.
Binary file modified regression/ansi-c/arch_flags_mthumb_good/object.arm
Binary file not shown.
4 changes: 4 additions & 0 deletions regression/ansi-c/arch_flags_mthumb_good/test.desc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ line:

goto-cc --native-compiler=arm-none-eabi-gcc -mthumb -c source.c

On Ubuntu, you can get a suitable compiler using:

sudo apt install gcc-arm-none-eabi

preproc.i is already pre-processed so that it can be linked in without
needing to invoke a pre-processor from a cross-compile toolchain on your
local machine. Linking it together with the ARM object file, while
Expand Down
13 changes: 13 additions & 0 deletions regression/ansi-c/array_initialization3/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#define STATIC_ASSERT_sizeof(condition) \
int[(condition) ? 1 : -1]

int A[];
int B[];

int A[1]={sizeof(A)};
int B[1]={sizeof(STATIC_ASSERT_sizeof(sizeof(B)==sizeof(int)))};

int main()
{
return 0;
}
8 changes: 8 additions & 0 deletions regression/ansi-c/array_initialization3/test.desc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
CORE
main.c

^EXIT=0$
^SIGNAL=0$
--
^warning: ignoring
^CONVERSION ERROR$
15 changes: 15 additions & 0 deletions regression/ansi-c/sizeof5/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#define STATIC_ASSERT(condition) \
int some_array##__LINE__[(condition) ? 1 : -1];

struct S
{
int x;
};

int main()
{
struct S s;
__typeof__(*((void *)&s.x)) *_s=&s.x;
STATIC_ASSERT(sizeof(*_s)==1);
return 0;
}
Loading

0 comments on commit 1d3a58a

Please sign in to comment.