Hi Richard, Any suggestion on this?
Thanks, Manman > On Sep 7, 2016, at 12:40 PM, Manman <m...@apple.com> wrote: > > Hi Richard, > > We noticed a regression for this simple testing case: > rm -rf tmp3 > clang -cc1 -fimplicit-module-maps -x objective-c -fmodules > -fmodules-cache-path=tmp3 -emit-obj standalone.c -I Inputs/ > —> > standalone.c:4:6: error: variable has incomplete type 'void' > void foo __P(()); > ^ > standalone.c:4:9: error: expected ';' after top level declarator > void foo __P(()); > ^ > ; > 2 errors generated. > clang -cc1 -fimplicit-module-maps -x objective-c -fmodules > -fmodules-cache-path=tmp3 -emit-obj standalone.c -I Inputs/ > —> This runs fine. > > cat standalone.c > #import "C.h" > #import "A.h" > > void foo __P(()); > > cat Inputs/module.map > module X { > header "A.h" > export * > } > // Y imports X, it also uses “__P” as a parameter name > module Y { > header "B.h" > export * > } > // Z imports X and Y > module Z { > header "C.h” > } > > cat Inputs/A.h > #define __P(protos) () > > cat Inputs/B.h > #import "A.h" > #import "B2.h” > > cat Inputs/B2.h > void test(int __P) { > } > > cat Inputs/C.h > #import "A.h" > #import “B.h” > > r259901 causes the compiler to write out identifier “__P” without the macro > information for module Y, which seems to be incorrect. Any suggestion on how > to fix this? > Why the 2nd run works is related to global index. Global Index only considers > interesting identifiers, so it skips module Y when calling > ModuleManager::visit. > > Cheers, > Manman > _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits