Skip to content

Commit

Permalink
Fixes related to review comments
Browse files Browse the repository at this point in the history
- removed range loops
- removed DEPTH_GUARD_BY_DEPTH_RETURN and ERROR_GUARD from CVQualifiers::random_qualifiers
  • Loading branch information
natgla committed Mar 29, 2016
1 parent 97df4f5 commit c8e6b53
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 34 deletions.
38 changes: 6 additions & 32 deletions src/CVQualifiers.cpp
Expand Up @@ -290,7 +290,9 @@ static bool is_volatile_ok_on_one_level(const Type* t)
bool volatile_ok = (t->eType != eStruct && t->eType != eUnion) || (t->has_assign_ops());
// Union with a struct field: we can't make it volatile, or we won't be able to assign to/from that field
if (volatile_ok && (t->eType == eUnion)){
for (const auto& field : t->fields){
for (size_t i = 0; i < t->fields.size(); ++i) {
const Type* field = t->fields[i];

if (field->eType == eStruct){
volatile_ok = false;
break;
Expand Down Expand Up @@ -331,17 +333,8 @@ CVQualifiers::random_qualifiers(const Type* t, Effect::Access access, const CGCo
tmp = t->ptr_type;
while (tmp) {
bool volatile_ok = is_volatile_ok_on_one_level(tmp);
if (volatile_ok){
DEPTH_GUARD_BY_DEPTH_RETURN(2, ret_qfer);
isVolatile = rnd_flipcoin(volatile_prob);
ERROR_GUARD(ret_qfer);
}
else{
DEPTH_GUARD_BY_DEPTH_RETURN(1, ret_qfer);
isVolatile = false;
}
isVolatile = volatile_ok? rnd_flipcoin(volatile_prob): false;
isConst = rnd_flipcoin(const_prob);
ERROR_GUARD(ret_qfer);
if (isVolatile && isConst && !CGOptions::allow_const_volatile()) {
isConst = false;
}
Expand All @@ -356,27 +349,8 @@ CVQualifiers::random_qualifiers(const Type* t, Effect::Access access, const CGCo
bool volatile_ok = effect_context.is_side_effect_free() && is_volatile_ok_on_one_level(t);
bool const_ok = (access != Effect::WRITE);

isVolatile = false;
isConst = false;

if (volatile_ok && const_ok) {
DEPTH_GUARD_BY_DEPTH_RETURN(2, ret_qfer);
isVolatile = rnd_flipcoin(volatile_prob);
ERROR_GUARD(ret_qfer);
isConst = rnd_flipcoin(const_prob);
ERROR_GUARD(ret_qfer);
}
else if (volatile_ok) {
DEPTH_GUARD_BY_DEPTH_RETURN(1, ret_qfer);
isVolatile = rnd_flipcoin(volatile_prob);
ERROR_GUARD(ret_qfer);
}
else if (const_ok) {
DEPTH_GUARD_BY_DEPTH_RETURN(1, ret_qfer);
isConst = rnd_flipcoin(const_prob);
ERROR_GUARD(ret_qfer);
}

isVolatile = volatile_ok ? rnd_flipcoin(volatile_prob) : false;
isConst = const_ok ? rnd_flipcoin(const_prob) : false;
if (isVolatile && isConst && !CGOptions::allow_const_volatile()) {
isConst = false;
}
Expand Down
5 changes: 3 additions & 2 deletions src/Type.cpp
Expand Up @@ -261,8 +261,9 @@ ChooseRandomTypeFilter::get_type()
static bool checkImplicitNontrivialAssignOps(vector<const Type*> fields)
{
if (!CGOptions::lang_cpp()) return false;
for (auto& field : fields){
if (field->has_implicit_nontrivial_assign_ops()){
for (size_t i = 0; i < fields.size(); ++i) {
const Type* field = fields[i];
if (field->has_implicit_nontrivial_assign_ops()){
assert((field->eType == eStruct) || (field->eType == eUnion));
return true;
}
Expand Down

0 comments on commit c8e6b53

Please sign in to comment.