mizvekov wrote:

> Great see commit 
> [`af63956`](https://github.com/llvm/llvm-project/pull/148914/commits/af6395691ad98c3763d89e4794f353e77f0e3d9b).
>  I just stole the pattern from the array canonicalization code. Added tests 
> too.

Great, there are other places that need to be updated to handle this correctly 
as well.

In ASTContext.cpp, see `getCommonArrayElementType`, and how it's used.
Your `OverflowBehaviourType` is going to need the same kind of handling.

That is a generic function which expects the type node to have a 
`getElementType` to be the accessor to the underlying type. Unfortunately in 
yours it's called `getUnderlyingType`.

My suggestion is to split the meat of that function into a non-templated one 
which just takes the underlying qualtypes directly. Then rewrite 
getCommonArrayElementType to use that, and make your OverflowBehaviourType use 
that as well.

Then, in ASTContext::getCommonSugaredType
change this line:
```C++
bool KeepCommonQualifiers = Unqualified || isa<ArrayType>(SX.Ty);
```

To:
```C++
bool KeepCommonQualifiers = Unqualified || isa<ArrayType, 
OverflowBehaviourType>(SX.Ty);
```

Then in `clang/test/SemaCXX/sugar-common-types.cpp`, look for the tests grouped 
in namespace 'arrays', you will want to create the same tests cases for your 
OverflowBehaviourType.

https://github.com/llvm/llvm-project/pull/148914
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to