]> granicus.if.org Git - clang/commit
[PCH/Modules] Change how macro [re]definitions are de/serialized.
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 16 Jan 2013 16:19:38 +0000 (16:19 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 16 Jan 2013 16:19:38 +0000 (16:19 +0000)
commit7f69b1ab4f63ded511dddd7fb7e1cd8860757016
tree79baf682b230d0b318d0b6942f4b016ed13853b3
parent48bd7b72b8911147ec9bdeaa8ebb211543fd23a9
[PCH/Modules] Change how macro [re]definitions are de/serialized.

Previously we would serialize the macro redefinitions as a list, part of
the identifier, and try to chain them together across modules individually
without having the info that they were already chained at definition time.

Change this by serializing the macro redefinition chain and then try
to synthesize the chain parts across modules. This allows us to correctly
pinpoint when 2 different definitions are ambiguous because they came from
unrelated modules.

Fixes bogus "ambiguous expansion of macro" warning when a macro in a PCH
is redefined without undef'ing it first.

rdar://13016031

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172620 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Lex/MacroInfo.h
include/clang/Lex/Preprocessor.h
include/clang/Serialization/ASTReader.h
lib/Lex/PPMacroExpansion.cpp
lib/Serialization/ASTReader.cpp
lib/Serialization/ASTWriter.cpp
test/PCH/macro-redef.c [new file with mode: 0644]