Skip to content

build with llvm #6

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

build with llvm #6

wants to merge 2 commits into from

Conversation

karasikov
Copy link

some minor changes to make it compilable with clang

@bingmann bingmann force-pushed the master branch 4 times, most recently from 4ca77c7 to fb05f21 Compare November 4, 2019 14:46
@bingmann
Copy link
Owner

bingmann commented Nov 4, 2019

Well, does not build on travis.

@bingmann bingmann force-pushed the master branch 8 times, most recently from dbd6db2 to fb8a0d8 Compare November 4, 2019 16:44
This works only for old compilers...
@karasikov
Copy link
Author

Hi Timo,

I pushed a quick fix. However, it will not work when compiled with more recent compilers that do not have experimental::filesystem.
So, ideally, one has to consider that case to make this portable.

@bingmann bingmann force-pushed the master branch 6 times, most recently from a92734e to 72365f5 Compare November 5, 2019 20:58
leoisl pushed a commit to leoisl/cobs that referenced this pull request Jul 1, 2022
…ndices (bingmann#6)

Previously when combining multiple classic indices into a single classic
index, the contents of source indices are read in as `char`. During the
interleaving process, depending on the current position of the destination
index, both left and right shifts on the next char could be performed.

However, there are a few undefined behaviours that could affect the results
depending on the platform:
1. The signedness of a `char` is an undefined behaviour. Hence when
bit shifting, the usual arithmetic conversion performed on the char is
undefined. The char could be promoted to either signed int or unsigned
int.
2. If the char is treated as signed int, the bit shifting (both left and
right) is also undefined in pre-c++20 standards. The behaviour is platform
dependent.

This change fixes the issue by declare the contents read from source
indices as `unsigned char`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants